当一个系统有 20 个定时任务

一开始只跑三五个 cron,谁都觉得无所谓。直到某天翻日志:超时、重叠、漏跑、时区错乱,一起找上门。二十个任务像二十个闹钟,差一个没听见,全盘乱套。

我的心得是三件事:集中看隔离跑静默守。集中看,是把所有 cron 写在一份配置里,别散落在各台机器;隔离跑,是给长任务加分布式锁,避免同分钟被多个实例并发触发;静默守,是失败重试要有上限,告警分级,而不是全部咆哮进同一个群。

定时任务越多,越要相信“少即是稳”。把可合并的合并,可异步的异步,可事件驱动的就别用 cron。二十个任务真正值得保留的,往往不到一半。

cron 的尽头,是把时间当成另一种输入信号,而不是系统的中心。