介绍⼀种很好⽤的任务调度平台
1 总体设计
分布式任务调度平台是什么
XXL-JOB是⼀个轻量级分布式任务调度平台,和quartz相似,但是XXL-JOB将调度中⼼与执⾏器解耦,弥补了quartz的不⾜(使⽤API⽅式操作任务,不⼈性化;系统侵⼊性严重等)
其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
⽂档我这边可以给。
源码⽬录介绍
/xxl-job-admin :调度中⼼,项⽬源码
/
xxl-job-core :公共Jar依赖
/xxl-job-executor-samples :执⾏器,Sample⽰例项⽬(⼤家可以在该项⽬上进⾏开发,也可以将现有项⽬改造-⽣成
“调度数据库”配置
XXL-JOB调度模块基于Quartz集实现,其“调度数据库”是在Quartz的11张集mysql表基础上扩展⽽成。
XXL-JOB⾸先定制了Quartz原⽣表结构前缀(XXL_JOB_QRTZ_)。我们代码配置和源码配置⼀样
在此基础上新增了⼏张张扩展表。正常情况下总共16张表
所有表(若想详细了解可以查看⽂档):
架构设计
设计思想
“调度中⼼”负责发起调度请求。
“执⾏器”负责接收调度请求并执⾏对应的JobHandler 中业务逻辑。
系统组成
调度模块(调度中⼼)
负责管理调度信息,按照调度配置发出调度请求,⾃⾝不承担业务代码。调度系统与任务解耦,提⾼了系统可⽤性和稳定性,同时调度系统性能不再受限于任务模块;⽀持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE 开发和任务报警等,所有上述操作都会实时⽣效,同时⽀持监控调度结果以及执⾏⽇志,⽀持执⾏器Failover 。- XXL_JOB_QRTZ_TRIGGER_GROUP :执⾏器信息表,维护任务执⾏器信息;
- XXL_JOB_QRTZ_TRIGGER_REGISTRY :执⾏器注册表,维护在线的执⾏器和调度中⼼机器地址信息;
- XXL_JOB_QRTZ_TRIGGER_INFO :调度扩展信息表: ⽤于保存XXL-JOB 调度任务的扩展信息,如任务分组、任务名、机器地址、执⾏器、执⾏⼊参和报警邮件等等;
- XXL_JOB_QRTZ_TRIGGER_LOG :调度⽇志表: ⽤于保存XXL-JOB 任务调度的历史信息,如调度结果、执⾏结果、调度⼊参、调度机器和执⾏器等等;
- XXL_JOB_QRTZ_TRIGGER_LOGGLUE :任务GLUE ⽇志:⽤于保存GLUE 更新历史,⽤于⽀持GL
公司介绍源码
UE 的版本回溯功能;
执⾏模块(执⾏器)
负责接收调度请求并执⾏任务逻辑。任务模块专注于任务的执⾏等操作,开发和维护更加简单和⾼效;
接收“调度中⼼”的执⾏请求、终⽌请求和⽇志请求等。
主要分为GLUE模式(java)、BEAN模式,查看(任务详解)
GLUE模式(java)
任务以源码⽅式维护在调度中⼼,⽀持通过Web IDE在线更新,实时编译和⽣效,因此不需要指定JobHandler。
BEAN模式:
需要继承IJobHandler类开发,在源码到模板,根据模板开发。并在调度中⼼中,新建调度任务
⼀次完整的任务调度通讯流程
1、“调度中⼼”向“执⾏器”发送http调度请求: “执⾏器”中接收请求的服务,实际上是⼀台内嵌jetty服务器,默认端⼝9999;
2、“执⾏器”执⾏任务逻辑;
3、“执⾏器”http回调“调度中⼼”调度结果: “调度中⼼”中接收回调的服务,是针对执⾏器开放⼀套API服务;
任务详解
配置属性详细说明:
执⾏器:任务的绑定的执⾏器,任务触发调度时将会⾃动发现注册成功的执⾏器, 实现任务⾃动发现功能;
路由策略:当执⾏器集部署时,提供丰富的路由策略,包括:
FIRST(第⼀个):固定选择第⼀个机器;
LAST(最后⼀个):固定选择最后⼀个机器;
ROUND(轮询):;
RANDOM(随机):随机选择在线的机器;
等等
运⾏模式:
BEAN模式:任务以JobHandler⽅式维护在执⾏器端;需要结合 "JobHandler" 属性匹配执⾏器中任务;
GLUE模式(Java):任务以源码⽅式维护在调度中⼼;该模式的任务实际上是⼀段继承⾃IJobHandler的Java类代码并 "groovy" 源码⽅式维护,它在执⾏器项⽬中运⾏,可使⽤@Resource/@Autowire注⼊执⾏器⾥中的其他服务;是⼀段java代码
JobHandler:运⾏模式为 "BEAN模式" 时⽣效,对应执⾏器中新开发的JobHandler类“@JobHandler”注解⾃定义的value值;
阻塞处理策略:调度过于密集执⾏器来不及处理时的处理策略;
⼦任务:每个任务都拥有⼀个唯⼀的任务ID(任务ID可以从任务列表获取),当本任务执⾏结束并且执⾏成功时,将会触发⼦任务ID所对应的任务的⼀次主动调度。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。