xxl-job v2.1.1正式发布
2019年7月7日,国内开源调度框架xxl-job发布最新v2.1.0版本,该版本在底层调度框架上移除对quartz依赖,可谓是一次非常大的版本更新。
v2.1.0更新说明
- 自研调度组件,移除quartz依赖:一方面是为了精简系统降低冗余依赖,另一方面是为了提供系统的可控度与稳定性;
- 触发:单节点周期性触发,运行事件如delayqueue;
- 调度:集群竞争,负载方式协同处理,锁竞争-更新触发信息-推送时间轮-锁释放-锁竞争;
- 底层表结构重构:移除11张quartz相关表,并对现有表结构优化梳理;
- 任务日志主键调整为long数据类型,防止海量日志情况下数据溢出;
- 底层线程模型重构:移除Quartz线程池,降低系统线程与内存开销;
- 用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;
- 权限管理:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;
- 调度线程池参数调优;
- 注册表索引优化,缓解锁表问题;
- 新增Jboot执行器Sample示例项目;
- 任务列表优化,支持根据 "任务状态"、"负责人" 属性筛选任务;
- 任务日志列表交互优化,操作按钮合并为分割按钮;
- 项目依赖升级至较新稳定版本,如spring、springboot、groovy、xxl-rpc等等;并清理冗余POM;
- 升级xxl-rpc至较新版本,修复代理服务初始化时远程服务不可用导致长连冗余创建的问题;
- 首页调度报表的日期排序在TIDB下乱序问题修复;
- 调度中心与执行器双向通讯超时时间调整为3s;
- 调度组件销毁流程优化,先停止调度线程,然后等待时间轮内存量任务处理完成,最终销毁时间轮线程;
- 执行器回调线程优化,回调地址为空时销毁问题修复;
- HttpJobHandler优化,响应数据指定UTF-8格式,避免中文乱码;
- 代码优化,ConcurrentHashMap变量类型改为ConcurrentMap,避免因不同版本实现不同导致的兼容性问题;
低版本升级 v2.1.0 核心操作步骤
1、使用 v2.1.0 版本建表SQL,初始化一套新底层数据库;
2、针对新数据库中几张新表做数据迁移,相关表迁移方案如下:
- xxl_job_lock:新表,无需迁移;
- xxl_job_group:从历史表 “XXL_JOB_QRTZ_TRIGGER_GROUP” 中迁移,两张表结构一致;
- xxl_job_info:从 历史表 “XXL_JOB_QRTZ_TRIGGER_INFO” 中迁移,两张表结构基本一致,新表新增了个别字段,需要对比添加;
- xxl_job_log:从历史表 “XXL_JOB_QRTZ_TRIGGER_LOG” 中迁移,两张表结构一致;
- xxl_job_logglue:从历史表 “XXL_JOB_QRTZ_TRIGGER_LOGGLUE” 中迁移,两张表结构一致;
- xxl_job_registry:从历史表 “XXL_JOB_QRTZ_TRIGGER_REGISTRY” 中迁移,两张表结构一致;
- xxl_job_user:新表,无需迁移;
3、升级调度中心:编译部署新版调度中心即可;
4、升级执行器依赖:执行器项目升级执行器依赖版本,重新部署即可。
Github项目下载地址: