本章节介绍了SchedulerX客户端的发布记录及相关的功能。
1.2.3,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。
- 支持容器内采集容器真实CPU使用率,需要增加配置。
- 优化
客户端心跳线程和akka核心线程独立出来,保证业务繁忙不会影响心跳探活。
- 问题修复
把h2从shade中移除。shade h2可能会导致MySQL驱动加载失败。
1.2.1.2,2020-10-20
- 新特性
- 支持共享containerPool,客户端所有任务可以共享同一个线程池,大量任务高并发调度情况下大大提高客户端性能和稳定性。
- 支持Shade Scala,解决scala冲突的问题。
- 公有云支持appKey鉴权。
- MapReduce模型增强,支持配置是否所有子任务成功才执行Reduce方法。
- 客户端支持-Dschedulerx.appKey设置appKey。
- 优化
优化客户端Netty线程池。
- 问题修复
- 修复广播任务可能会卡住的问题。
- 修复SLS AK/SK泄漏的问题。
1.2.0.2, 2020-08-19
- 新特性
- 支持一个应用10万+任务(仅公共云支持)。
- 新增客户端日志开关,默认开启。
- OpenAPI创建任务,支持设置状态。
- 去除diamond-client、logger.api和log4j依赖。
- 问题修复
- 修复客户端断网演练会和服务端失联的bug。
- 修复在EDAS中部署的应用读不到AccessKey的bug。
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
支持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
- 新特性
- 新增部分包的
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分布式编程模型。
- 支持任务实例级别和子任务级别的失败自动重试(默认不重试)。
- 支持数据时间和重刷数据。
在文档使用中是否遇到以下问题
更多建议
匿名提交