六、版本更新日志

6.1 版本 V1.1.x,新特性[2015-12-05]

【于V1.1.x版本,XXL-JOB正式应用于我司,内部定制别名为 “Ferrari”,新接入应用推荐使用最新版本】

  • 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  • 2、动态:支持动态修改任务状态,动态暂停/恢复任务,即时生效;
  • 3、服务HA:任务信息持久化到mysql中,Job服务天然支持集群,保证服务HA;
  • 4、任务HA:某台Job服务挂掉,任务会平滑分配给其他的某一台存活服务,即使所有服务挂掉,重启时或补偿执行丢失任务;
  • 5、一个任务只会在其中一台服务器上执行;
  • 6、任务串行执行;
  • 7、支持自定义参数;
  • 8、支持远程任务执行终止;

6.2 版本 V1.2.x,新特性[2016-01-17]

  • 1、支持任务分组;
  • 2、支持“本地任务”、“远程任务”;
  • 3、底层通讯支持两种方式,Servlet方式 + JETTY方式;
  • 4、支持“任务日志”;
  • 5、支持“串行执行”,并行执行;

    说明:V1.2版本将系统架构按功能拆分为:

    1. - 调度模块(调度中心):负责管理调度信息,按照调度配置发出调度请求;
    2. - 执行模块(执行器):负责接收调度请求并执行任务逻辑;
    3. - 通讯模块:负责调度模块和任务模块之间的信息通讯;

    优点:

    1. - 解耦:任务模块提供任务接口,调度模块维护调度信息,业务相互独立;
    2. - 高扩展性;
    3. - 稳定性;

6.3 版本 V1.3.0,新特性[2016-05-19]

  • 1、遗弃“本地任务”模式,推荐使用“远程任务”,易于系统解耦,任务对应的JobHandler统称为“执行器”;
  • 2、遗弃“servlet”方式底层系统通讯,推荐使用JETTY方式,调度+回调双向通讯,重构通讯逻辑;
  • 3、UI交互优化:左侧菜单展开状态优化,菜单项选中状态优化,任务列表打开表格有压缩优化;
  • 4、【重要】“执行器”细分为:BEAN、GLUE两种开发模式,简介见下文:

    “执行器” 模式简介:

    1. - BEAN模式执行器:每个执行器都是Spring的一个Bean实例,XXL-JOB通过注解@JobHandler识别和调度执行器;
    2. -GLUE模式执行器:每个执行器对应一段代码,在线Web编辑和维护,动态编译生效,执行器负责加载GLUE代码和执行;

6.4 版本 V1.3.1,新特性[2016-05-23]

  • 1、更新项目目录结构:
    • /xxl-job-admin —————————— 【调度中心】:负责管理调度信息,按照调度配置发出调度请求;
    • /xxl-job-core ———————————- 公共依赖
    • /xxl-job-executor-example ——— 【执行器】:负责接收调度请求并执行任务逻辑;
    • /db ————————————————— 建表脚本
    • /doc ————————————————- 用户手册
  • 2、在新的目录结构上,升级了用户手册;
  • 3、优化了一些交互和UI;

6.5 版本 V1.3.2,新特性[2016-05-28]

  • 1、调度逻辑进行事务包裹;
  • 2、执行器异步回调执行日志;
  • 3、【重要】在 “调度中心” 支持HA的基础上,扩展执行器的Failover支持,支持配置多执行期地址;

