1. 首页
  2. >
  3. 技术代码
  4. >
  5. java技术

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项目下载地址:

https://github.com/xuxueli/xxl-job