关注
场景设计:系统中有几万个任务需要在各自的特定时刻触发执行,怎么做?
1. 使用定时任务队列(如Redis的List或数据库表)
- 将每个任务的执行时间和具体业务编码保存在队列中
- 有定时任务扫描队列,获取将要执行的任务
- 注册Cron作业定时扫描队列触发任务
2. 使用延迟队列(如Kafka、RabbitMQ)
- 将(任务,执行时间)作为消息生产到队列
- 消费者订阅队列消息,判断时间是否到达后执行任务
3. Redis计数器+Sorted Set
- 将(任务,执行时间)保存在Sorted Set
- 注册服务保持查询Sorted Set,执行将到期的任务
- 使用计数器避免并发执行同一任务
4. 数据库交易表+定期扫描
- 表列存储(任务,执行时间)
- 定期扫表(如每分钟)执行将到期的任务
- 加TXIsolation避免重复执行
5. 分布式作业调度系统
如Apache Storm/Spark网络拓扑,简化触发逻辑。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 什么是优秀的实习经历 #
8037次浏览 205人参与
# 担心入职之后被发现很菜怎么办 #
266086次浏览 1131人参与
# 被上班搭子“传染”了哪些习惯 #
5281次浏览 97人参与
# 投格力的你,拿到offer了吗? #
152248次浏览 813人参与
# 工作后,你落下了哪些病根 #
12936次浏览 182人参与
# 作业帮求职进展汇总 #
82662次浏览 543人参与
# 京东美团大战,你怎么看? #
157947次浏览 859人参与
# 实习简历求拷打 #
10979次浏览 142人参与
# 如果今天是你的last day,你会怎么度过? #
58884次浏览 324人参与
# 秋招被挂春招仍然能投的公司 #
6445次浏览 94人参与
# mt对你说过最有启发的一句话 #
34716次浏览 418人参与
# 为了找工作你花了哪些钱? #
74784次浏览 359人参与
# 机械人晒出你的简历 #
146411次浏览 874人参与
# 嵌入式岗知多少 #
62964次浏览 555人参与
# 摸鱼被leader发现了怎么办 #
100453次浏览 640人参与
# 考研失败就一定是坏事吗? #
200664次浏览 1369人参与
# 秋招特别不鸣谢 #
15340次浏览 175人参与
# 2023毕业生求职有问必答 #
218583次浏览 1662人参与
# 选实习,你更看重哪方面? #
13630次浏览 214人参与
# 牛客十周岁生日快乐 #
197795次浏览 1895人参与