6.6 版本 V1.4.0 新特性[2016-07-24]

  • 1、任务依赖: 通过事件触发方式实现, 任务执行成功并回调时会主动触发一次子任务的调度, 多个子任务用逗号分隔;
  • 2、执行器底层实现代码进行重度重构, 优化底层建表脚本;
  • 3、执行器中任务线程分组逻辑优化: 之前根据执行器JobHandler进行线程分组,当多个任务复用Jobhanlder会导致相互阻塞。现改为根据调度中心任务进行任务线程分组,任务与任务执行相互隔离;
  • 4、执行器调度通讯方案优化, 通过Hex + HC实现建议RPC通讯协议, 优化了通讯参数的维护和解析流程;
  • 5、调度中心, 新建/编辑任务, 界面属性调整:
    • 5.1、任务新增/编辑界面中去除 “任务名JobName”属性 ,该属性改为系统自动生成: 该字段之前主要用于在 “调度中心” 唯一标示一个任务, 现实意义不大, 因此计划淡化掉该字段,改为系统生成UUID,从而简化任务新建的操作;
    • 5.2、任务新增/编辑界面中去除 “GLUE模式” 复选框位置调整, 改为贴近”JobHandler”输入框右侧;
    • 5.3、任务新增/编辑界面中去除 “报警阈值” 属性;
    • 5.4、任务新增/编辑界面中去除 “子任务Key” 属性, 每个任务全局任务Key可以从任务列表获取, 当本任务执行结束且成功后, 将会根据子任务Key匹配子任务并主动触发一次子任务执行;
  • 6、问题修复:
    • 6.1、执行器jetty关闭优化,解决一处可能导致jetty无法关闭的问题;
    • 6.2、执行器任务终止时,执行队列回调优化,解决一处导致任务无法回调的问题;
    • 6.3、调度中心中列表分页参数优化,解决一处因服务器限制post长度而引起的问题;
    • 6.4、执行器Jobhandler注解优化,解决一处因事务代理导致的容器无法加载JobHandler的问题;
    • 6.5、远程调度优化,禁用retry策略,解决一处可能导致重复调用的问题;

Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支 V1.3 。新特性将会在master分支持续更新。

6.7 版本 V1.4.1 新特性[2016-09-06]

  • 1、项目成功推送maven中央仓库, 中央仓库地址以及依赖如下:
    1. <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
    2. <dependency>
    3. <groupId>com.xuxueli</groupId>
    4. <artifactId>xxl-job-core</artifactId>
    5. <version>${最新稳定版}</version>
    6. </dependency>
  • 2、为适配中央仓库规则, 项目groupId从com.xxl改为com.xuxueli。
  • 3、系统版本不在维护在项目跟pom中,各个子模块单独配置版本配置,解决子模块无法单独编译的问题;
  • 4、底层RPC通讯,传输数据的字节长度统计规则优化,可节省50%数据传输量;
  • 5、IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。
  • 6、系统公共弹框功能,插件化;
  • 7、底层表结构,表明统一大写;
  • 8、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;

6.8 版本 V1.4.2 新特性[2016-09-29]

  • 1、推送新版本 V1.4.2 至中央仓库, 大版本 V1.4 进入维护阶段;
  • 2、任务新增时,任务列表偏移问题修复;
  • 3、修复一处因bootstrap不支持模态框重叠而导致的样式错乱的问题, 在任务编辑时会出现该问题;
  • 4、调度超时和Handler匹配不到时,调度状态优化;
  • 5、因catch异常,导致任务不可终止的问题,给出解决方案, 见文档;

6.9 版本 V1.5.0 特性[2016-11-13]

  • 1、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。
  • 2、”执行器” 新增参数 “AppName” : 是每个执行器集群的唯一标示AppName, 并周期性以AppName为对象进行自动注册。
  • 3、调度中心新增栏目 “执行器管理” : 管理在线的执行器, 通过属性AppName自动发现注册的执行器。只有被管理的执行器才允许被使用;
  • 4、”任务组”属性改为”执行器”: 每个任务需要绑定指定的执行器, 调度地址通过绑定的执行器获取;
  • 5、抛弃”任务机器”属性: 通过任务绑定的执行器, 自动发现注册的远程执行器地址并触发调度请求。
  • 6、”公共依赖”中新增DBGlueLoader,基于原生jdbc实现GLUE源码的加载器,减少第三方依赖(mybatis,spring-orm等);精简和优化执行器测配置(针对GLUE任务),降低上手难度;
  • 7、表结构调整,底层重构优化;
  • 8、”调度中心”自动注册和发现,failover: 调度中心周期性自动注册, 任务回调时可以感知在线的所有调度中心地址, 通过failover的方式进行任务回调,避免回调单点风险。

6.10 版本 V1.5.1 特性[2016-11-13]

  • 1、底层代码重构和逻辑优化,POM清理以及CleanCode;
  • 2、Servlet/JSP Spec设定为3.0/2.2
  • 3、Spring升级至3.2.17.RELEASE版本;
  • 4、Jetty升级版本至8.2.0.v20160908;
  • 5、已推送V1.5.0和V1.5.1至Maven中央仓库;

