历史记录
本文介绍了SchedulerX产品在2022年以前发布涉及的新增功能、功能优化、重要问题修复及对应的文档,帮助您了解SchedulerX的历史发布动态。
服务端
2021-12-01
新特性
新增API:指定机器。
新增API:查询工作流。
2021-06-02
新特性
支持应用自动分裂,可以支持单应用百万级别任务。
支持RAM鉴权。
2020-12-07
新特性
客户端实例支持自定义标签,可以进行任务指定标签运行。
新增邮件、钉钉机器人报警。
支持应用级别报警联系人组。
问题修复
修复修改GroupID,历史执行记录会误降级为10条的问题。
修复客户端实例数很多的时候,子任务详情机器列表无法分页的问题。
修复任务管理查看历史记录无数据的问题。
2020-09-30
新特性
公网region支持pop API。
支持使用appKey鉴权(应用Key,代替AccessKey ID或AccessKey Secret)。
HTTP任务支持高级配置。
创建应用和创建任务支持操作记录。
优化
优化14寸电脑执行列表操作显示不全的内容格式问题。
控制台接口增加鉴权,防止系统安全受到攻击。
问题修复
修复通过任务管理查看历史记录是空白的问题。
修复池子中任务可能会卡住的问题。
修复广播任务可能会卡住的问题。
修复工作流中的HTTP任务,手动运行一次会误报无可用机器的问题。
2020-08-19
新特性
支持一个应用10万+任务。
任务管理新增详情查看功能。
优化
搜索性能优化。
应用列表下拉框,小于10个有全部应用,超过10个默认选中第一个。
服务端部分查询、加载接口性能优化。
无可用机器报警可区分是否指定了机器。
问题修复
修复禁用任务,池子状态的实例不会变为终止状态问题。
修复数据库异常导致池子中的实例会一直卡住问题。
修复删除应用,再重新创建个同名的应用会失败问题。
修复用户重启后,秒级任务会停止调度问题。
2020-05-27
新特性
HTTP任务增强。
HTTP任务支持Post参数。
HTTP任务支持通过Header获取任务基本信息。
HTTP任务超时时间上限支持到30秒。
pop API增强,新版本aliyun-java-sdk-schedulerx2-1.0.3。
支持通过popAPI创建HTTP任务。
支持授权和取消权限的popAPI。
支持连续失败次数报警。
支持命名空间下的应用授权。
优化
搜索优化。
任务管理和流程管理,支持通过状态搜索过滤。
执行列表支持通过实例ID搜索。
应用列表下拉框支持模糊搜索
删除非空应用做检验,有任务不准删除应用。
HTTP任务性能优化。
失败报警频率优化,增加疲劳度。
控制台增加“联系我们”。
应用名增加非中文检验。
问题修复
修复数据偏移无法设置负数。
修复超时时间等没有单位的界面显示问题。
修复服务端切换主机,指定机器会丢失的问题。
客户端
1.3.2,2021-12-15
修复问题:调整默认依赖的log4j2至2.15.0版本。
1.3.0.3,2021-11-26
新特性
秒级别单机增强:单机秒级别循环支持在不用的实例间分发切换执行,SpringBoot应用配置参数如下:
spring.schedulerx2.enableSecondDelayStandaloneDispatch=true
(默认false
)。
问题修复
修复“客户端对接多个应用分组时运行实例心跳只上报给指定的调度服务”的问题。
修复“秒级别任务偶发的线程异常中断和空指针异常”的问题。
修复“SchedulerX客户端与Spring Cloud集成时会出现任务运行锁死超时”的兼容问题。
修复“广播任务在并发情况下出现执行中断”的问题。
修复“秒级别任务在执行过程中未能定时刷新Worker实例列表”的问题。
修复“秒级别广播任务执行停止指令后,扫描线程未结束”的问题。
修复“秒级别广播任务场景下,大批量Worker按批次发布过程中任务有概率卡住”的问题。
1.2.9.1,2021-8-30
问题修复
修复问题:修复worker与Spring Cloud集成时出现任务运行锁死超时。
1.2.9,2021-8-27
新特性
秒级别单机增强:单机秒级别循环支持在不用的实例间分发切换执行,配置参数:
spring.schedulerx2.enableSecondDelayStandaloneDispatch=true
(默认false
)。
问题修复
修复问题:广播任务在并发情况下出现中断信号,以及worker可以实例列表未更新。
1.2.8.3,2021-8-13
问题修复
修复秒级别广播任务执行停止指令后扫描线程未结束。
1.2.8.2,2021-8-6
问题修复
秒级别广播任务大批量worker按批次发布过程中任务运行有概率卡住进行修复。
1.2.8,2021-6-23
新特性
广播任务增强:postProcess可以拿到所有机器执行的状态
JobContext.getTaskStatuses()
和执行结果JobContext.getTaskResults()
。广播分片模型:广播任务可以通过JobContext获取
shardingNum
和sharingId
,通过自己机器的index进行数据分布式处理。分片模型增强:JobContext可以从
shardingNum
获取所有分片数量。
1.2.7,2021-4-28
新特性
新增开关,可以关闭的failover功能。
问题修复
修复心跳探活失败,可能会socket泄漏的问题。
修复MapTask Master在子任务比较多的情况下,可能会频繁误failover的问题。
1.2.5.2,2021-4-8
新特性
秒级别任务间隔支持到毫秒级别。
优化
MapReduce模型,root Task固定在master node执行,方便排查问题。
不强依赖log4j2,如果用户使用的是logback,可以把log4j和log4j2依赖移除。
1.2.4.3,2021-1-21
新特性
广播任务运行中支持进度汇报。
心跳日志可以通过开关关闭。
问题修复
修复广播任务有可能卡住的严重问题。
优化
心跳间隔调整为10秒。
1.2.3.1,2020-12-16
问题修复
修复客户端负载高把任务调度长连接打挂,导致任务无法继续调度的问题。
1.2.2.2,2020-12-10
新特性
支持容器内采集容器真实CPU使用率。需要增加配置,以starter为例:
spring.schedulerx2.enableCgroupMetrics=true,spring.schedulerx2.cgroupPathPrefix=/sys/fs/cgroup/cpu/
(非必填,如果容器里有"/sys/fs/cgroup/cpu/
"这个路径,可以不用配置,否则修改为真实的cgroup路径)。支持标签。客户端启动可以自定义打标签,以starter为例:
spring.schedulerx2.labels=xxx
。任务管理中可以指定机器,可以指定任务跑在某个标签的实例上。适用场景灰度、单元化等。
问题修复
把h2从shade中移除。shade h2可能会导致MySQL驱动加载失败。
优化
客户端心跳线程和akka核心线程独立出来,保证业务繁忙不会影响心跳探活。
1.2.1.2,2020-10-20
新特性
支持共享ContainerPool,客户端所有任务可以共享同一个线程池,大量任务高并发调度情况下大大提高客户端性能和稳定性。
Shade Scala,解决scala冲突的问题。
公有云支持appKey鉴权。
MapReduce模型增强,支持配置是否所有子任务成功才执行Reduce方法。
客户端支持
-Dschedulerx.appKey
设置appKey
。
问题修复
修复广播任务可能会卡住的问题。
修复sls功能的AccessKey ID或AccessKey Secret泄漏的问题。
优化
优化客户端netty线程池。
1.2.0.2,2020-08-19
新特性
支持一个应用10万+任务(只有公有云支持)。
新增客户端日志开关,默认开启。
OpenAPI创建任务,支持设置状态。
去除diamond-client、logger.API和log4j依赖。
问题修复
修复客户端断网演练会和服务端失联的问题。
EDAS应用无法读取AccessKey Secret。
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 AccessKey IDka
,解决接入90%以上JAR包冲突。
问题修复
AppKeys不支持多分组。
1.1.0,2019-12-17
新特性
支持多语言版本的分片模型(类似于
elastic-job
):HTTPS://yq.aliyun.com/articles/739601。OpenAPI创建分组,可以返回AppKey。
成功状态支持重跑,工作流中的任务实例重跑自身及下游。
问题修复
分布式拉模型,全局子任务可能不起作用。
隔离单元环境,如果没有配置Domain,可能还是会启动失败。
优化
Server端性能优化,和客户端通信同步改成异步,并优化了akka默认
dispatcher
的配置。使用1.1.0版本客户端,心跳性能优化提高3倍。
前端任务管理列表重新设计,可以看到更多信息。
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='/'
,任务会卡住的问题。客户端
springContext.getBean
报AnnotationConfigApplicationContext has been closed already
异常。客户端生成的workerId存在小概率重复冲突的问题,造成任务触发到非本应用的机器上。
Spring应用不能自定义
class loader
。秒级别任务广播执行计数器显示不对。
秒级别任务,
jobContext.getScheduleTime
没有跟着循环更新。
1.0.8,2019-08-06
新特性
【重要】重构
JobProcessor.postProcess
接口,增加ProcessResult
返回值,之前用到postProcess
接口需要改代码。广播执行增强,
BroadcastJobProcessor
支持preProcess
和postProcess
。preProcess
会在所有机器执行process
之前执行一次,postProcess
会在所有机器执行process后执行一次。JobContext.getTaskAttempt
可以获取当前子任务重试次数。客户端支持自定义监听端口,例如
SchedulerxWorker.setPort
。Java任务可以实现
JobProcessor
,不必须继承JavaProcessor
。
问题修复
修复
TaskId=1
的子任务不支持子任务自动重试的bug。分布式任务,根任务失败,无法看到失败原因。
并行任务子任务列表不能重试子任务。
1.0.6-compatible,2019-07-02
优化:兼容schedulerx1.0(DTS)
接口的兼容版本。不支持同时依赖schedulerx-client
和schedulerx-worker
两个包,只能依赖schedulerx-worker
一个包,即需要把DTS所有任务迁移到SchedulerX 2.0。
1.0.6,2019-07-02
该版本控制台显示版本号为1.0.4与Maven版本号不一致,请知晓。
新特性
新增部分包的
shade: aliyun-log, commons-validator, gson, fastjson, guava, commons-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分布式编程模型。
支持任务实例级别和子任务级别的失败自动重试(默认不重试)。
支持数据时间和重刷数据。