ElasticJob(Springboot 分布式定时任务 ElasticJob)

ElasticJob-Lite3.0提供了失效转移和错过任务重执行功能,旨在提升作业实时性。失效转移在作业执行节点宕机时补偿执行未完成的任务,而错过任务重执行确保长时间运行的作业能及时执行逾期任务。这两种机制适用于间隔较长的作业场景,以保证作业的连续性和正确性。然而,对于短间隔作业,可能增加网络通信负担,故需谨慎使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticJob-Lite 3.0 配置和使用——中文官方文档

https://shardingsphere.apache.org/elasticjob/current/cn/overview/

ElasticJob > 概念 & 功能 > 失效转移

ElasticJob 不会在本次执行过程中进行重新分片,而是等待下次调度之前才开启重新分片流程。 当作业执行过程中服务器宕机,失效转移允许将该次未完成的任务在另一作业节点上补偿执行。

概念

失效转移是当前执行作业的临时补偿执行机制,在下次作业运行时,会通过重分片对当前作业分配进行调整。 举例说明,若作业以每小时为间隔执行,每次执行耗时 30 分钟。如下如图所示。

图中表示作业分别于 12:00,13:00 和 14:00 执行。图中显示的当前时间点为 13:00 的作业执行中。

如果作业的其中一个分片服务器在 13:10 的时候宕机,那么剩余的 20 分钟应该处理的业务未得到执行,并且需要在 14:00 时才能再次开始执行下一次作业。 也就是说,在不开启失效转移的情况下,位于该分片的作业有 50 分钟空档期。如下如图所示。

在开启失效转移功能之后,ElasticJob 的其他服务器能够在感知到宕机的作业服务器之后,补偿执行该分片作业。如下图所示。

在资源充足的情况下,作业仍然能够在 13:30 完成执行。

执行机制

当作业执行节点宕机时,会触发失效转移流程。ElasticJob 根据触发时的分布式作业执行的不同状况来决定失效转移的执行时机。

通知执行

当其他服务器感知到有失效转移的作业需要处理时,且该作业服务器已经完成了本次任务,则会实时的拉取待失效转移的分片项,并开始补偿执行。 也称为实时执行。

问询执行

作业服务在本次任务执行结束后,会向注册中心问询待执行的失效转移分片项,如果有,则开始补偿执行。 也称为异步执行。

适用场景

开启失效转移功能,ElasticJob 会监控作业每一分片的执行状态,并将其写入注册中心,供其他节点感知。

在一次运行耗时较长且间隔较长的作业场景,失效转移是提升作业运行实时性的有效手段; 对于间隔较短的作业,会产生大量与注册中心的网络通信,对集群的性能产生影响。 而且间隔较短的作业并未见得关注单次作业的实时性,可以通过下次作业执行的重分片使所有的分片正确执行,因此不建议短间隔作业开启失效转移。

另外需要注意的是,作业本身的幂等性,是保证失效转移正确性的前提。

————————————————————————————————————————

ElasticJob > 概念 & 功能 > 错过任务重执行

ElasticJob 不允许作业在同一时间内叠加执行。 当作业的执行时长超过其运行间隔,错过任务重执行能够保证作业在完成上次的任务后继续执行逾期的作业。

概念

错过任务重执行功能可以使逾期未执行的作业在之前作业执行完成之后立即执行。 举例说明,若作业以每小时为间隔执行,每次执行耗时 30 分钟。如下如图所示。

图中表示作业分别于 12:00,13:00 和 14:00 执行。图中显示的当前时间点为 13:00 的作业执行中。

如果 12:00 开始执行的作业在 13:10 才执行完毕,那么本该由 13:00 触发的作业则错过了触发时间,需要等待至 14:00 的下次作业触发。 如下如图所示。

在开启错过任务重执行功能之后,ElasticJob 将会在上次作业执行完毕后,立刻触发执行错过的作业。如下图所示。

在 13:00 和 14:00 之间错过的作业将会重新执行。

适用场景

在一次运行耗时较长且间隔较长的作业场景,错过任务重执行是提升作业运行实时性的有效手段; 对于未见得关注单次作业的实时性的短间隔的作业来说,开启错过任务重执行并无必要。

