| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 延迟队列的设计 -> 正文阅读 |
|
[大数据]延迟队列的设计 |
目录 1.延迟队列的使用场景有哪些?????????1.商品订单下单,支付30分钟未支付,订单自动取消 ????????2. 线上约课成功后,10min后,给用户推送短信 2.延迟队列的实现方案有哪些?????????两种 ????????1.使用jdk的DelayQueue实现 ????????缺点:数据没有持久化到磁盘,基于内存的消息队列,服务重启,消息会丢失 。 ????????2.使用消息队列的延迟队列实现 ????????比如rabbitmq 的延迟队列实现 或者 kafka 的延迟队列实现 ????????生产环境需要延迟队列建议使用第二种 3.DelayQueue队列的实现原理是什么?????????底层是优先级队列,把数据存入优先队列按照时间戳进行排序,消费端轮训从队列中取数据,只有当数据的时间大于当前时间才出队,否则不出队列。 4.RabbitMq 的延迟队列的底层实现原理是什么?????????底层是使用TTL和DXL实现的,TTL是消息的存活时间 ,DXL是死信交换队列,消息先绑定一个存活时间,发到延迟消息队里,延迟消息队列中数据过期,会把数据转发到死信队列里,消费者消费死信队列里数据就可以。 ? ? ? ? ?一图胜千言? 业务处理流程如下 5.KAFKA 的延迟队列实现的底层实现是什么?????????kafka 底层延迟队列的实现使用的是时间轮,时间轮是一个环形队列,每一个元素下面是一个循环链表。时间轮是一个存储定时任务的环形队列。钟上的元素都是一个bucket,bucket下面是一个循环链表,指针随时间流逝,一格一个转的转动,转动到哪一个格,执行下面的对应链表的定时任务。 ? ? ? ? 一图胜千言,结构图如下 6.总结????????延迟队列的实现建议使用中间件消息队列,如果没有中间件可以使用DelayQueue实现。 7.参考文献????????1.https://juejin.cn/post/6844904150703013901 ????????2.https://blog.csdn.net/u014618114/article/details/115860726 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:25:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |