全部产品
Search
文档中心

分布式任务调度 SchedulerX:Java SDK

更新时间:Nov 20, 2024

本文介绍SchedulerX产品的Java SDK发布的功能变更,包括新增功能、功能优化、重要问题修复等,帮助您了解SchedulerX的Java SDK发布动态。

2024年

版本

变更类型

功能描述

发布时间

相关文档

1.12.2

优化

  • 修复可视化MapReduce任务安全漏洞。

  • 修复部分akka接口安全漏洞。

2024年11月20日

1.12.1

新功能

  • http agent任务支持自定义线程池大小。

  • 支持自定义schedulerx日志输出logger。

  • 新增@SchedulerX注解,可以和Spring @Scheduled注解同时生效,接管Spring部分定时任务。

2024年10月12日

优化

  • 移除fastjson包,解决安全漏洞。

1.11.5

优化

  • 优化SLS日志的日志输出。

  • 修复多个应用分组读取配置异常时,导致心跳上报互相影响的问题。

  • 优化降低心跳超时异常时,容错重试次数。

2024年06月17日

1.11.4

新功能

JobContext可以获取工作流ID。

2024年03月20日

JobContext参数说明

优化

  • SDK瘦身,去除无用的依赖。

  • 去除SDK无用的Log4j2.xml,防止日志配置冲突。

1.11.1

新功能

支持通过环境变量获取任务参数。

2024年02月20日

新功能

支持通过应用隔离。

问题修复

  • 修复Netty的安全漏洞。

  • 修复Logback的安全漏洞。

  • 修复日志冲突导致SchedulerX框架日志无法显示的问题。

1.10.14

新功能

在业务应用停机之前,等待当前正在执行的任务完成后,再安全地关闭应用,实现发布重启过程中业务无损。

2024年01月02日

如何将任务调度应用优雅下线

新功能

支持配置子任务分发速率。

新功能

支持配置User和Password。

  • spring.schedulerx2.h2DatabaseUser:设置H2内置数据库用户。

  • spring.schedulerx2.h2DatabasePassword:设置H2内置数据库密码。

Spring Boot应用接入SchedulerX

优化

支持按应用分组隔离。

优化

支持按Worker IP排序分发。

优化

  • 支持Spring 4的低版本。

  • Spring任务定时方法支持任意返回值。

Spring任务

优化

  • 避免Spring容器重复初始化时,心跳线程被重复创建。

  • Akka Actor意外终止时,支持自动重启。

问题修复

  • 修复Spring读取不到Processor Bean后,直接返回异常的问题。

  • 修复1.10.x引入的Map任务运行卡住的问题。

  • 修复广播任务的preProcess执行异常后,任务实例无法结束的问题。

  • 修复任务运行实例异常终止时,由于残留线程导致任务运行超时报警的问题。

  • 修复共享线程池模式下,应用刚启动后可能出现任务状态丢失卡住问题。

  • 修复多个应用分组或appKey中存在特殊字符时接入配置加载异常的问题。

  • 修复无法使用可视化Map任务的专业版相关功能问题。

2023年

版本

变更类型

功能描述

发布时间

相关文档

1.9.6

新功能

支持标准模板和自定义模板。

  • 标准模板:可自主修改镜像、镜像拉取策略。

  • 自定义模板:兼容k8s原生内容(schedulerx2-plugin-kubernetes需升级到1.0.5及以上版本)。

2023年07月04日

新功能

Map任务在分发时支持从随机位置开始,需配置参数(默认false):spring.schedulerx2.mapMasterDispatchRandom=true

新功能

Shell任务支持通用系统内置参数。

  • schedule.timestamp(执行调度时间)

  • data.timestamp(调度数据时间)

1.8.13

新功能

执行线程模型调整。

  • 模型切换为非共享线程池模式。

  • 共享线程池模型下共享线程池参数。

    • spring.schedulerx2.shareContainerPool=true:开启共享线程池。

    • spring.schedulerx2.sharePoolSize=32:共享线程池全局大小,默认:64。

    • spring.schedulerx2.sharePoolQueueSize=20480:共享线程池队列大小,默认:Integer.MAX_VALUE。

2023年09月08日

新功能

