简介
针对分布式任务调度的需求,市场上出现了很多的产品:
1)TBSchedule:淘宝推出的一款非常优秀的高性能分布式调度框架,目前被应用于阿里,京东,支付宝,国美等很多互联网企业的流程调度系统中。但是已经多年未更新,文档缺失严重,缺少维护。
2)xxl-job:大众点评的分布式任务调度平台,是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
3) Elastic-job:当当网借鉴TBSchedule并基于quartz二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,具有任务高可用以及分片功能。
4)Saturn:唯品会开源的一个分布式任务调度平台,基于Elastic-job,可以全域统一监控,具有任务高可用以及分片功能。
xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速,学习简单,轻最级,易扩展。现已开放源代码,并接入多家公司线上产品线,开箱即用。
源码地址
文档地址
特性
- 简单灵活
提供web页面对任务进行管理,管理系统支持用户管理,权限控制;
支持容器部署;
支持通过通用http提供跨平台任务调度; - 丰富的任务管理功能
支持页面对任务crud操作;
支持在页面编写脚本任务,命令行任务,java代码任务并执行;
支持任务级联编排,父任务执行结束后触发子任务执行;
支持设置指定任务执行节点路由策略,包括轮询,随机,广播,故障转移,忙碌转移等;
支持cron方式,任务依赖,调度中心api接口方式触发任务执行 - 高性能
任务调度流程全异步化设计实现,如异步调度,异步运行,异步回调等,有效对密集调度进行流行削峰; - 高可用
任务调度中心,任务执行节点均集群部署,支持动态扩展,故障转移
支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行
支持任务超时控制,失败重试配置
支持任务处理阻塞策路:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行,抛弃,覆盖策略 - 易于监控运维
支持设置任务失败邮件告警,预留接口支持短信,钉钉告警;
支持实时查看任务执行运行数据统计图表,任务进度监控数据,任务完整执行日志;
快速入门
- 调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。
- 任务执行器:负责接收调度请求并执行任务逻辑
- 任务:专注于任务的处理。
- 调度中心会发出调度请求,任务执行副接收到请求之后会去执行任务,任务则专注于任务业务的处理。
环境搭建
调度中心环境要求
- Maven 3+
- jdk1.8+
- MySQL 5.7+
源码仓库地址
初始化调度数据库
执行这个sql文件
建完后的表:
表解释:
- xxl_job_lock:任务调度锁表;
- xxl_job_group:执行器信息表,维护任务执行器信息;
- xxl_job_info:调度扩展信息表:用于保存xxl-job调度任务的扩展信息,如任务分组,任务名,
- 器地址,执行器,执行入参和报警邮件等等;
- xxl_job_log:调度日志表:用于保存xxl-job任务调度的历史信息,如调度结果,调度机器和执行器等等;
- xxl-job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
- xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
- xxl_job_user:系统用户表;
调度中心支持集群部署,集群情况下各节点务必连接同一个mysdl实例;
如果mysql做主从,调度中心集群节点务必强制走主库;
编译源码
解压源码,按照Maven格式导入IDE,使用Maven编译即可。
修改配置为自己的:admin项目application.properties
启动admin项目,如果出现报错,则解决对应的报错即可。
登录xxl