Xxl Job Versions Save

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)

2.4.0

1 year ago
  • 1、【优化】执行器任务Bean扫描逻辑优化:解决懒加载注解失效问题。
  • 2、【优化】多个项目依赖升级至较新稳定版本,涉及netty、groovy、spring、springboot、mybatis等;
  • 3、【修复】"CVE-2022-36157" 授权漏洞修复。
  • 4、【修复】"CVE-2022-43183" SSRF漏洞修复。

2.3.1

1 year ago
  • 1、【修复】修复风险漏洞,升级问题低版本项目依赖:CVE-2021-2471、CVE-2022-22965等。
  • 2、【修复】修复故障告警逻辑,邮箱校验逻辑下放至EmailJobAlarm中,避免对其他告警方式的干扰。
  • 3、【优化】调度通讯默认启用accessToken,提升系统安全性(建议生产环境自定义accessToken)。
  • 4、【优化】合并多项PR,项目代码结构、健壮性优化:PR-2833、PR-2812、PR-2541、PR-2537、PR-2514、PR-2509、PR-2591。
  • 5、【优化】任务线程名优化,提升可读性与问题定位效率(ISSUE-2527)。

2.3.0

3 years ago

Release Notes

  • 1、【新增】调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿触发一次等;
  • 2、【新增】触发策略:除了常规Cron、API、父子任务触发方式外,新增提供 "固定间隔触发、(固定延时触发,实验中)" 新触发方式;
  • 3、【新增】新增任务辅助工具 "XxlJobHelper":提供统一任务辅助能力,包括:任务上下文信息维护获取(任务参数、任务ID、分片参数)、日志输出、任务结果设置……等;
    • 3.1、"ShardingUtil" 组件废弃:改用 "XxlJobHelper.getShardIndex()/getShardTotal();" 获取分片参数;
    • 3.2、"XxlJobLogger" 组件废弃:改用 "XxlJobHelper.log" 进行日志输出;
  • 4、【优化】任务核心类 "IJobHandler" 的 "execute" 方法取消出入参设计。改为通过 "XxlJobHelper.getJobParam" 获取任务参数并替代方法入参,通过 "XxlJobHelper.handleSuccess/handleFail" 设置任务结果并替代方法出参,示例代码如下;
@XxlJob("demoJobHandler")
public void execute() {
  String param = XxlJobHelper.getJobParam();    // 获取参数
  XxlJobHelper.handleSuccess();                 // 设置任务结果
}
  • 5、【优化】Cron编辑器增强:Cron编辑器修改cron时可实时查看最近运行时间;
  • 6、【优化】执行器示例项目规范整理;
  • 7、【优化】任务调度生命周期重构:调度(schedule)、触发(trigger)、执行(handle)、回调(callback)、结束(complete);
  • 8、【优化】执行器注册组件优化:注册逻辑调整为异步方式,提高注册性能;
  • 9、【优化】执行器鉴权校验:执行器启动时主动校验accessToken,为空则主动Warn告警;(已规划安全强化:AccessToken动态生成、动态启停等)
  • 10、【优化】邮箱告警配置优化:将"spring.mail.from"与"spring.mail.username"属性拆分开,更加灵活的支持一些无密码邮箱服务;
  • 11、【优化】多个项目依赖升级至较新稳定版本,如netty、groovy、spring、springboot、mybatis等;
  • 12、【优化】UI组件常规升级,提升组件稳定性;
  • 13、【优化】调度中心页面交互优化:用户管理模块密码列取消;多处表达autocomplete取消;执行器管理模块XSS拦截校验等;
  • 14、【优化】调度中心任务状态探测慢SQL问题优化;
  • 15、【修复】GLUE-Java模式任务,init/destroy无法执行问题修复;
  • 16、【修复】Cron编辑器问题修复:修复小概率情况下cron单个字段修改时导致其他字段被重置问题;
  • 17、【修复】通用HTTP任务Handler(httpJobHandler)优化:修复 "setDoOutput(true)" 导致任务请求GetMethod失效问题;
  • 18、【修复】执行器Commandhandler示例任务优化,修复极端情况下脚本进程挂起问题;
  • 19、【修复】调度通讯组件优化,修复RestFul方式调用 DotNet 版本执行器时心跳检测失败问题;
  • 20、【修复】调度中心远程执行日志查询乱码问题修复;
  • 21、【修复】调度中心组件加载顺序优化,修复极端情况下调度组件初始慢导致的调度失败问题;
  • 22、【修复】执行器注册线程优化,修复极端情况下初始化失败时导致NPE问题;
  • 23、【修复】调度线程连接池优化,修复连接有效性校验超时问题;
  • 24、【修复】执行器注册表字段优化,解决执行器注册节点过多导致注册信息存储和更新失败的问题;
  • 25、【修复】轮训路由策略优化,修复小概率下并发问题;
  • 26、【修复】页面redirect跳转后https变为http问题修复;
  • 27、【修复】执行器日志清理优化,修复小概率下日志文件为空导致清理异常问题;

