您现在的位置是:首页 > 编程 > 

MQ如何实现,消息必达到?(第2讲)

2025-07-24 04:14:17
MQ如何实现,消息必达到?(第2讲) 《架构师之路:架构设计中的100个知识点》 2.MQ,消息可达性MQ能不能实现消息必达?要想消息必达,架构设计上有两个核心设计点:1. 消息落地;2. 消息超时、重传、确认;更具体的,要从MQ的架构与流程谈起。MQ的核心架构如何?如上图所示,MQ的核心架构图分为三大块:1. 发送方 -> 左侧粉部分;2. MQ核心集 -> 中间蓝部分;

MQ如何实现,消息必达到?(第2讲)

《架构师之路:架构设计中的100个知识点》 2.MQ,消息可达性

MQ能不能实现消息必达?

要想消息必达,架构设计上有两个核心设计点:

1. 消息落地;

2. 消息超时、重传、确认;

更具体的,要从MQ的架构与流程谈起。

MQ的核心架构如何?

如上图所示,MQ的核心架构图分为三大块:

1. 发送方 -> 左侧粉部分;

2. MQ核心集 -> 中间蓝部分;

. 接收方 -> 右侧黄部分;

粉发送方又由两部分构成:

1. 业务调用方;

2. MQ-client-sender;

其中,后者向前者提供了两个核心API:

SendMsg(bytes[] msg)

SendCallback()

蓝MQ核心集由MQ-server,zk,db,管理后台web等一系列子系统组成。

黄接收方也由两部分构成:

1. 业务接收方;

2. MQ-client-receiver

其中,后者向前者也提供了两个核心API:

RecvCallback(bytes[] msg)

SendAck()

MQ是一个系统间解耦的利器,它能够很好的解除发布订阅者之间的耦合,它将上下游的消息投递解耦成两个部分,如上述架构图中的箭头1和箭头2:

箭头1,上半场:发送方将消息投递给MQ

箭头2,下半场:MQ将消息投递给接收方

MQ既然将消息投递拆成了上下半场,为了保证消息的可靠投递,上下半场都必须尽量保证消息必达。

上半场,消息投递流程如何?

MQ消息投递上半场,流程见上图12:

1. sender将消息发送给MQ-server;

2. MQ-server将消息落地;

. MQ-server回调sender;

上半场,如果消息丢了怎么办?

答:超时与重传。

MQ上半场的12如果丢失或者超时,sender内置的timer会重发消息,直到收到。如果重传次后还未收到,则SendCallback向业务方回调发送失败。

下半场,消息投递流程如何?

MQ消息投递下半场,流程见上图456:

4. MQ-server回调reciever;

5. reciever收到消息,处理业务逻辑,将ACK发送给MQ-server;

6. MQ-server收到ACK,将之前已经落地的消息删除,流程结束;

下半场,如果消息丢了怎么办?

答:还是超时与重传。

MQ下半场的456如果丢失或者超时,MQ-server内置的timer会重发消息,直到收到5并且成功执行6。

上下半场都要超时重发,策略如何?

常见的策略有两种:

1. 定时重发,每隔10秒发一次,直到超出次数;

2. 指数退避,先隔x秒重发,2x秒重发,4x秒重发,以此类推;

总结

1. MQ是系统之间的解耦利器,它能解除消息发送方与接收方的直接耦合;

2. MQ将消息投递解耦成了上下两个半场;

. MQ消息必达,架构上有两个核心设计点:

- 消息落库

- 消息超时、重传、确认

未尽事宜

消息重发可能导致收到重复的消息,如何进行架构幂等性设计,下次撰文另述。

知其然,知其所以然。

思路比结论更重要。

补充阅读材料:

《MQ系统设计》

/

文章不长,可扩展阅读。

==全文完==

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-05,如有侵权请联系 cloudcommunity@tencent 删除设计系统架构设计mq架构

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1193337.html

相关标签:无
上传时间: 2025-07-23 02:24:21
留言与评论(共有 13 条评论)
本站网友 物博会
1分钟前 发表
将之前已经落地的消息删除
本站网友 腰椎病
0秒前 发表
它能解除消息发送方与接收方的直接耦合;2. MQ将消息投递解耦成了上下两个半场;. MQ消息必达
本站网友 北京摇号申请
18分钟前 发表
上下半场都必须尽量保证消息必达
本站网友 智能锁广告事件
23分钟前 发表
确认;更具体的
本站网友 如何补肾
4分钟前 发表
重传
本站网友 活跃度
12分钟前 发表
如果消息丢了怎么办?答:还是超时与重传
本站网友 中国有色金属报
16分钟前 发表
如果重传次后还未收到
本站网友 郑州宇通客车
8分钟前 发表
db
本站网友 保险专题
27分钟前 发表
则SendCallback向业务方回调发送失败
本站网友 番茄的作用
22分钟前 发表
重传
本站网友 武隆酒店网
20分钟前 发表
直到超出次数;2. 指数退避
本站网友 北京外墙清洗公司
15分钟前 发表
每隔10秒发一次