历史记录

更新时间: 2022-02-24 11:36:13

本文介绍了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获取shardingNumsharingId,通过自己机器的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.getBeanAnnotationConfigApplicationContext has not been refreshed yet异常。

  • 修复任务实现类配置错误的情况下会触发Spring Boot的ServeletWebServer停止的逻辑,导致业务进程在,但是Web服务被shutdown问题。

  • 修复系统启动变量user.dir='/',任务会卡住的问题。

  • 客户端springContext.getBeanAnnotationConfigApplicationContext 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

说明

该版本控制台显示版本号为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

新特性

  • 支持crontabfixed_rate表达式进行周期性定时调度。

  • 支持工作流调度,进行流程编排。

  • 支持second_delay表达式进行秒级别调度。

  • 支持Java、Shell、Python、Go任务类型。

  • 支持单机执行、广播执行、并行计算、内存网格、网格计算。

  • 支持Map和MapReduce分布式编程模型。

  • 支持任务实例级别和子任务级别的失败自动重试(默认不重试)。

  • 支持数据时间和重刷数据。

阿里云首页 企业级分布式应用服务 相关技术圈