数据被重复处理了三次,查出来三台机器都配了同一个 cron。
这类问题在多机部署时很常见。
解法按可靠性排:
- 分布式锁(Redis SETNX),任务开始抢锁,抢不到就跳过
- 单独一台机器跑定时任务,其他机器不配
- 数据库唯一约束兜底,重复处理也不产生重复数据
推荐 1+3 组合。锁防重复执行,唯一约束防漏网。
第 2 种最简单,但机器挂了任务就停了,需要额外的存活监控。
现在我的习惯:任何定时任务上线前先问「部署几台,会不会重复」。
主楼- 暂无回复
继续逛逛
数据被重复处理了三次,查出来三台机器都配了同一个 cron。
这类问题在多机部署时很常见。
解法按可靠性排:
推荐 1+3 组合。锁防重复执行,唯一约束防漏网。
第 2 种最简单,但机器挂了任务就停了,需要额外的存活监控。
现在我的习惯:任何定时任务上线前先问「部署几台,会不会重复」。