推荐一款好用的Java分布式任务调度框架!

简介: 推荐一款好用的Java分布式任务调度框架!

XXL-Job 是一个分布式任务调度框架,由大众点评内部员工xxl使用Java语言开发,以轻量、易扩展、高性能、高可靠为设计目标。


该框架与 Quartz、Elastic-Job 等调度框架相比有着更加便捷易用和高效的特点。


项目地址:https://github.com/xuxueli/xxl-job


什么是任务调度?


任务调度 是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。


以下业务场景的解决方案就是任务调度。

  • 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。
  • 某银行系统需要在信用卡到期还款日的前三天进行短信提醒。
  • 某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。
  • 12306会根据车次的不同,设置某几个时间点进行分批放票。


实现任务调度的方案有哪些?


  • 多线程方式
  • 各语言提供的任务调度API,比如:ScheduledExecutor
  • 任务调度框架,例如Quartz、elastic-job、Cron等 ,都是功能强大的任务调度框架,可以满足更多更复杂的调度需求


XXL-Job介绍


xxl-job 中的任务分为两种,一种是定时任务,另一种是任务执行器。

定时任务的执行方式可以是corn表达式、固定频率或者固定延迟,而任务执行器是用来处理实际业务逻辑的


XXL-Job架构:任务调度中心、执行器和客户端。任务调度中心是用来管理任务的,执行器是用来执行任务的,而客户端则是连接任务执行中心和执行器的桥梁。其中,任务调度中心和执行器都可以进行集群部署。


XXL-Job框架的特点包括:


  • 核心组件:XXL-Job的核心组件包括任务调度中心、调度执行器和客户端,这些组件实现了多任务调度、分布式任务处理、任务路、故障恢复、任务状态监控和报警等功能。
  • 容错性与高可靠性:XXL-Job框架实现了任务调度在调度心和执行器之间的分布式控制,确保了任务调度在异常情况下的性能与稳定性。
  • 灵活性和扩展性:XXL-Job框架允许用户定制任务调度策略、任务执行器、任务日志处理等方,支持通过SPI机制扩展自定义的任务。此外,框架在设计上充分考虑了可扩展和适配性,可以满足各种复杂业务场景的需求。


主要特性详情


简单灵活

  • 提供 Web 页面对任务进行管理,管理系统支持用户管理、权限控制;
  • 支持容器部署;
  • 支持通过通用HTTP提供跨平台任务调度;


丰富的任务管理功能

  • 支持页面对任务CRUD操作;
  • 支持在页面编写脚本任务、命令行任务、Java代码任务并执行;
  • 支持任务级联编排,父任务执行结束后触发子任务执行;
  • 支持设置指定任务执行节点路由策略,包括轮询、随机、广播、故障转移、忙碌转移等;
  • 支持Cron方式、任务依赖、调度中心API接口方式触发任务执行


高性能

  • 任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰;


高可用

  • 任务调度中心、任务执行节点均 集群部署,支持动态扩展、故障转移
  • 支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行
  • 支持任务超时控制、失败重试配置
  • 支持任务处理阻塞策略:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行、抛弃、覆盖策略


易于监控运维

  • 支持设置任务失败邮件告警,预留接口支持短信、钉钉告警;
  • 支持实时查看任务执行运行数据统计图表、任务进度监控数据、任务完整执行日志;


在应用XXL-Job框架时,需要配置调度中心和执行器的信息。下是配置示例:


调度中心配置文件:

### xxl-job, access token
xxl.job.accessToken=
### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### xxl-job, log retention days
xxl.job.logretentiondays=30

执行maven打包命令:package ,打完包以后,从项目的target目录中找到jar包拷贝到不带空格和中文的目录下


执行以下命令,启动项目

java -jar xxl-job-admin-2.2.0-SNAPSHOT.jar

调度中心访问地址:http://localhost:8888/xxl-job-admin (该地址执行器将会使用到,作为回调地址)


总结


总的来说,XXL-Job是一个优秀的分布式任务调度框架,具有轻量易用、高性能、高可靠和扩展性等点。在实际应用中,可以通过XXL-Job实现对复杂业务逻辑的可靠调度和处理。

相关文章
|
1天前
|
SQL 缓存 Java
Java一分钟之-Hibernate:ORM框架实践
【5月更文挑战第15天】Hibernate是Java的ORM框架,简化数据库操作。本文列举并解决了一些常见问题: 1. 配置SessionFactory,检查数据库连接和JDBC驱动。 2. 实体类需标记主键,属性映射应匹配数据库列。 3. 使用事务管理Session,记得关闭。 4. CRUD操作时注意对象状态和查询结果转换。 5. 使用正确HQL语法,防止SQL注入。 6. 根据需求配置缓存。 7. 懒加载需在事务内处理,避免`LazyInitializationException`。理解和避免这些问题能提升开发效率。
18 0
|
1天前
|
Java 数据安全/隐私保护 Spring
Java 中 Spring Boot 框架下的 Email 开发
Java 中 Spring Boot 框架下的 Email 开发
18 2
|
1天前
|
XML Java 数据库连接
Java一分钟之MyBatis:持久层框架基础
【5月更文挑战第15天】MyBatis是Java的轻量级持久层框架,它分离SQL和Java代码,提供灵活的数据库操作。常见问题包括:XML配置文件未加载、忘记关闭SqlSession、接口方法与XML映射不一致、占位符使用错误、未配置ResultMap和事务管理不当。解决这些问题的关键在于正确配置映射文件、管理SqlSession、避免SQL注入、定义ResultMap以及确保事务边界。遵循最佳实践可优化MyBatis使用体验。
11 2
Java一分钟之MyBatis:持久层框架基础
|
1天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
11 1
|
1天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
6 0
|
1天前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
12 1
|
1天前
|
分布式计算 并行计算 Java
【分布式计算框架】 MapReduce编程初级实践
【分布式计算框架】 MapReduce编程初级实践
9 2
|
1天前
|
分布式计算 数据可视化 Hadoop
【分布式计算框架】HDFS常用操作及编程实践
【分布式计算框架】HDFS常用操作及编程实践
4 1
|
1天前
|
分布式计算 Ubuntu Hadoop
【分布式计算框架】hadoop全分布式及高可用搭建
【分布式计算框架】hadoop全分布式及高可用搭建
7 1
|
1天前
|
存储 分布式计算 Hadoop
【分布式计算框架】Hadoop伪分布式安装
【分布式计算框架】Hadoop伪分布式安装
7 2
http://www.vxiaotou.com