XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发速度快、学习方便、轻量级、易于扩展。现在,源代码已经打开并连接到许多公司的在线产品线,随时可以开箱使用。
[更新描述]发行说明。
1.【新增】调度到期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿、触发一次等。
2.【新增】触发策略:除常规Cron、API、父子任务触发方式外,新增提供‘固定间隔触发、(固定延迟触发,在实验中)’等新的触发方式;
3.【新增】新增任务助手工具‘XxlJobHelper’:提供统一的任务助手能力,包括:任务上下文信息维护和获取(任务参数、任务ID、切片参数)、日志输出、任务结果设置等。
3.1.已放弃的“ShardingUtil”组件:请使用“xxljobhelper . getshardingindex()/getshardtotal();”获取切片参数;
3.2.已放弃的“XxlJobLogger”组件:使用“XxlJobHelper.log”进行日志输出;
4.[优化]任务核心类“IJobHandler”的“执行”方法取消了访问参数的设计。用“XxlJobHelper.getJobParam”代替方法输入获取任务参数,用“xxljobhelper.handlesuccess/handlefail'”代替方法输入设置任务结果。示例代码如下。
@XxlJob('demoJobHandler ')
public void execute(){ 0
string param=xxljobhelper . getjobparam();//获取参数。
xxjobhelper . handlesuccess();//设置任务结果。
}
5.【优化】cron编辑器增强:当Cron编辑器修改Cron时,可以实时查看最新的运行时间;
6.【优化】执行器示例项目标准化安排;
7.【优化】重构任务调度生命周期:调度、触发、处理、回调、完成;
8.【优化】执行器注册组件优化:将注册逻辑调整为异步模式,提高注册性能;
9.【优化】执行器认证验证:执行器启动时主动验证accessToken,若为空则主动Warn(有计划的安全增强:动态生成、动态启动和停止AccessToken等。).
10.【优化】邮箱告警配置优化:拆分‘spring . mail . from’和‘spring . mail . username’属性,更灵活地支持一些无密码邮箱服务;
11.【优化】很多项目都依赖于升级到更新稳定的版本,比如netty、groovy、spring、springboot、mybatis等。
12.【优化】UI组件常规升级,提高组件稳定性;
13.【优化】调度中心页面交互优化:取消用户管理模块密码栏;自动完成取消的许多表达式;执行机构管理模块XSS拦截验证等。
14.【优化】调度中心任务状态检测的慢SQL问题优化;
15.[修复] GLUE-Java模式任务,init/destroy无法执行问题修复;
16.【修复】cron编辑器问题修复:修复小概率下修改单个Cron字段时其他字段被重置的问题;
17.【修复】常规HTTP任务处理程序(httpJobHandler)优化:修复“setDoOutput(true)”导致任务请求GetMethod无效的问题;
18.【修复】优化执行器Commandhandler的示例任务,修复极端情况下的脚本进程挂起问题;
19.【修复】调度通信组件优化,修复RestFul模式下调用DotNet版本执行器时的心跳检测失败;
20.【修复】调度中心远程对乱码日志查询进行修复;
21.【修复】优化调度中心组件的加载顺序,修复极端情况下初始调度组件慢导致的调度失败问题;
22.【修复】执行器注册线程优化,修复极端情况下初始化失败导致的NPE问题;
23.【修复】调度线程连接池优化,修复连接有效性检查超时问题;
24.【修复】优化了执行器注册表字段,解决了执行器注册节点过多导致注册信息存储更新失败的问题;
25.【修复】优化轮换训练的路由策略,以小概率修复并发问题;
26.【修复】页面重定向跳转后,https变成http问题修复;
27.【修复】执行器对日志进行清理优化,小概率修复空日志文件导致的异常清理问题;
[软件亮点] 1。简单性:支持通过网页对任务进行CRUD操作,操作简单,一分钟即可启动;
2.动态:支持任务状态的动态修改、任务的启动/停止、运行任务的终止,即时生效;
3.调度中心HA(中心型):调度采用中心化设计,“调度中心”自行开发调度组件,支持集群部署,可以保证调度中心的HA;
4.执行器HA(分布式):任务是分布式的,任务‘执行器’支持集群部署,可以保证任务执行HA;
5.注册中心:的执行器会定期自动注册任务,调度中心会自动发现注册的任务并触发其执行。同时,也支持手动输入执行器地址。
6.灵活的能力扩张和收缩:一旦新的执行机构机器上线或下线,任务将在下一次调度中重新分配;
7.路由策略:执行器集群在部署时提供丰富的路由策略,包括:first、last、polling、random、consistent HASH、最少使用、最近未使用、failover、busy transfer等。
8.故障转移:当任务路由策略为“故障转移”时,如果致动器集群中的一台机器出现故障,它将自动故障转移到正常的致动器以发送调度请求。
9.阻塞处理策略:执行器忙到无法处理时的处理策略,包括:单机串行(默认)、丢弃后续调度、覆盖之前的调度;
10.任务超时控制:支持自定义任务超时,任务超时运行时任务会主动中断;
11.任务失败重试:支持用户定义的任务失败重试次数。当任务失败时,它会根据预设的失败重试次数主动重试。其中,分片任务支持分片粒度的失败重试。
12、任务失败报警;默认提供邮件故障报警,预留扩展接口,方便扩展短信、钉钉等报警方式;
13.分片广播任务:部署执行器集群时,当任务路由策略选择‘分片广播’时,一次任务调度会触发集群中所有执行器执行一次任务,可以根据分片参数开发分片任务;
14.动态分片:分片广播任务以执行器为维度进行分片,支持动态扩展执行器集群,从而动态增加分片数量,配合业务处理;在进行大数据量业务操作时,可以显著提高任务处理能力和速度。
15.事件触发:除了“Cron模式”和“任务依赖模式”触发任务执行外,还支持基于事件的任务触发模式。调度中心提供触发任务单次执行的API服务,可以根据业务事件灵活触发。
16.任务进度监控:支持实时监控任务进度;
17.滚动实时日志:支持在线查看调度结果,支持在滚动模式下实时查看执行器输出的完整执行日志;
18.GLUE:提供Web IDE,支持任务逻辑代码的在线开发,动态发布,实时编译生效,省略了在线部署的过程。支持30个版本的版本历史回溯。
19.脚本任务:支持在GLUE模式下开发运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型的脚本;
20.命令行任务:本机提供一个通用命令行任务Handler(Bean任务,‘command jobhandler’);业务方只需要提供命令行;
21.任务依赖:支持配置子任务依赖。父任务成功执行后,会主动触发子任务执行一次。多个子任务用逗号分隔。
22.一致性:“调度中心”通过DB锁保证集群分布式调度的一致性,一个任务调度只触发一次执行;
23.自定义任务参数:支持在线配置和调度任务,即时生效;
24.调度线程池:调度系统通过多线程触发调度操作,保证调度执行准确,不被阻塞;
25.数据加密:对调度中心与执行者之间的通信进行加密,提高调度信息的安全性;
26.邮件报警:任务失败时支持邮件报警,支持配置m
27.推送maven中央仓库:会将最新稳定版本推送至maven中央仓库,方便用户访问使用;
28.运行报告:支持实时查看运行数据,如任务数、调度次数、执行机构数等。以及调度报表,如调度日期分布图、调度成功分布图等。
29.全异步:任务调度过程是在全异步中设计和实现的,如异步调度、异步操作、异步回调等。有效剪辑密集调度的流量高峰,理论上支持任意时长任务的运行;
30.跨语言:调度中心和执行器提供独立于语言的RESTful API服务,任何第三方语言都可以相应地对接调度中心或实现执行器。此外,它还提供了“多任务模式”和“httpJobHandler”等其他跨语言方案。
31.国际化:调度中心支持国际化,提供中文和英文两种可选语言,默认为中文;
32.容器化:提供官方docker形象,实时更新推送dockerhub,进一步实现产品开箱即用;
33.线程池隔离:调度线程池进行隔离和拆分,将Slow任务自动降级为‘Slow’线程池,避免调度线程耗尽,提高系统稳定性;
34.用户管理:支持在线管理系统用户,有管理员和普通用户两种角色。
35.权限控制:执行者维度进行权限控制,管理员拥有完全权限。普通用户在允许相关操作之前需要分配执行器权限。