v2.2.0

3 years ago

Release Notes

  • 1、RESTful API:调度中心与执行器提供语言无关的 RESTful API 服务,第三方任意语言可据此对接调度中心或者实现执行器。
  • 2、任务复制功能:点击复制是弹出新建任务弹框,并初始化被复制任务信息;
  • 3、任务手动执行一次的时候,支持指定本次执行的机器地址,为空则从执行器获取;
  • 4、任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;
  • 5、调度中心升级springboot2.x;因此,系统要求JDK8+;
  • 6、XxlJob注解扫描方式优化,支持查找父类以及接口和基于类代理等常见情况;修复任务为空时小概率NPE问题;
  • 7、移除旧类注解JobHandler,推荐使用基于方法注解 "@XxlJob" 的方式进行任务开发;(如需保留类注解JobHandler使用方式,可以参考旧版逻辑定制开发);
  • 8、任务告警组件模块化:如果需要新增一种告警方式,只需要新增一个实现 "com.xxl.job.admin.core.alarm.JobAlarm" 接口的告警实现即可,更加灵活、方便定制;
  • 9、调度中心国际化完善:新增 "中文繁体" 支持。默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
  • 10、执行器注册逻辑优化:新增配置项 ”注册地址 / xxl.job.executor.address“,优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
  • 11、默认数据库连接池调整为hikari,移除tomcat-jdbc依赖;
  • 12、多个项目依赖升级至较新稳定版本,如mybatis、groovy和mysql驱动等;
  • 13、执行器优雅停机优化,修复任务线程中断未join导致回调丢失的问题;
  • 14、一致性哈希路由策略优化:默认虚拟节点数量调整为100,提高路由的均衡性;
  • 15、通用HTTP任务Handler(httpJobHandler)优化,扩展自定义参数信息,示例参数如下;
url: http://www.xxx.com
method: get 或 post
data: post-data
  • 16、SQL脚本编码默认utf8mb4执行,避免小概率下容器环境中乱码问题;
  • 17、Web IDE交互问题修复:输入源码备注之后按回车跳转error问题处理;
  • 18、执行器初始化逻辑优化:修复懒加载的Bean被提前初始化问题;
  • 19、执行器注册默认值优化;
  • 20、修复bootstrap.min.css.map 404问题;
  • 21、执行器UI交互优化,移除冗余order属性;
  • 22、执行备注消息长度限制,修复数据超长无法存储导致导致回调失败的问题;

注意:XxlJobSpringExecutor组件个别字段调整:“appName” 调整为 “appname” ,升级时该组件时需要注意;

2.1.2

4 years ago

Release Notes

  • 1、方法任务支持:由原来基于JobHandler类任务开发方式,优化为支持基于方法的任务开发方式;因此,可以支持单个类中开发多个任务方法,进行类复用
@XxlJob("demoJobHandler")
public ReturnT<String> execute(String param) {
    XxlJobLogger.log("hello world");
    return ReturnT.SUCCESS;
}
  • 2、移除commons-exec,采用原生方式实现,降低第三方依赖;
  • 3、执行器回调乱码问题修复;
  • 4、调度中心dispatcher servlet加载顺序优化;
  • 5、执行器回调地址https兼容支持;
  • 6、多个项目依赖升级至较新稳定版本;
  • 注意:最新版本 "XxlJobSpringExecutor" 逻辑有调整,历史项目中该组件的配置方式请参考Sample示例项目进行调整,尤其注意需要移除组件的init和destroy方法;

2.1.1

4 years ago