相关参数如下所示。

  • spring.schedulerx2.broadcastMasterExecEnable=false:主节点是否参与广播任务执行,默认true。

  • spring.schedulerx2.broadcastDispatchRetryTimes=5:广播分发尝试次数。

优化

优化Map任务在应用大规模发布和缩容过程中的性能。

优化

优化应用启动心跳汇报时间点防止业务容器启动过长导致的任务处理长耗时

问题修复

  • 修复共享线程池模式下,任务长时间运行后被拒绝问题。

  • 修复任务状态汇报过程偶现的空指针日志问题。

  • 修复1.7.x版本后出现广播任务线程持续增长问题。

  • 修复共享线程池模式下存在的内存资源泄漏问题。

  • 修复动态代理对象无法执行Reduce问题。

  • 修复秒级别任务执行应答合并丢失问题。

  • 修复Diamond读取环境地址异常问题。

  • 修复对接公有云时存在的心跳超时过长问题。

  • 修复log4j日志格式告警。

  • 修复单机任务分发异常情况下会卡住的问题。

  • 修复新版本不兼容原先ClassName:BeanId的配置模式。

  • 修改Logback单机日志最大文件限制。

2022年

版本

变更类型

功能描述

发布时间

相关文档

1.7.10

新功能

  • 支持Spring原生定时任务集成。

  • 支持全链路追踪能力集成。

2022年08月30日

优化

客户端停机下线快速响应。

问题修复

  • 修复高频任务大量SLS日志输出的内存溢出问题。

  • 修复大量秒级别任务集中运行时出现的延迟问题。

1.6.1

问题修复

修复秒级别广播检测线程CPU偏高的问题。

2022年08月03日

1.6.0

新功能

支持K8s Job调度能力集成。

2022年06月24日

优化

  • Processor处理类兼容配置Spring AOP代理。

  • 对可用Worker监控定时器偶而出现的ERROR日志信息内容进行优化。

  • second_delay任务支持日志采集。

1.5.1.1

新功能

支持开启或关闭日志服务动态生效。

2022年04月19日

问题修复

  • 修复1.5.0.x版本不兼容Spring Boot 2.0.3的问题。

  • 修复1.5.0.x版本可能存在的JobSyncService Bean初始化报错问题。

1.5.0.2

新功能

支持SpringBoot声明式任务定义。命名空间、应用、任务、报警等都可以通过配置文件声明,方便管理应用下的任务。文件声明支持修改,您可以配置在任何环境一键启动应用。

2022年04月01日

Spring Cloud Alibaba定时任务

可视化MapReduce任务(原并行计算),支持子任务级别列表、日志、重跑;支持为子任务自定义标签并且通过标签搜索子任务。

企业级分布式批处理方案

1.4.2

新功能

分布式任务调度系统SchedulerX 2.0的日志服务,您不需要修改一行代码,只需要增加一个Log4j或Logback的配置,即可在控制台看到每次任务调度(包括分布式任务)的业务日志。

2022年03月07日

如何接入日志服务

控制台可以直接查看任务运行的堆栈,方便排查任务卡住的问题,使用时需要您将客户端升级到1.4.0及以上版本。

支持ElasticJob开发的执行器对接。

1.3.4

新功能

  • 支持DataWorks任务。

  • 新增schedulerx2-plugin-xxljob,兼容Xxl-job接口。

2022年01月06日

2021年

版本

变更类型

功能描述

发布时间

相关文档

1.3.2

优化

优化问题:调整默认依赖的log4j2至2.15.0版本。

2021年12月15日

1.3.0.3

新功能

秒级别单机增强:单机秒级别循环支持在不用的实例间分发切换执行,SpringBoot应用配置参数如下:spring.schedulerx2.enableSecondDelayStandaloneDispatch=true(默认false)。

2021年11月26日

优化

客户端停机下线快速响应。

问题修复

  • 修复“客户端对接多个应用分组时运行实例心跳只上报给指定的调度服务”的问题。

  • 修复“秒级别任务偶发的线程异常中断和空指针异常”的问题。

  • 修复“SchedulerX客户端与Spring Cloud集成时会出现任务运行锁死超时”的兼容问题。

  • 修复“广播任务在并发情况下出现执行中断”的问题。

  • 修复“秒级别任务在执行过程中未能定时刷新Worker实例列表”的问题。

  • 修复“秒级别广播任务执行停止指令后,扫描线程未结束”的问题。

  • 修复“秒级别广播任务场景下,大批量Worker按批次发布过程中任务有概率卡住”的问题。