6.10 版本 V1.5.2 特性[2017-02-28]

  • 1、IP工具类获取IP逻辑优化,IP静态缓存;
  • 2、执行器、调度中心,均支持自定义注册IP地址;解决机器多网卡时错误网卡注册的情况;
  • 3、任务跨天执行时生成多份日志文件的问题修复;
  • 4、底层日志底层日志调整,非敏感日志level调整为debug;
  • 5、升级数据库连接池c3p0版本;
  • 6、执行器log4j配置优化,去除无效属性;
  • 7、底层代码重构和逻辑优化以及CleanCode;
  • 8、GLUE依赖注入逻辑优化,支持别名注入;

6.11 版本 V1.6.0 特性[2017-03-13]

  • 1、通讯方案升级,原基于HEX的通讯模型调整为基于HTTP的B-RPC的通讯模型;
  • 2、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
  • 3、执行器路由规则:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
  • 4、规范线程模型统一,统一线程销毁方案(通过listener或stop方法,容器销毁时销毁线程;Daemon方式有时不太理想);
  • 5、规范系统配置数据,通过配置文件统一管理;
  • 6、CleanCode,清理无效的历史参数;
  • 7、底层扩展数据结构以及相关表结构调整;
  • 8、新建任务默认为非运行状态;
  • 9、GLUE模式任务实例更新逻辑优化,原根据超时时间更新改为根据版本号更新,源码变动版本号加一;

6.12 版本 V1.6.1 特性[2017-03-25]

  • 1、Rolling日志;
  • 2、WebIDE交互重构;
  • 3、通讯增强校验,有效过滤非正常请求;
  • 4、权限增强校验,采用动态登录TOKEN(推荐接入内部SSO);
  • 5、数据库配置优化,解决乱码问题;

6.13 版本 V1.6.2 特性[2017-04-25]

  • 1、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
  • 2、JobHandler支持设置任务返回值,在任务逻辑中可以方便的控制任务执行结果;
  • 3、资源路径包含空格或中文时资源文件无法加载时,无法准确查看异常信息的问题处理。
  • 4、路由策越优化:循环和LFU路由策略计数器自增无上限问题和首次路由压力集中在首台机器的问题修复;

6.14 版本 V1.7.0 特性[2017-05-02]

  • 1、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python和Groovy等类型脚本;
  • 2、新增spring-boot类型执行器example项目;
  • 3、升级jetty版本至9.2;
  • 4、任务运行日志移除log4j组件依赖,改为底层自主实现,从而取消了对日志组件的依赖限制;
  • 5、执行器移除GlueLoader依赖,改为推送方式实现,从而GLUE源码加载不再依赖JDBC;
  • 6、登录拦截Redirect时获取项目名,解决非根据目录发布时跳转404问题;

6.15 版本 V1.7.1 特性[2017-05-08]

  • 1、运行日志读写编码统一为UTF-8,解决windows环境下日志乱码问题;
  • 2、通讯超时时间限定为10s,避免异常情况下调度线程占用;
  • 3、执行器,server启动、销毁和注册逻辑调整;
  • 4、JettyServer关闭逻辑优化,修复执行器无法正常关闭导致端口占用和频繁打印c3p0日志的问题;
  • 5、JobHandler中开启子线程时,支持子线程输出执行日志并通过Rolling查看。
  • 6、任务日志清理功能;
  • 7、弹框组件统一替换为layer;
  • 8、升级quartz版本至2.3.0;

6.16 版本 V1.7.2 特性[2017-05-17]

  • 1、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
  • 2、失败处理策略;调度失败时的处理策略,策略包括:失败告警(默认)、失败重试;
  • 3、通讯时间戳超时时间调整为180s;
  • 4、执行器与数据库彻底解耦,但是执行器需要配置调度中心集群地址。调度中心提供API供执行器回调和心跳注册服务,取消调度中心内部jetty,心跳周期调整为30s,心跳失效为三倍心跳;
  • 5、执行参数编辑时丢失问题修复;
  • 6、新增任务测试Demo,方便在开发时进行任务逻辑测试;

