定时任务的幂等性

分布式集群下如何保证定时任务的幂等性(只有一个执行)

1. 采用分布式锁
2. 将业务代码与定时任务分开在不同的jar
3.通过启动参数 设置定时任务开关 :-DRunOrderExpire=true 控制当前Jar任务是否执行 如果配置了 你就执行定时任务
4. 通过对Id取模让不同的集群节点处理不同的数据行:

例如:集群中3个节点 Node1 modIndex = 1 Node2 modIndex = 2 Node3 modIndex = 3
(id % 3 ) + 1 = modIndex

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xxl-job 是一个分布式任务调度平台,为了保证任务的正确和可靠,需要保证任务。 在 xxl-job 中,可以通过如下方式设置任务: 1. 任务使用状态机进行控制:对于需要保证等的任务,可以使用状态机进行控制。例如,在任务执行前,将任务状态设置为“进行中”,任务执行过程中,可以通过定时轮询的方式检查任务状态,防止任务重复执行。任务执行完成后,将任务状态设置为“已完成”,并记录任务执行结果。 2. 任务执行前先查询数据库:对于需要保证等的任务,可以在执行任务前先查询数据库,判断是否已经执行过该任务。如果已经执行过,则直接返回执行结果;如果未执行,则执行任务并记录任务执行结果。 3. 使用分布式锁机制:对于需要保证等的任务,可以使用分布式锁机制来保证同一个任务只会被一个执行器执行。例如,可以使用Redis实现分布式锁。 4. 增加字段进行控制:对于需要保证等的任务,可以在任务执行前先查询数据库,判断是否已经执行过该任务。如果已经执行过,则直接返回执行结果;如果未执行,则执行任务并在数据库中增加字段进行控制。例如,在执行任务时,可以增加一个“执行次数”字段,每次执行任务时将该字段加一,当执行次数等于一定值时,任务不再执行。 以上是 xxl-job 中设置任务的一些方法,可以根据具体的应用场景选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值