1.2.9.1

问题修复

修复worker与Spring Cloud集成时出现任务运行锁死超时。

2021年08月30日

1.2.9

新功能

秒级别单机增强:单机秒级别循环支持在不同的实例间分发切换执行,配置参数:spring.schedulerx2.enableSecondDelayStandaloneDispatch=true(默认false)。

2021年08月27日

问题修复

修复问题:广播任务在并发情况下出现中断信号,以及worker实例列表未更新。

1.2.8.3

问题修复

修复问题:修复秒级别广播任务执行停止指令后扫描线程未结束。

2021年08月13日

1.2.8.2

问题修复

修复问题:秒级别广播任务大批量worker按批次发布过程中任务运行有概率卡住。

2021年08月06日

1.2.8

新功能

  • 广播任务增强:postProcess可以拿到所有机器执行的状态JobContext.getTaskStatuses()和执行结果JobContext.getTaskResults()

  • 广播分片模型:广播任务可以通过JobContext获取shardingNumsharingId,通过自身机器的index进行数据分布式处理。

  • 分片模型增强:JobContext可以从shardingNum获取所有分片数量。

2021年06月23日

1.2.7

新功能

新增开关,可以关闭的failover功能。

2021年04月28日

问题修复

  • 修复心跳探活失败,可能会导致socket泄漏的问题。

  • 修复MapTask Master在子任务较多的情况下,可能会频繁误failover的问题。

1.2.5.2

新功能

秒级别任务间隔支持到毫秒级别。

2021年04月08日

优化

  • MapReduce模型,root Task固定在master node执行,方便排查问题。

  • 不强依赖log4j2,如果用户使用的是logback,可以把log4j和log4j2依赖移除。

1.2.4.3

新功能

  • 广播任务运行中支持进度汇报。

  • 心跳日志可以通过开关关闭。

2021年01月21日

问题修复

  • 心跳间隔调整为10秒。

  • 修复广播任务可能卡住严重问题。

2020年

版本

变更类型

功能描述

发布时间

相关文档

1.2.3.1

优化

优化客户端负载高会导致任务调度长连接打挂,导致任务无法继续调度的问题。

2020年12月16日

1.2.2.2

新功能

  • 支持容器内采集容器真实CPU使用率。需要增加配置,以starter为例:spring.schedulerx2.enableCgroupMetrics=true,spring.schedulerx2.cgroupPathPrefix=/sys/fs/cgroup/cpu/(非必填,如果容器里有"/sys/fs/cgroup/cpu/"这个路径,可以不用配置,否则修改为真实的cgroup路径)。

  • 支持标签。客户端启动可以自定义打标签,以starter为例:spring.schedulerx2.labels=xxx。任务管理中可以指定机器,可以指定任务跑在某个标签的实例上。适用场景灰度、单元化等。

2020年12月10日

优化

  • 客户端心跳线程和akka核心线程独立出来,保证业务繁忙不会影响心跳探活。

  • 将h2从shade中移除。shade h2可能会导致MySQL驱动加载失败。

1.2.1.2

新功能

  • 支持共享ContainerPool,客户端所有任务可以共享同一个线程池,大量任务高并发调度情况下大大提高客户端性能和稳定性。

  • Shade Scala,解决scala冲突的问题。

  • 公有云支持appKey鉴权。

  • MapReduce模型增强,支持配置是否所有子任务成功才执行Reduce方法。

  • 客户端支持-Dschedulerx.appKey设置appKey

2020年10月20日

优化

优化客户端Netty线程池。

问题修复

  • 修复广播任务可能会卡住的问题。

  • 修复SLS功能的AccessKey ID或AccessKey Secret泄漏的问题。

1.2.0.2

新功能

  • 支持一个应用10万+任务(只有公有云支持)。

  • 新增客户端日志开关,默认开启。

  • OpenAPI创建任务,支持设置状态。

  • 去除diamond-client、logger.API和log4j依赖。

2020年08月19日

问题修复

  • 修复客户端断网演练会和服务端失联的问题。

  • EDAS应用无法读取AccessKey Secret。