Release Notes

  • 1、 调度中心日志自动清理功能(至此,调度中心/执行器均支持日志自动清理,过期天数均默认设置为30天):调度中心新增配置项("xxl.job.logretentiondays")日志保存天数,过期日志自动清理;解决海量日志情况下日志表慢SQL问题;限制大于等于7时生效,否则关闭清理功能,默认为30;
  • 2、 调度报表优化:新增日志报表的存储表,三天内的任务日志会以每分钟一次的频率异步同步至报表中;任务报表仅读取报表数据,极大提升加载速度;
  • 3、 Cron在线生成工具:任务新增、编辑框通过组件在线生成Cron表达式;
  • 4、 Cron下次执行时间查询:支持通过界面在线查看后续连续5次执行时间;
  • 5、 调度中心新增应用健康检查功能,借助“spring-boot-starter-actuator”,相对地址 “/actuator/health”;
  • 6、 DB脚本默认编码改为utf8mb4,修复字符乱码问题(建议Mysql版本5.7+);
  • 7、 调度中心任务平均分配,触发组件每次获取与线程池数量相关数量的任务,避免大量任务集中在单个调度中心集群节点;
  • 8、 任务触发组件优化,预加载频率正常1s一次,当预加载轮空时主动休眠一个加载周期,动态降低加载频率从而降低DB压力;
  • 9、 调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
  • 10、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度;
  • 11、注册监控线程优化,降低死锁几率;
  • 12、调度中心日志删除优化,改为分页获取ID并根据ID删除的方式,避免批量删除海量日志导致死锁问题;
  • 13、任务重试时参数丢失的问题修复;
  • 14、调度中心移除SQL中的 "now()" 函数;集群部署时不再依赖DB时钟,仅需要保证调度中心应用节点时钟一致即可;
  • 15、任务触发组件加载顺序调整,避免小概率情况下组件随机加载顺序导致的I18N的NPE问题;
  • 16、JobThread自销毁优化,避免并发触发导致triggerQueue中任务丢失问题;
  • 17、调度中心密码限制18位,修复修改密码超过18位无法登陆的问题;
  • 18、任务告警组件分页参数无效问题修复;
  • 19、升级xxl-rpc版本:服务端线程优化,降低线程内存开销;IpUtil优化:增加连通性校,过滤明确非法的网卡;
  • 20、调度中心回调API服务改为restful方式;
  • 21、UI优化,任务列表和日志列表数据表格宽度比例调整,避免数据换行提升体验;
  • 22、登录界面取消默认填写的登录账号密码;
  • 23、执行器表属性调整,"顺序" 属性调整为整型,解决执行器数据较多时无法正确排序的问题;
  • 24、任务列表交互优化,支持查看任务所属执行器的注册节点;
  • 25、项目依赖升级至较新稳定版本,如spring、spring-boot、mybatis、slf4j、groovy等等;

2.1.0

4 years ago

Release Notes

  • 1、自研调度组件,移除quartz依赖:一方面是为了精简系统降低冗余依赖,另一方面是为了提供系统的可控度与稳定性;
    • 触发:单节点周期性触发,运行事件如delayqueue;
    • 调度:集群竞争,负载方式协同处理,锁竞争-更新触发信息-推送时间轮-锁释放-锁竞争;
  • 2、底层表结构重构:移除11张quartz相关表,并对现有表结构优化梳理;
  • 3、任务日志主键调整为long数据类型,防止海量日志情况下数据溢出;
  • 4、底层线程模型重构:移除Quartz线程池,降低系统线程与内存开销;
  • 5、用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;
  • 6、权限管理:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;
  • 7、调度线程池参数调优;
  • 8、注册表索引优化,缓解锁表问题;
  • 9、新增Jboot执行器Sample示例项目;
  • 10、任务列表优化,支持根据 "任务状态"、"负责人" 属性筛选任务;
  • 11、任务日志列表交互优化,操作按钮合并为分割按钮;
  • 12、项目依赖升级至较新稳定版本,如spring、springboot、groovy、xxl-rpc等等;并清理冗余POM;
  • 13、升级xxl-rpc至较新版本,修复代理服务初始化时远程服务不可用导致长连冗余创建的问题;
  • 14、首页调度报表的日期排序在TIDB下乱序问题修复;
  • 15、调度中心与执行器双向通讯超时时间调整为3s;
  • 16、调度组件销毁流程优化,先停止调度线程,然后等待时间轮内存量任务处理完成,最终销毁时间轮线程;
  • 17、执行器回调线程优化,回调地址为空时销毁问题修复;
  • 18、HttpJobHandler优化,响应数据指定UTF-8格式,避免中文乱码;
  • 19、代码优化,ConcurrentHashMap变量类型改为ConcurrentMap,避免因不同版本实现不同导致的兼容性问题;

2.0.2

4 years ago

