xxl-Job简介
针对分布式任务调度的需求,市场上出现了很多的产品:
1) TBSchedule:淘宝推出的一款非常优秀的高性能分布式调度框架,目前被应用于阿里、京东、支付宝、国美等很多互联网企业的流程调度系统中。但是已经多年未更新,文档缺失严重,缺少维护。
2) XXL-Job:大众点评的分布式任务调度平台,是一个轻量级分布式任务调度平台, 其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
3)Elastic-job:当当网借鉴TBSchedule并基于quartz 二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,具有任务高可用以及分片功能。
4)Saturn: 唯品会开源的一个分布式任务调度平台,基于Elastic-job,可以全域统一配置,统一监
控,具有任务高可用以及分片功能。
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
源码地址:https://gitee.com/xuxueli0323/xxl-job
文档地址:https://www.xuxueli.com/xxl-job/
xxl-Job特性
简单灵活
提供Web页面对任务进行管理,管理系统支持用户管理、权限控制;
支持容器部署;
支持通过通用HTTP提供跨平台任务调度;
丰富的任务管理功能
支持页面对任务CRUD操作;
支持在页面编写脚本任务、命令行任务、Java代码任务并执行;
支持任务级联编排,父任务执行结束后触发子任务执行;
支持设置指定任务执行节点路由策略,包括轮询、随机、广播、故障转移、忙碌转移等;
支持Cron方式、任务依赖、调度中心API接口方式触发任务执行
高性能
任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰;
高可用
任务调度中心、任务执行节点均 集群部署,支持动态扩展、故障转移
支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行
支持任务超时控制、失败重试配置
支持任务处理阻塞策略:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行、抛弃、覆盖策略
易于监控运维
支持设置任务失败邮件告警,预留接口支持短信、钉钉告警;
支持实时查看任务执行运行数据统计图表、任务进度监控数据、任务完整执行日志;
XXL-Job-环境搭建
调度中心环境要求
- Maven3+
- Jdk1.8+
- Mysql5.7+
源码仓库地址
| 源码仓库地址 | Release Download |
| :----------------------------------- | :-------------------------------------------------------- |
| https://github.com/xuxueli/xxl-job | [Download](http://gitee.com/xuxueli0323/xxl-job/releases) |
| http://gitee.com/xuxueli0323/xxl-job | [Download](http://gitee.com/xuxueli0323/xxl-job/releases) |
XXL-Job是一款开源的分布式任务调度平台,可以方便地进行任务调度和管理。
XXL-Job的配置说明:
数据库配置:在application.properties文件中配置数据库相关信息,包括数据库URL、用户名、密码等。
注册中心配置:在application.properties文件中配置注册中心相关信息,包括注册中心地址、端口等。
执行器配置:在application.properties文件中配置执行器相关信息,包括执行器名称、日志路径、线程池等。
调度中心配置:在application.properties文件中配置调度中心相关信息,包括调度中心地址、端口等。
鉴权配置:可以通过配置自定义的AccessToken,对调度中心进行鉴权。
报警配置:可以配置报警邮件的相关信息,包括SMTP服务器、用户名、密码等。
执行器日志配置:可以配置执行器日志的存储方式,支持本地文件存储和数据库存储两种方式。
以上是XXL-Job的一些常用配置,具体的配置内容可以根据实际需求进行调整。在配置完成后,可以启动XXL-Job,并在调度中心上配置和管理任务。
XXL-Job任务实现案例:
在XXL-Job的执行器项目中创建一个Java类,实现XxlJobHandler接口,并重写execute方法。
@Component
public class MyJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
// 业务逻辑处理
System.out.println("Hello, XXL-Job!");
return ReturnT.SUCCESS;
}
}
在调度中心上创建一个任务,指定执行器为上述创建的执行器,设置任务的名称、触发方式等。
在调度中心上配置调度策略,如按时、按日、按周等。
启动XXL-Job项目,并在调度中心上查看任务执行情况和日志。
这样,当设置的调度策略触发时,XXL-Job将会调用MyJobHandler类的execute方法执行任务,并在控制台打印"Hello, XXL-Job!"。