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

1.1.4.RELEASE, 2020-05-15

  • 新特性
    • 支持自建Namespace。
    • 支持初始化多个schedulerxWorker。
    • MapReduce模型增强
      • 子任务失败,也能执行reduce。
      • JobContext.getTaskStatuses可以判断每个Task的状态,Map<Long, TaskStatus>结构体key是taskId,value是task的状态。
  • 问题修复
    • ProcessResult,result为空,会导致空指针。
    • thread-dispatcher-delivery挂了会导致任务卡住。

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分布式编程模型。
  • 支持任务实例级别和子任务级别的失败自动重试(默认不重试)。
  • 支持数据时间和重刷数据。