6.17 版本 V1.8.0 特性[2017-07-17]

  • 1、任务Cron更新逻辑优化,改为rescheduleJob,同时防止cron重复设置;
  • 2、API回调服务失败状态码优化,方便问题排查;
  • 3、XxlJobLogger的日志多参数支持;
  • 4、路由策略新增 “忙碌转移” 模式:按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
  • 5、路由策略代码重构;
  • 6、执行器重复注册问题修复;
  • 7、任务线程轮空30次后自动销毁,降低低频任务的无效线程消耗。
  • 8、执行器任务执行结果批量回调,降低回调频率提升执行器性能;
  • 9、springboot版本执行器,取消XML配置,改为类配置方式;
  • 10、执行日志,支持根据运行 “状态” 筛选日志;
  • 11、调度中心任务注册检测逻辑优化;

6.18 版本 V1.8.1 特性[2017-07-30]

  • 1、分片广播任务:执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数处理分片任务;
  • 2、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
  • 3、执行器JobHandler禁止命名冲突;
  • 4、执行器集群地址列表进行自然排序;
  • 5、调度中心,DAO层代码精简优化并且新增测试用例覆盖;
  • 6、调度中心API服务改为自研RPC形式,统一底层通讯模型;
  • 7、新增调度中心API服务测试Demo,方便在调度中心API扩展和测试;
  • 8、任务列表页交互优化,更换执行器分组时自动刷新任务列表,新建任务时默认定位在当前执行器位置;
  • 9、访问令牌(accessToken):为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;
  • 10、springboot版本执行器,升级至1.5.6.RELEASE版本;
  • 11、统一maven依赖版本管理;

6.19 版本 V1.8.2 特性[2017-09-04]

  • 1、项目主页搭建:提供中英文文档:http://www.xuxueli.com/xxl-job
  • 2、JFinal执行器Sample示例项目;
  • 3、事件触发:除了”Cron方式”和”任务依赖方式”触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。
  • 4、执行器摘除:执行器销毁时,主动通知调度中心并摘除对应执行器节点,提高执行器状态感知的时效性。
  • 5、执行器手动设置IP时将会绑定Host;
  • 6、规范项目目录,方便扩展多执行器;
  • 7、解决执行器回调URL不支持配置HTTPS时问题;
  • 8、执行器回调线程销毁前, 批量回调队列中数据,防止任务结果丢失;
  • 9、调度中心任务监控线程销毁时,批量对失败任务告警,防止告警信息丢失;
  • 10、任务日志文件路径时间戳格式化时SimpleDateFormat并发问题解决;

6.20 版本 V1.9.0 特性[2017-12-29]

  • 1、新增Nutz执行器Sample示例项目;
  • 2、新增任务运行模式 “GLUE模式(NodeJS) “,支持NodeJS脚本任务;
  • 3、脚本任务Shell、Python和Nodejs等支持获取分片参数;
  • 4、失败重试,完整支持:调度中心调度失败且启用”失败重试”策略时,将会自动重试一次;执行器执行失败且回调失败重试状态(新增失败重试状态返回值)时,也将会自动重试一次;
  • 5、失败告警策略扩展:默认提供邮件失败告警,可扩展短信等,扩展代码位置为 “JobFailMonitorHelper.failAlarm”;
  • 6、执行器端口支持自动生成(小于等于0时),避免端口定义冲突;
  • 7、调度报表优化,支持时间区间筛选;
  • 8、Log组件支持输出异常栈信息,底层实现优化;
  • 9、告警邮件样式优化,调整为表格形式,邮件组件调整为commons-email简化邮件操作;
  • 10、项目依赖全量升级至较新稳定版本,如spring、jackson等等;
  • 11、任务日志,记录发起调度的机器信息;
  • 12、交互优化,如登陆注销;
  • 13、任务Cron长度扩展支持至128位,支持负责类型Cron设置;
  • 14、执行器地址录入交互优化,地址长度扩展支持至512位,支持大规模执行器集群配置;
  • 15、任务参数“IJobHandler.execute”入参改为“String params”,增强入参通用性。
  • 16、IJobHandler提供init/destroy方法,支持在相应任务线程初始化和销毁时进行附加操作;
  • 17、任务注解调整为 “@JobHandler”,与任务抽象接口统一;
  • 18、修复任务监控线程被耗时任务阻塞的问题;
  • 19、修复任务监控线程无法监控任务触发和执行状态均未0的问题;
  • 20、执行器动态代理对象,拦截非业务方法的执行;
  • 21、修复JobThread捕获Error错误不更新JobLog的问题;
  • 22、修复任务列表界面左侧菜单合并时样式错乱问题;
  • 23、调度中心项目日志配置改为xml文件格式;
  • 24、Log地址格式兼容,支持非”/“结尾路径配置;
  • 25、底层系统日志级别规范调整,清理遗留代码;
  • 26、建表SQL优化,支持同步创建制定编码的库和表;
  • 27、系统安全性优化,登陆Token写Cookie时进行MD5加密,同时Cookie启用HttpOnly;
  • 28、新增”任务ID”属性,移除”JobKey”属性,前者承担所有功能,方便后续增强任务依赖功能。
  • 29、任务循环依赖问题修复,避免子任务与父任务重复导致的调度死循环;
  • 30、任务列表新增筛选条件 “任务描述”,快速检索任务;
  • 31、执行器Log文件定期清理功能:执行器新增配置项(”xxl.job.executor.logretentiondays”)日志保存天数,日志文件过期自动删除。

