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实现对复杂业务逻辑的可靠调度和处理。