任务调度之xxl-job
时间:2023-02-02 14:00:00
前言
由于公司最近的系统升级,准备更换Quartz使用xxl-job,最近学习了一下xxl-job,记录下笔记
我们知道Quartz是由JobDetail(任务)、Trigger(执行器)和Scheduler(调度器)组成,xxl-job其实就是将Quartz解耦单机代码,拆分成多个模块
为什么使用xxl-job放弃Quartz?
- 调度逻辑Scheduler随着调度任务的逐渐增加,调度任务的逻辑逐渐增加,调度系统的整体性能将受到影响
- Quartz集群节点看到负载结果是随机的,谁抓住数据库锁谁执行。也许一台机器已经被抓住了,另一台机器的性能无法发挥作用
- Quartz没有管理界面,需要自己开发
- Quartz日志记录和监控不完善
xxl-job优势
- 性能提升,拆成多个服务,肯定比单机快。
- 处理加班、失败和故障转移
- 提供操作界面、详细日志和消息通知
快速上手
不要写使用,百度有很多
xxl-job原理
xxl-job分为两种服务
1. 调度中心
调度中心是任务指挥官,指定job执行任务
负责管理调度信息,按照调度配置发出调度请求 不承担业务代码。
同时,调度系统的性能不再局限于任务模块;
调度中心支持可视化、简单动态的管理调度信息 包括新建、更新、删除任务 GLUE所有上述操作,如开发和任务报警,都将实时生效 支持监控调度结果和执行日志,支持执行器 Failover
1.1 主要功能
- 运行报表
- 任务管理
- 调度日志
- 执行器管理
- 用户管理
1.2 为确保集群部署的可用性,需要满足条件
- 连接到同一个数据库
- 集群机时钟保持一致
2. 执行器
在业务代码服务中运行实际上是调度中心调用业务服务
负责接收调度请求和执行任务逻辑。任务模块专注于任务的执行,开发和维护更简单和高效;接收调度中心的执行请求、终止请求和日志请求。
从整体来看,xxl-job 架构依赖性小,功能强大,简单但不简单,部署方便,使用方便。
2.1 主要功能
- 负责任务的具体执行,分配线程执行任务
- 只有注册到调度中心,才能被调度中心调度
xxl-job原理分析
执行器流程概述
执行器启动时,主动到调度中心注册,定期发送心跳,保持续约;执行器关闭时,主动通知调度中心离线
调度器流程概述
- 探索执行器
- 清除超时执行器
- 在集群模式下,同时只有一个调度器调度任务,通过数据库排他锁
- 获得任务后,检查任务并调度任务