6.21 版本 V1.9.1 特性[2018-02-22]

  • 1、国际化:调度中心实现国际化,支持中文、英文两种语言,默认为中文。
  • 2、调度报表新增”运行中”中状态项;
  • 3、调度报表优化,报表SQL调优并且新增LocalCache缓存(缓存时间60s),提高大数据量下报表加载速度;
  • 4、修复打包部署时资源文件乱码问题;
  • 5、修复新版本chrome滚动到顶部失效问题;
  • 6、调度中心配置加载优化,取消对配置文件名的强依赖,支持加载磁盘配置;
  • 7、修复脚本任务Log文件未正常close的问题;
  • 8、项目依赖全量升级至较新稳定版本,如spring、jackson等等;

6.22 版本 V1.9.2 特性[2018-10-05]

  • 1、任务超时控制:新增任务属性 “任务超时时间”,并支持自定义,任务运行超时将会主动中断任务;
  • 2、任务失败重试次数:新增任务属性 “失败重试次数”,并支持自定义,当任务失败时将会按照预设的失败重试次数主动进行重试;同时收敛废弃其他失败重试策略,如调度失败、执行失败、状态码失败等;
  • 3、新增任务运行模式 “GLUE模式(PHP) “,支持php脚本任务;
  • 4、新增任务运行模式 “GLUE模式(PowerShell) “,支持PowerShell脚本任务;
  • 5、调度全异步处理:任务触发之后,推送到调度队列,多线程并发处理调度请求,提高任务调度速率的同时,避免因网络问题导致quartz调度线程阻塞的问题;
  • 6、执行器任务结果落盘优化:执行器回调失败时将任务结果写磁盘,待重启或网络恢复时重试回调任务结果,防止任务执行结果丢失;
  • 7、任务日志查询速度大幅提升:百万级别数据量搜索速度提升1000倍;
  • 8、调度中心提供API服务,支持通过API服务对任务进行查询、新增、更新、启停等操作;
  • 9、底层自研Log组件参数占位符改为”{}”,并修复打印有参日志时参数不匹配导致报错的问题;
  • 10、任务回调结果优化,支持展示在Rolling log中,方便问题排查;
  • 11、底层LocalCache组件兼容性优化,支持jdk9、jdk10及以上版本编译部署;
  • 12、告警邮件固定使用 UTF-8 编码格式,修复由机器编码导致的邮件乱码问题;
  • 13、告警邮件中展示失败告警信息;
  • 14、告警邮箱支持SSL配置;
  • 15、Window机器下File.separator不兼容问题修复;
  • 16、脚本任务异常Log输出优化;
  • 17、任务线程停止变量修饰符优化;
  • 18、脚本任务Log文件流关闭优化;
  • 19、任务报表成功、失败和进行中统计问题修复;
  • 20、核心依赖Core内部国际化处理;
  • 21、默认Quartz线程数调整为50;
  • 22、新增左侧菜单”运行报表”;
  • 23、执行器手动设置IP时取消绑定Host的操作,该IP仅供执行器注册使用;修复指定外网IP时无法绑定执行器Host的问题;
  • 24、取消父子任务不可重复的限制,支持循环任务触发等特殊场景;
  • 25、任务调度备注中标注任务触发类型,如Cron触发、父任务触发、API触发等等,方便排查调度日志;
  • 26、底层日志组件SimpleDateFormat线程安全问题修复;
  • 27、执行器通讯线程优化,corePoolSize从256降低至32;
  • 28、任务日志表状态字段类型优化;
  • 29、GLUE脚本文件自动清理功能,及时清理过期脚本文件;
  • 30、执行器注册方式切换优化,切换自动注册时主动同步在线机器,避免执行器为空的问题;
  • 31、跨平台:除了提供Java、Python、PHP等十来种任务模式之外,新增提供基于HTTP的任务模式;
  • 32、底层RPC序列化协议调整为hessian2;
  • 33、修复表字段 “t.order”与数据库关键字冲突查询失败的问题,
  • 34、任务属性枚举 “任务模式、阻塞策略” 国际化优化;
  • 35、分片任务失败重试优化,仅重试当前失败的分片;
  • 36、任务触发时支持动态传参,调度中心与API服务均提供提供动态参数功能;
  • 37、任务执行日志、调度日志字段类型调整,改为text类型并取消字数限制;
  • 38、GLUE任务脚本字段类型调整,改为mediumtext类型,提高GLUE长度上限;
  • 39、任务监控线程Log输出优化,运行中任务的监控Log改为debug级别,减少非核心日志量;
  • 40、项目依赖全量升级至较新稳定版本,如spring、Jackson、groovy等等;
  • 41、docker支持:调度中心提供 Dockerfile 方便快速构建docker镜像;

