前言
由于公司最近的系统升级,准备更换Quartz使用xxl-job,最近学习了一下xxl-job,记录下笔记
我们知道Quartz是由JobDetail(任务)、Trigger(执行器)和Scheduler(调度器)组成,xxl-job其实就是将Quartz解耦单机代码,拆分成多个模块
为什么使用xxl-job放弃Quartz?
- 调度逻辑Scheduler随着调度任务的逐渐增加,调度任务的逻辑逐渐增加,调度系统的整体性能将受到影响
- Quartz集群节点看到负载结果是随机的,谁抓住数据库锁谁执行。也许一台机器已经被抓住了,另一台机器的性能无法发挥作用
- Quartz没有管理界面,需要自己开发
- Quartz日志记录和监控不完善
xxl-job优势
- 性能提升,拆成多个服务,肯定比单机快。
- 处理加班、失败和故障转移
- 提供操作界面、详细日志和消息通知
快速上手
不要写使用,百度有很多
xxl-job原理
1. 调度中心
1.1 主要功能
- 运行报表
- 任务管理
- 调度日志
- 执行器管理
- 用户管理
1.2 为确保集群部署的可用性,需要满足条件
- 连接到同一个数据库
- 集群机时钟保持一致
2. 执行器
2.1 主要功能
- 负责任务的具体执行,分配线程执行任务
- 只有注册到调度中心,才能被调度中心调度
xxl-job原理分析
执行器流程概述
执行器启动时,主动到调度中心注册,定期发送心跳,保持续约;执行器关闭时,主动通知调度中心离线
调度器流程概述
- 探索执行器
- 清除超时执行器
- 在集群模式下,同时只有一个调度器调度任务,通过数据库排他锁
- 获得任务后,检查任务并调度任务