1.1.4.RELEASE

新功能

  • 支持自建NameSpace。

  • 支持初始化多个SchedulerxWorker。

  • MapReduce模型增强

  • 子任务失败,也能执行Reduce。

  • JobContext.getTaskStatuses可以判断每个Task的状态,Map<Long, TaskStatus>结构体Key是TaskId,Value是Task的状态。

2020年05月15日

问题修复

  • ProcessResult,result为空,会导致空指针。

  • thread-dispatcher-delivery挂起会导致任务卡住。

1.1.2.RELEASE

新功能

shade protobuf and netty from AccessKey IDka,解决接入90%以上JAR包冲突。

2020年02月10日

优化

AppKeys不支持多分组。

2019年

版本

变更类型

功能描述

发布时间

相关文档

1.1.0

新功能

2019年12月17日

优化

  • Server端性能优化,将和客户端通信同步改成异步,并优化了akka默认的dispatcher配置。

  • 使用1.1.0版本客户端,心跳性能优化提高3倍。

  • 前端任务管理列表重新设计,可以看到更多信息。

问题修复

  • 修复分布式拉模型,全局子任务可能不起作用。

  • 修复隔离单元环境,如果没有配置Domain,可能还是会启动失败。

1.0.9

新功能

  • 增加BlockAppStart配置。表示Schedulerx启动失败是否block应用程序启动,默认true

  • 新增查询工作流运行状态接口。接口为GetWorkflowInstanceRequest

  • JobContext上下文新增jobName字段。这样用户可以在运行期间获取到任务名称。

2019年11月28日

问题修复

  • 通过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

新功能

  • 【重要】重构JobProcessor.postProcess接口,增加ProcessResult返回值,之前用到postProcess接口需要改代码。

  • 广播执行增强,BroadcastJobProcessor支持preProcesspostProcesspreProcess会在所有机器执行process之前执行一次,postProcess会在所有机器执行process后执行一次。

  • JobContext.getTaskAttempt可以获取当前子任务重试次数。

  • 客户端支持自定义监听端口,例如SchedulerxWorker.setPort

  • Java任务可以实现JobProcessor,不必须继承JavaProcessor

2019年08月06日

问题修复

  • 修复TaskId=1的子任务不支持子任务自动重试的bug。

  • 分布式任务,根任务失败,无法看到失败原因。

  • 并行任务子任务列表不能重试子任务。

1.0.6-compatible

优化

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

2019年07月02日

1.0.6

新功能

  • 新增部分包的shade: aliyun-log, commons-validator, gson, fastjson, guava, commons-collections

  • 通过ProcessResult(false, errorMsg)返回,前端日志也能看到errorMsg

优化

  • 优化at-least-once-delivery性能。

  • 高负载场景下,消息重复发送会造成秒级任务卡住或应用线程被Interrupt。

2019年07月02日

说明

该版本控制台显示版本号为1.0.4与Maven版本号不一致,请知晓。

问题修复

  • 广播任务卡主问题。

  • 秒级任务卡主问题。

  • at-least-once-delivery可能会导致子任务状态无限重试。

  • logcollector初始化失败,异常抛出来,启动失败。

  • DB清理工作流任务实例,导致工作流无法恢复调度问题。

  • Spring方式启动,不支持kill。

1.0.3

新功能

  • MapReduce模型支持返回所有子任务的结果,由Reduce处理。

  • 分布式模型支持拉模型,解决因为单机性能引起的木桶效应,支持动态扩容拉子任务。

  • 拉模型支持全局子任务并发度,可以进行限流。

  • JobContext增加wfInstanceId

  • 客户端启动失败抛出异常,堵塞JVM启动,尽早发现问题。

  • 客户端启动时会打印mvn依赖JAR的版本和路径,帮助排查JAR包冲突。

  • 分布式模型子任务详情,增加队列维度,可以看到每台机器缓存的子任务队列。

2019年06月06日

问题修复

  • Worker因为server负载高被误guarantined,可以自动恢复,无需重启客户端。

  • 分布式模型子任务详情,运行中可以真实显示每台机器正在运行的子任务数。

  • Master节点挂了,server会负责清理slave节点的资源,防止内存泄漏。

1.0.0

新功能

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

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

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

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

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

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

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

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

2019年04月30日