调度任务漏执行补偿:服务宕机重启后,自动补跑错过的定时任务!
在分布式系统中,定时任务是保障业务稳定运行的重要组成部分。然而,服务宕机、网络抖动、部署升级等情况都可能导致定时任务漏执行,从而引发数据不一致、业务异常等问题。 服务宕机重启后,发现日终任务没执行 凌晨的批处理任务,因为网络抖动漏跑了 升级部署时,正好错过了重要任务 手工补数据麻烦,容易出错 今天,我们来探讨如何构建一个调度任务漏执行补偿机制,实现服务宕机重启后自动补跑错过的定时任务。 问题背景 定时任务漏执行的常见场景 ┌─────────────────────────────────────────────────────────────┐ │ 定时任务漏执行的常见场景: │ │ │ │ 1. 服务宕机:服务突然崩溃,任务正在执行一半就中断 │ │ 2. 网络抖动:网络短暂断开,调度中心无法正常通信 │ │ 3. 部署升级:滚动发布时,部分实例任务被中断 │ │ 4. JVM Full GC:GC 停顿过长,错过任务触发时间 │ │ 5. 时钟回拨:服务器时钟回拨,导致任务触发时间判断错误 │ │ │ │ 后果: │ │ - 数据统计不完整 │ │ - 对账差异 │ │ - ....