MQ不丢消息究竟是怎么实现的
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章为大家展示了MQ不丢消息究竟是怎么实现的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。通过消息队列(MsgQueue,MQ)发送任务和消息,万一MQ重
千家信息网最后更新 2025年01月23日MQ不丢消息究竟是怎么实现的
通过消息队列(MsgQueue,MQ)发送任务和消息,万一MQ重启了怎么办?能否保证MQ不丢消息? 今天就聊聊MQ的消息必达性架构与流程。 不丢消息,MQ架构设计的核心方向是什么? MQ要想消息必达,架构上有两个核心设计点: (1)消息落地; (2)消息超时、重传、确认;
为了实现上述两个核心点,MQ架构如何? 上图是一个MQ的核心架构图,可以分为三大块: (1)发送方 -> 左侧粉色部分; (2)MQ核心集群 -> 中间蓝色部分; (3)接收方 -> 右侧屎黄色部分;
粉色发送方又由两部分构成: (1)业务调用方; (2)MQ-client-sender; 其中后者向前者提供了两个核心API:
黄色接收方也由两部分构成: (1)业务接收方; (2)MQ-client-receiver; 其中后者向前者提供了两个核心API: 箭头1:发送方将消息投递给MQ,上半场; 箭头2:MQ将消息投递给接收方,下半场;
MQ消息可靠投递核心流程如何? MQ既然将消息投递拆成了上下半场,为了保证消息的可靠投递,上下半场都必须保证消息必达。 MQ消息投递上半场,MQ-client-sender到MQ-server流程见上图1-3: (1)MQ-client将消息发送给MQ-server; 画外音:此时业务方调用API:SendMsg。 (2)MQ-server将消息落地,落地后即为发送成功; (3)MQ-server将应答发送给MQ-client; 画外音:此时回调业务API:SendCallback。
MQ消息投递下半场,MQ-server到MQ-client-receiver流程见上图4-6: (4)MQ-server将消息发送给MQ-client; 画外音:此时回调业务API:RecvCallback。 (5)MQ-client回复应答给MQ-server; 画外音:此时业务方主动调用API:SendAck。 (6)MQ-server收到ack,将之前已经落地的消息删除,完成消息的可靠投递;
如果消息丢了怎么办? MQ消息投递的上下半场,都可以出现消息丢失,为了保证消息可达性,MQ需要进行超时和重传。
上半场如何实施超时与重传? MQ上半场的1或者2或者3如果丢失或者超时,MQ-client-sender内的timer会重发消息,直到期望收到3,如果重传N次后还未收到,则SendCallback回调发送失败,需要注意的是,这个过程中MQ-server可能会收到同一条消息的多次重发。
下半场如何实施超时与重传? MQ下半场的4或者5或者6如果丢失或者超时,MQ-server内的timer会重发消息,直到收到5并且成功执行6,这个过程可能会重发很多次消息。 画外音:一般采用指数退避的策略,先隔x秒重发,2x秒重发,4x秒重发,以此类推。 需要注意的是,这个过程中MQ-client-receiver也可能会收到同一条消息的多次重发。 MQ是系统之间的解耦利器,MQ为了保证消息必达,架构设计方向为: (1)消息收到先落地; (2)消息超时、重传、确认保证消息必达;
本篇文章为大家展示了MQ不丢消息究竟是怎么实现的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
(1)SendMsg(bytes[] msg);
(2)SendCallback();
蓝色MQ核心集群又分为四个部分:
(1)MQ-server
(2)zk;
(3)db;
(4)管理后台web;
(1)RecvCallback(bytes[] msg);
(2)SendAck();
MQ是一个系统间解耦的利器,它能够很好的解除发布订阅者之间的耦合,它将上下游的消息投递解耦成两个部分,如架构图中的1箭头和2箭头:
上述内容就是MQ不丢消息究竟是怎么实现的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
消息
核心
架构
业务
部分
保证
两个
画外音
必达
落地
上半场
收方
流程
箭头
上下
上图
解耦
过程
设计
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如皋青软软件开发培训
奉贤区企业金融网络技术服务
服务器线路管理
计算机网络安全论文概述
浪潮服务器没有网络
澳门网络安全法法规
徐汇区共享存储服务器
书店管理系统数据库
百信云龙服务器厂家
网络安全相关常识
C 计算机软件开发招聘
网信网络安全管理
b2b数据库设计规范
软件开发员应聘
网络安全要求是什么
西安系统软件开发
.net在学什么软件开发
网络安全法的主要目
武汉大学网络安全学院教材
数据库连接和编程步骤
社区服务器挖矿
网络安全师岗位说明
运城网络技术团队
微软软件开发比赛
阿里云服务器修改用户数据
长城服务器代理
pg数据库查询快捷键
新软件开发的瓶颈
服务器安全狗页面认证
哪些主板可以插服务器内存