本章节介绍了 SchedulerX 2.0 的发布记录及相关的功能。

1.1.2.RELEASE, 2020-02-10

  • 新特性

    shade protobuf and netty from akka,解决接入时 90% 以上的 JAR 包冲突。

  • 问题修复

    appKeys 不支持多分组。

1.1.0, 2019-12-17

  • 新特性
    • 支持多语言版本的分片模型(类似于 elastic-job)。
    • OpenApi 创建分组,可以返回 appKey。
    • 成功状态支持重跑,工作流中的任务实例重跑任务本身及下游任务。
  • 优化
    • Server 端性能优化,和客户端通信方式由同步改为异步,并优化了 AKKA 默认 Dispatcher 的配置。
    • 使用 1.1.0 版本客户端,心跳性能优化提高 3 倍。
    • 前端任务管理列表重新设计,可以看到更多信息。
  • 问题修复
    • 分布式拉模型,全局子任务可能不起作用。
    • 隔离单元环境中“如果没有配置 domain,可能还是会启动失败。

1.0.9, 2019-11-28

  • 新特性
    • 增加 blockAppStart 配置。表示 SchedulerX 启动失败是否 block 应用程序启动,默认 true。
    • 新增查询工作流运行状态接口。接口为 GetWorkflowInstanceRequest
    • jobContext 上下文新增 jobName 字段。这样用户可以运行期间获取到任务名称。
  • 问题修复
    • 通过 Hessian 反序列化 BigDecimal为 0;通过 Hessian 反序列化 LocalDateTime 报错。
    • 修复指定机器功能问题。任务运行超过一定时间子任务会下发到未指定机器上。
    • 客户端 springContext.getBean 报 AnnotationConfigApplicationContext has not been refreshed yet 异常。
    • 修复任务实现类配置错误的情况下会触发 Spring Boot 的 ServeletWebServer 停止的逻辑,导致业务进程在,但是 Web 服务被 shutdown 问题。
    • 修复系统启动变量 user.dir='/',任务 100% 会卡住的问题。
    • 客户端 springContext.getBean 报 AnnotationConfigApplicationContext has been closed already 异常。
    • 客户端生成的 workerId 存在小概率重复冲突的问题,造成任务触发到非本应用的机器上。
    • Spring 应用不能自定义 class loader。
    • 秒级别任务广播执行计数器显示不对。
    • 秒级别任务,jobContext.getScheduleTime 没有跟着循环更新。

1.0.8, 2019-08-06

  • 新特性
    • 【重要】重构 JobProcessor.postProcess 接口,增加 ProcessResult 返回值,之前用到 postProcess 接口需要改代码。
    • 广播执行增强,BroadcastJobProcessor 支持 preProcesspostProcesspreProcess 会在所有机器执行 process 之前执行一次,postProcess 会在所有机器执行 process 后执行一次。
    • JobContext.getTaskAttempt 可以获取当前子任务重试次数。
    • 客户端支持自定义监听端口,例如 SchedulerxWorker.setPort
    • Java 任务可以实现 JobProcessor,不必须继承 JavaProcessor
  • 问题修复
    • 修复 taskId=1 的子任务不支持子任务自动重试的 bug。
    • 分布式任务,根任务失败,无法看到失败原因。
    • 并行任务子任务列表不能重试子任务。

1.0.6-compatible, 2019-07-02

兼容 schedulerx1.0(DTS)接口的兼容版本。不支持同时依赖 schedulerx-clientschedulerx-worker 两个包,只能依赖 schedulerx-worker 一个包,即需要把 DTS 所有任务迁移到 SchedulerX 2.0。

1.0.6, 2019-07-02

  • 新特性
    • 新增部分包的 shade: aliyun-logcommons-validatorgsonfastjsonguavacommons-collections
    • 通过 ProcessResult(false, errorMsg) 返回,前端日志也能看到 errorMsg
  • 优化
    • 优化 at-least-once-delivery 性能。
    • 高负载场景下,消息重复发送会造成秒级任务卡主或应用线程被 Interrupt。
  • 问题修复
    • 广播任务卡主问题。
    • 秒级任务卡主问题。
    • at-least-once-delivery 可能会导致子任务状态无限重试。
    • logcollector 初始化失败,异常抛出来,启动失败。
    • DB 清理工作流任务实例,导致工作流无法恢复调度问题。
    • Spring 方式启动,不支持 kill

1.0.3, 2019-06-06

  • 新特性
    • MapReduce 模型支持返回所有子任务的结果,由 Reduce 处理。
    • 分布式模型支持拉模型,解决因为单机性能引起的木桶效应,支持动态扩容拉子任务。
    • 拉模型支持全局子任务并发度,可以进行限流。
    • JobContext 增加 wfInstanceId。
    • 客户端启动失败抛异常,堵塞JVM启动,尽早发现问题。
    • 客户端启动打印 mvn 依赖 JAR 的版本和路径,帮助排查 JAR 包冲突。
    • 分布式模型子任务详情,增加队列维度,可以看到每台机器缓存的子任务队列。
  • 优化
    • Worker 因为 Server 负载高被误 guarantined,可以自动恢复,不同重启客户端。
    • 分布式模型子任务详情,运行中可以真实显示每台机器正在运行的子任务数。
    • Master 节点挂了,Server 会负责清理 Slave 节点的资源,防止内存泄漏。

1.0.0, 2019-04-30

新特性

  • 支持 crontab 和 fixed_rate 表达式进行周期性定时调度。
  • 支持工作流调度,进行流程编排。
  • 支持 second_delay 表达式进行秒级别调度。
  • 支持 Java、Shell、Python、Go 任务类型。
  • 支持单机执行、广播执行、并行计算、内存网格、网格计算。
  • 支持 Map 和 MapReduce 分布式编程模型。
  • 支持任务实例级别和子任务级别的失败自动重试(默认不重试)。
  • 支持数据时间和重刷数据。