切换深色模式
延时任务:选型与复盘
阅读来源:MirrorML 《延时任务方案设计》。以下为简短导读和新增复习问题,不是原文全文。
阅读摘要
原文从活动状态切换和次日结算出发,讨论数据库轮询的成本、多实例争抢,以及 Redis、延时消息、时间轮和分片处理等方案。阅读时应先区分实时触发与批量处理,再比较故障恢复方式。
先把需求写清楚
以下为本知识库建议的复习表。先填业务要求,再对照原文评估方案。
| 维度 | 需要回答的问题 |
|---|---|
| 时效 | 允许晚执行多久?如何衡量? |
| 规模 | 待执行总量和到期峰值分别是多少? |
| 恢复 | 进程退出后,未完成任务在哪里找到? |
| 重复 | 同一任务执行两次,业务结果会怎样? |
| 取消 | 任务修改或撤销后,旧任务怎么识别? |
设计一次故障演练
选定一个方案后,分别在“领取后、执行中、完成但未确认”三个时刻终止进程。观察任务是否被重新发现,并记录是否产生重复业务结果。
这里提供的是演练题目,尚未在本项目实现任务服务或执行实验。
自测
- 为什么选这个方案?依据是时效、吞吐还是维护成本?
- 任务已经过期但一直未完成,如何发现?
- 扩容时,如何验证没有漏掉任务?
继续阅读:后端与分布式。