为了支撑运营相关工作,降低业务操作风险,提升生产操作质量,急需建设 统一的调度系统,实现任务集中管理,处理进度可视、客观、可控、可 追溯,形成处理信息资源的有效管控。 ![](https://img.kancloud.cn/62/8f/628f093ab91c9f7c1e6f05f61ab45078_279x232.png) 框架集成的xxl-job版本很旧,请拉取最新[xxl-job](https://gitee.com/xuxueli0323/xxl-job) 版本。 ## XXL-JOB框架介绍 ![](https://img.kancloud.cn/a6/c3/a6c32300d0a478957dbc5f537658c4e2_1032x487.png) 整个 XXL-JOB 系统,由调度中心和执行器两个角色组成,分别处于不同的进程中。 1.**调度中心** 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。 调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除, GLUE 开发和任务报警等,所有上述操作都会实时生效。 支持监控调度结果以及执行日志,支持执行器 Failover 。 2.**执行器** 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效。 接收“调度中心”的执行请求、终止请求和日志请求等。 一般来说,XXL-JOB 执行器可以内嵌到应用服务里。例如说,一个提供 Restful API 的 Spring Boot 项目中,引入xxl-job-core依赖,同时也作为一个 XXL-JOB 执行器。本质上,每次 Restful API 是请求任务,而每次任务调度是定时任务。 ## XXL-JOB 表结构 xxl\_job\_lock:任务调度锁表; xxl\_job\_group:执行器信息表,维护任务执行器信息; xxl\_job\_info:调度扩展信息表: 用于保存 XXL-JOB 调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等; xxl\_job\_log:调度日志表: 用于保存 XXL-JOB 任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等; xxl\_job\_log\_report:调度日志报表:用户存储 XXL-JOB 任务调度日志的报表,调度中心报表功能页面会用到; xxl\_job\_logglue:任务GLUE日志:用于保存 GLUE 更新历史,用于支持 GLUE 的版本回溯功能; xxl\_job\_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息; ## XXL-JOB 核心流程 ![](https://img.kancloud.cn/47/1a/471a0d140e6c552bcb3515b3bc83071e_1179x660.png) ## XXL-JOB 调度策略 ![](https://img.kancloud.cn/7e/35/7e350d40adca9dde17cf7522278f75e8_1326x623.png) 1.任务中心异常,执行器异常(服务升级重启),任务执行调度(可以做执行器ha,保证任务正常执行)。 ![](https://img.kancloud.cn/61/17/6117275a94255c505ec31951f17b7de5_1320x669.png) 2.任务中心正常,执行器正常,任务调度成功,此时执行器升级等原因挂掉, 任务执行失败,任务中心会终止任务执行。 ![](https://img.kancloud.cn/9c/f4/9cf4117a7a52426ed4ac5f7a4c7cdf02_1312x490.png) ![](https://img.kancloud.cn/e6/e8/e6e81e940b512c75fa59a88b6a0f6a8d_1318x656.png) 3.任务中心正常,执行器正常,任务调度成功,此时任务中心挂掉,任务调度成功,重启任务中心,恢复心跳后任务重新执行。 ![](https://img.kancloud.cn/43/32/43322a97ba8b6824294574773499078b_1319x406.png) 4.执行器正常,任务中心异常,任务调度异常,[http://127.0.0.1:8080/xxl-job-admin/joblog](http://127.0.0.1:8080/xxl-job-admin/joblog) 页面无法打开,执行器无法发送心跳,会删除xxl\_job\_group中的执行器地址(可做任务中心,保证客户端维持正常心跳)。 5.任务中心正常,执行器正常,任务调度成功,中断任务, 正在运行的任务依旧执行。