关注
场景设计:系统中有几万个任务需要在各自的特定时刻触发执行,怎么做?
1. 使用定时任务队列(如Redis的List或数据库表)
- 将每个任务的执行时间和具体业务编码保存在队列中
- 有定时任务扫描队列,获取将要执行的任务
- 注册Cron作业定时扫描队列触发任务
2. 使用延迟队列(如Kafka、RabbitMQ)
- 将(任务,执行时间)作为消息生产到队列
- 消费者订阅队列消息,判断时间是否到达后执行任务
3. Redis计数器+Sorted Set
- 将(任务,执行时间)保存在Sorted Set
- 注册服务保持查询Sorted Set,执行将到期的任务
- 使用计数器避免并发执行同一任务
4. 数据库交易表+定期扫描
- 表列存储(任务,执行时间)
- 定期扫表(如每分钟)执行将到期的任务
- 加TXIsolation避免重复执行
5. 分布式作业调度系统
如Apache Storm/Spark网络拓扑,简化触发逻辑。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java 
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届的你,投了哪些公司? #
15853次浏览 197人参与
# 我对___祛魅了 #
26238次浏览 263人参与
# 中兴秋招 #
193582次浏览 2164人参与
# 你最讨厌面试问你什么? #
10792次浏览 167人参与
# 你跟室友的关系怎么样? #
2867次浏览 59人参与
# 工作中哪个瞬间让你想离职 #
44770次浏览 396人参与
# 简历上的经历如何包装 #
10449次浏览 325人参与
# 你遇到最难的面试题目是_ #
3787次浏览 77人参与
# 如何快速融入团队? #
9410次浏览 119人参与
# 和同事相处最忌讳的是__ #
12743次浏览 136人参与
# 通信/硬件求职避坑tips #
85941次浏览 868人参与
# 什么样的背景能拿SSP? #
14755次浏览 122人参与
# 毕业后不工作的日子里我在做什么 #
190152次浏览 1633人参与
# 应届生应该先就业还是先择业 #
124769次浏览 695人参与
# 字节跳动工作体验 #
458205次浏览 4625人参与
# 如何排解工作中的焦虑 #
190459次浏览 1958人参与
# 多益网络求职进展汇总 #
30913次浏览 137人参与
# 总结:哪家公司面试体验感最差 #
63144次浏览 286人参与
# 元戎启行求职进展汇总 #
35904次浏览 276人参与
# 我和mentor的爱恨情仇 #
61730次浏览 377人参与
# 实习生活中那些难忘的瞬间 #
163767次浏览 2438人参与