支持任意时延的延迟队列,我们现在准备自己用多级时间轮leveldb,开源版本的rocketmq 在实现,不知道有没有什么更好的思路,除了用 redis zset 和 rabbitmq 以外。
支持任意时延的延迟队列我们现在准备自己用多级时间轮leveldb,开源版本的rocketmq 在实现,不知道有没有什么更好的思路,除了用 redis zset 和 rabbitmq 以外。用来做订单失效、支付网关回调业务接口等场景
时间轮到是一个通用方案,但是需要将队列的任务能持久化恢复,其实可以考虑分布式调度的思路,我把时间轮的数据会持久到表中,当重启的时候会从表中重新加载时间轮的数据,但不用的是时间轮格子中的队列。我是放到表中的,利用时间轮来帮我做定时,利用数据表帮我做持久,但用时间轮也有复杂的情况,就是我的定时有很多种场景,我要定1秒的,要定1分钟的,要定1天的,要定一周的,这种场景,时间轮的算法就复杂的多了,那要分N级了。我做的可以持久化到多个版本,可以持久到redis,也可以放到es,也可以放到mysql,根据并发情况自己决定。还要做到分片和集群的场景,还有客户端多通道的场景,可以有广播,first,random等。这个自己造轮子的话不容易,需要考虑的多些。
来源:云原生后端社区
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。