开发者社区> 问答> 正文

支持任意时延的延迟队列,我们现在准备自己用多级时间轮leveldb

支持任意时延的延迟队列,我们现在准备自己用多级时间轮leveldb,开源版本的rocketmq 在实现,不知道有没有什么更好的思路,除了用 redis zset 和 rabbitmq 以外。
支持任意时延的延迟队列我们现在准备自己用多级时间轮leveldb,开源版本的rocketmq 在实现,不知道有没有什么更好的思路,除了用 redis zset 和 rabbitmq 以外。用来做订单失效、支付网关回调业务接口等场景

展开
收起
Atom 2020-04-25 14:57:13 1314 0
1 条回答
写回答
取消 提交回答
  • 时间轮到是一个通用方案,但是需要将队列的任务能持久化恢复,其实可以考虑分布式调度的思路,我把时间轮的数据会持久到表中,当重启的时候会从表中重新加载时间轮的数据,但不用的是时间轮格子中的队列。我是放到表中的,利用时间轮来帮我做定时,利用数据表帮我做持久,但用时间轮也有复杂的情况,就是我的定时有很多种场景,我要定1秒的,要定1分钟的,要定1天的,要定一周的,这种场景,时间轮的算法就复杂的多了,那要分N级了。我做的可以持久化到多个版本,可以持久到redis,也可以放到es,也可以放到mysql,根据并发情况自己决定。还要做到分片和集群的场景,还有客户端多通道的场景,可以有广播,first,random等。这个自己造轮子的话不容易,需要考虑的多些。
    来源:云原生后端社区

    2020-04-25 14:57:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载