————————————————————————————————————

注册中心配置项

可配置属性

属性名

类型

缺省值

描述

serverLists

String

连接 ZooKeeper 服务器的列表

namespace

String

ZooKeeper 的命名空间

baseSleepTimeMilliseconds

int

1000

等待重试的间隔时间的初始毫秒数

maxSleepTimeMilliseconds

String

3000

等待重试的间隔时间的最大毫秒数

maxRetries

String

3

最大重试次数

sessionTimeoutMilliseconds

boolean

60000

会话超时毫秒数

connectionTimeoutMilliseconds

boolean

15000

连接超时毫秒数

digest

String

无需验证

连接 ZooKeeper 的权限令牌

核心配置项说明

serverLists:

包括 IP 地址和端口号,多个地址用逗号分隔,如: host1:2181,host2:2181

作业配置项

可配置属性

属性名

类型

缺省值

描述

jobName

String

作业名称

shardingTotalCount

int

作业分片总数

cron

String

CRON 表达式,用于控制作业触发时间

timeZone

String

CRON 的时区设置

shardingItemParameters

String

个性化分片参数

jobParameter

String

作业自定义参数

monitorExecution

boolean

true

监控作业运行时状态

failover

boolean

false

是否开启任务执行失效转移

misfire

boolean

true

是否开启错过任务重新执行

maxTimeDiffSeconds

int

-1(不检查)

最大允许的本机与注册中心的时间误差秒数

reconcileIntervalMinutes

int

10

修复作业服务器不一致状态服务调度间隔分钟

jobShardingStrategyType

String

AVG_ALLOCATION

作业分片策略类型

jobExecutorServiceHandlerType

String

CPU

作业线程池处理策略

jobErrorHandlerType

String

作业错误处理策略

description

String

作业描述信息

props

Properties

作业属性配置信息

disabled

boolean

false

作业是否禁止启动

overwrite

boolean

false

本地配置是否可覆盖注册中心配置

核心配置项说明

shardingItemParameters:

分片序列号和参数用等号分隔,多个键值对用逗号分隔。 分片序列号从0开始,不可大于或等于作业分片总数。 如:0=a,1=b,2=c

jobParameter:

可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业 例:每次获取的数据量、作业实例从数据库读取的主键等。

monitorExecution:

每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率。 因为是瞬时状态,所以无必要监控。请用户自行增加数据堆积监控。并且不能保证数据重复选取,应在作业中实现幂等性。 每次作业执行时间和间隔时间均较长的情况,建议监控作业运行时状态,可保证数据不会重复选取。

maxTimeDiffSeconds:

如果时间误差超过配置秒数则作业启动时将抛异常。

reconcileIntervalMinutes:

在分布式的场景下由于网络、时钟等原因,可能导致 ZooKeeper 的数据与真实运行的作业产生不一致,这种不一致通过正向的校验无法完全避免。 需要另外启动一个线程定时校验注册中心数据与真实作业状态的一致性,即维持 ElasticJob 的最终一致性。

配置为小于 1 的任意值表示不执行修复。

jobShardingStrategyType:

详情请参见内置分片策略列表

jobExecutorServiceHandlerType:

详情请参见内置线程池策略列表

jobErrorHandlerType:

详情请参见内置错误处理策略列表

props:

详情请参见作业属性配置列表

disabled:

可用于部署作业时,先禁止启动,部署结束后统一启动。

overwrite:

如果可覆盖,每次启动作业都以本地配置为准。

作业监听器配置项

常规监听器配置项

可配置属性:无

分布式监听器配置项

可配置属性

属性名

类型

缺省值

描述

started-timeout-milliseconds

long

Long.MAX_VALUE

最后一个作业执行前的执行方法的超时毫秒数

completed-timeout-milliseconds

long

Long.MAX_VALUE

最后一个作业执行后的执行方法的超时毫秒数

事件追踪配置项

可配置属性

属性名

类型

缺省值

描述

type

String

事件追踪存储适配器类型

storage

泛型

事件追踪存储适配器对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值