任务不断失败重试导致雪崩效应

本文探讨了在使用消息中间件或定时任务处理数据时可能出现的雪崩效应,即因任务不断重试导致系统崩溃的问题。分析了问题产生的原因和影响,并提出了一种解决方案:结合任务的重试次数,对重试时间进行非线性处理,避免资源占用和系统崩溃。具体策略是在任务重试间隔时间上应用数学公式,使重试间隔从常数逐渐变为非线性增长,从而优雅地解决此问题。
摘要由CSDN通过智能技术生成

 

大家在开发工程中,一般都使用过类似Mq的消息中间件产品,或者自己开发处理数据的定时任务。

它们一般的流程都是:每隔一段时间,去数据库获取有效的任务,然后执行,执行完成之后,删除任务或者将任务设置为失效。

那么这就可能存在一个潜在的风险:“雪崩效应”

试想一下如下场景:我有个定时任务,每隔1s去数据库获取最早创建的并且有效的任务,然后执行任务。之所以获取最早创建的,是因为如果获取最新的任务,那么旧的任务可能就一直没机会执行了。

如果这个任务有问题,执行失败了,就会导致上游调度系统不断的获取到这条问题任务,不断的进行重试。

这会导致两个问题,第一,这个问题任务会一直占用计算资源,影响其他任务的正常执行。第二点,如果重试间隔时间很短,这个任务会产生雪崩效应,导致系统崩溃。

那么我们怎么避免呢?

最暴力的方法当然是,获取任务不是获取最早创建的,而是采用随机的方式。

但是,一般来说,我们还是希望任务能够尽量的顺序执行的,只是不希望被这样的问题任务给

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值