Release Notes

  • 1、底层通讯方案优化:升级较新版本xxl-rpc,由"JETTY"方案调整为"NETTY_HTTP"方案,执行器内嵌netty-http-server提供服务,调度中心复用容器端口提供服务;
  • 2、任务告警逻辑调整,改为通过扫描失败日志方式触发。一方面精确扫描失败任务,降低扫描范围;另一方面取消内存队列,降低线程内存消耗;
  • 3、Quartz触发线程池废弃并替换为 "XxlJobThreadPool",降低线程切换、内存占用带来的消耗,提高调度性能;
  • 4、调度线程池隔离,拆分为"Fast"和"Slow"两个线程池,1分钟窗口期内任务耗时达500ms超过10次,该窗口期内判定为慢任务,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性;
  • 5、执行器热部署时JobHandler重新初始化,修复由此导致的 "jobhandler naming conflicts." 问题;
  • 6、新增Class的加载缓存,解决频繁加载Class会使jvm的方法区空间不足导致OOM的问题;
  • 7、任务支持更换绑定执行器,方便任务分组转移和管理;
  • 8、调度中心告警邮件发送组件改为 “spring-boot-starter-mail”;
  • 9、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
  • 10、项目依赖升级至较新稳定版本,如quartz、spring、jackson、groovy、xxl-rpc等等;
  • 11、精简项目,取消第三方依赖,如 commons-collections4、commons-lang3 ;
  • 12、执行器回调日志落盘方案复用RPC序列化方案,并移除Jackson依赖;
  • 13、底层Log调优,应用正常终止取消异常栈信息打印;
  • 14、交互优化,尽量避免新开页面窗口;仅WebIDE支持新开页,并提供窗口快速关闭按钮;任务启、停、删除、触发等轻操作提示改为toast方式,
  • 15、任务暂停、删除优化,避免quartz delete不完整导致任务脏数据;
  • 16、任务回调、心跳注册成功日志优化,非核心常规日志调整为debug级别,降低冗余日志输出;
  • 17、调整首页报表默认区间为本周,避免日志量太大查询缓慢;
  • 18、LRU路由更新不及时问题修复;
  • 19、任务失败告警邮件发送逻辑优化;
  • 20、调度日志排序逻辑调整为按照调度时间倒序,兼容TIDB等主键不连续日志存储组件;
  • 21、执行器优雅停机优化;
  • 22、连接池配置优化,增强连接有效性验证;
  • 23、JobHandler#msg长度限制,修复异常情况下日志超长导致内存溢出的问题;
  • 24、升级xxl-rpc至较新版本,修复springboot 2.x版本兼容性问题;

v2.0.1

5 years ago

Release Notes

  • 1、左侧菜单折叠动画问题修复;
  • 2、调度报表日期分布图默认值统一;
  • 3、freemarker对数字默认加千分位问题修复,解决日志ID被分隔导致查看日志失败问题;
  • 4、底层通讯组件升级,修复通讯异常时无效等待的问题;
  • 5、执行器启动之后jetty停止的问题修复;

v2.0.0

5 years ago

Release Notes

  • 1、调度中心迁移到 springboot;
  • 2、底层通讯组件迁移至 xxl-rpc;
  • 3、提供官方docker镜像,并推送至中央仓库(docker pull xuxueli/xxl-job-admin),更进一步实现产品开箱即用;
  • 4、新增无框架执行器Sample示例项目 "xxl-job-executor-sample-frameless"。不依赖第三方框架,只需main方法即可启动运行执行器;
  • 5、命令行任务:原生提供通用命令行任务Handler(Bean任务,"CommandJobHandler");业务方只需要提供命令行即可;
  • 6、任务状态优化,仅运行状态"NORMAL"任务关联至quartz,降低quartz底层数据存储与调度压力;
  • 7、任务状态规范:新增任务默认停止状态,任务更新时保持任务状态不变;
  • 8、IP获取逻辑优化,优先遍历网卡来获取可用IP;
  • 9、任务新增的API服务接口返回任务ID,方便调用方实用;
  • 10、组件化优化,移除对 spring 的依赖:非spring应用选用 "XxlJobExecutor" 、spring应用选用 "XxlJobSpringExecutor" 作为执行器组件;
  • 11、任务RollingLog展示逻辑优化,修复超时任务无法查看的问题;
  • 12、多项UI组件升级到最新版本,如:CodeMirror、Echarts、Jquery 等;
  • 13、项目依赖升级 groovy 至较新稳定版本;pom清理;
  • 14、子任务失败重试重试逻辑优化,子任务失败时将会按照其预设的失败重试次数主动进行重试