6.23 版本 V2.0.0 特性[迭代中]

  • 1、[迭代中]调度中心迁移到springboot;
  • 2、[迭代中]SimpleTrigger 支持;
  • 3、[迭代中]任务状态与quartz解耦,降低quartz调度压力,仅NORMAL状态任务绑定quartz;
  • 4、[迭代中]新增任务默认运行状态,任务更新时运行状态保持不变;
  • 5、[迭代中]任务权限管理:执行器为粒度分配权限,核心操作校验权限;
  • 6、[迭代中]Release发布时,一同发布调度中心安装包,真正实现开箱即用;
  • 7、[迭代中]docker镜像,并且推送docker镜像到中央仓库,更进一步实现产品开箱即用;
  • 8、[迭代中]cron在线生成工具,如 “cronboot/cron.qqe2”;
  • 9、[迭代中]原生提供通用命令行任务Handler(Bean任务,”CommandJobHandler”);业务方只需要提供命令行即可,可执行任意命令;
  • 10、IP获取逻辑优化,优先遍历网卡来获取可用IP;

TODO LIST

  • 1、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;目前采用IP自然排序,可以满足需求,待定;
  • 2、任务单机多线程:提升任务单机并行处理能力;
  • 3、任务依赖,流程图,子任务+会签任务,各节点日志;
  • 4、调度任务优先级;
  • 5、移除quartz依赖,重写调度模块:新增或恢复任务时将下次执行记录插入delayqueue,调度中心集群竞争分布式锁,成功节点批量加载到期delayqueue数据,批量执行。
  • 6、多数据库支持,在重写并移除Quartz的基础上,DAO层通过JPA实现,不限制数据库类型;
  • 7、执行器Log清理功能:调度中心Log删除时同步删除执行器中的Log文件;
  • 8、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性;
  • 9、API事件触发类型任务(更类似MQ消息)支持”动态传参、延时消费”;该类型任务不走Quartz,单独建立MQ消息表,调度中心竞争触发;待定,该功能与 XXL-MQ 冲突,该场景建议用后者;
  • 10、调度线程池改为协程方式实现,大幅降低系统内存消耗;
  • 11、任务依赖增强,新增任务类型 “流程任务”,流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
  • 12、任务告警逻辑调整:任务调度,以及任务回调失败时,均推送监控队列。后期考虑通过任务Log字段控制告警状态;
  • 13、提供多版本执行器:不依赖容器版本、不内嵌Jetty版本(通过配置executoraddress替换jetty通讯)等;
  • 14、注册中心支持扩展,除默认基于DB之外,支持扩展接入第三方注册中心如zk、eureka等;
  • 15、流程任务,支持参数传递;
  • 16、Cron TimeZone 自定义;
  • 17、忙碌转移优化,全部机器忙碌时不再直接失败;
  • 18、流程任务等,透传动态参数;
  • 19、任务支持切换执行器;
  • 20、任务自动注册;待考虑,因为任务自动注册将会导致任务难以管理控制;
  • 21、批量触发支持,添加参数 “org.quartz.scheduler.batchTriggerAcquisitionMaxCount: 50”;