登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
业界
›
从同步耦合到异步解耦:消息中间件如何重塑系统间的通信 ...
从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?
[ 复制链接 ]
归悦可
2025-11-12 01:30:11
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
当成百上千的服务需要相互协作时,它们之间的通信模式变得至关重要。如果服务间采用紧密耦合的同步调用,一个服务的延迟或故障,就可能引发连锁反应,导致系统性的“雪崩”。
消息中间件正是为了打破这种刚性依赖而生。它在服务之间建立了一个异步的通信渠道,通常是一个消息队列。生产者服务只需将任务(即“消息”)投递到队列中便可完成工作,而无需等待消费者服务的实时响应。
使用场景
消息中间件常见的使用场景,包括不限于解耦、有序性、异步处理、削峰填谷等。
解耦
在一个电商系统中,用户下单后,订单系统通常需要直接调用库存系统来减少库存。但是,如果库存系统有问题或延迟,订单系统也会受影响,导致用户下单失败或延迟。
使用消息中间件,订单系统在用户下单后只需发送一条消息,然后立即回应用户。库存系统会从消息中间件获取消息并处理。这样,即使库存系统有问题,订单系统也不会受影响。
有序性
在一个银行系统中,用户的转账操作可以被视为一个消息,包含转账金额和目标账户。这些消息的顺序很重要,因为需要保证转账的顺序与用户的操作顺序相同。
使用消息中间件,可以把每次转账操作作为一个消息发送出去。消息中间件能确保消息的顺序,也就是先发送的消息先处理,后发送的消息后处理。这样,用户的转账操作顺序就能得到保证。
异步处理
在一个在线服务平台中,用户登录后,系统需要做一些操作,如更新登录时间,发送欢迎邮件,生成登录日志等。如果这些操作同时进行,可能会让用户等待时间变长,影响体验。
使用消息中间件,用户登录成功后,系统可以立即回应用户,然后把需要做的操作作为消息发送出去。后台服务会从消息中间件获取消息,然后异步处理。
削峰填谷
在一个电商网站的大促销活动中,用户访问和订单量会激增,这就是"流量峰值"。如果系统直接处理这些请求,可能会因负载过大而崩溃,所以需要"削峰",即平滑处理这些请求。
使用消息中间件,用户下单时,系统可以将订单作为消息发送出去,然后立即回应用户。后台服务会从消息中间件获取消息,然后处理订单。这样,即使短时间内订单量大,也不会直接冲击到订单处理服务,实现了"削峰"。
另外,在流量低的时候,如深夜,订单处理服务可能会闲置。这时,如果有未处理的订单在消息中间件中,订单处理服务可以继续处理订单,实现了"填谷"。
架构
无论是Kafka系统架构,还是RocketMQ系统架构,从图中可以看到它们整体的结构是大同小异的,通常由四个主要部分构成。
1)生产者:负责生成并发送消息到Broker集群进行存储。
2)Broker集群:这是消息队列的核心部分,它负责存储来自生产者的消息,并将这些消息分发给消费者进行处理。
3)消费者:负责接收并处理来自Broker集群的消息。
4)元数据中心集群:例如Kafka中的Zookeeper和RocketMQ中的NameServer,它们都扮演着相似的角色,主要负责维护集群以及主题相关的元数据。
集群扩展能力
Kafka和RocketMQ都具有良好的集群扩展能力,但它们的实现方式和特点有所不同。
!
在Kafka中,数据同步以分区为单位进行。在创建主题时,会预设分区数和副本数。Kafka会从每个分区的副本集中选出一个Broker作为Leader,其余副本所在的Broker则作为Follower。所有客户端请求(包括生产者发送消息和消费者消费消息)都由Leader节点处理,数据同步也由Leader节点向Follower节点进行。这种设计赋予了Kafka优秀的水平扩展性,可以通过增加Broker数量来提升集群的存储和处理能力。
在RocketMQ中,整个集群由多个子集群组成,每个子集群包含一个Master节点和多个Slave节点。RocketMQ会首先按照子集群对主题进行分片,然后在每个子集群内部将分片的主题进一步拆分为多个消息队列(MessageQueue)。每个消息队列是一个逻辑队列。当生产者发送特定主题的消息时,通过负载均衡策略(默认为轮询策略)将消息路由到各个消息队列,从而确保集群中每个Broker节点的负载大致均衡。
主题
在消息中间件中,主题(Topic)是一个关键的逻辑概念。生产者将消息发布到特定的主题,而消费者则从这些主题中订阅并接收消息。因此,主题实际上是消息的分类标识,它使得消费者能够进行有效的消息筛选和选择。
主题的存在实现了一条消息可以被多个消费者接收,从而形成了一种发布-订阅(Pub-Sub)的通信模式。例如,在一个“天气更新”主题中,所有订阅了这个主题的消费者(可能包括多个应用或服务)都会收到关于天气更新的消息。
这种模式的优势在于它实现了生产者和消费者的解耦。生产者只需知道消息应发送到哪个主题,而无需关心谁将会是消费者。同样,消费者只需订阅他们感兴趣的主题,而无需知道谁是消息的生产者。这种解耦的设计,使得生产者和消费者可以独立地进行扩展和修改。
未完待续
很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
同步
耦合
异步
解耦
消息
相关帖子
Python日志存储:从单机同步到分布式异步的7种方案
springMVC-HTTP消息转换器与文件上传、下载、异常处理
游戏服务端架构:消息流水线模型(有序而高效)
ClawX 消息频道快速部署:飞书、钉钉与主流 IM 一体化接入(3)
PHP 的异步编程 该怎么选择
字节二面:Redis 能做消息队列吗?怎么实现?
数据库主从同步架构
Codex SDK 控制台消息解析完全指南
在 PHP 中写真正的异步代码 TrueAsync 0.6.0 已支持数据库链接池
【译】 我们如何同步 .NET 的虚拟单体仓库(二)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Python日志存储:从单机同步到分布式异步的7种方案
2
396
邹弘丽
2026-02-24
业界
springMVC-HTTP消息转换器与文件上传、下载、异常处理
0
275
髭赌
2026-02-28
安全
游戏服务端架构:消息流水线模型(有序而高效)
2
979
师悠逸
2026-03-01
业界
ClawX 消息频道快速部署:飞书、钉钉与主流 IM 一体化接入(3)
0
908
缍米
2026-03-05
业界
PHP 的异步编程 该怎么选择
0
960
薛小春
2026-03-06
业界
字节二面:Redis 能做消息队列吗?怎么实现?
5
453
格恳绌
2026-03-06
安全
数据库主从同步架构
1
450
盖彗云
2026-03-10
业界
Codex SDK 控制台消息解析完全指南
1
754
懵径
2026-03-10
业界
在 PHP 中写真正的异步代码 TrueAsync 0.6.0 已支持数据库链接池
0
24
步雪卉
2026-03-14
业界
【译】 我们如何同步 .NET 的虚拟单体仓库(二)
0
473
仲水悦
2026-03-18
回复
(26)
呼延含玉
2025-12-14 22:39:13
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
庞环
2026-1-9 23:58:41
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
饮邺谲
2026-1-18 05:19:46
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享
啤愿
2026-1-18 22:10:37
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
热心回复!
何玲
2026-1-19 23:05:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
志灿隐
2026-1-22 07:19:49
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
骆贵
2026-1-22 11:53:00
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
博咱
2026-1-23 00:07:24
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
泠邸
2026-1-23 07:20:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
凌彦慧
2026-1-24 01:31:45
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
师佳思
2026-1-24 10:47:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
痕伯
2026-1-27 07:19:03
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢发布原创作品,程序园因你更精彩
龙梨丝
2026-1-28 05:19:57
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
墨佳美
2026-2-3 03:20:07
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
裴涛
2026-2-7 05:09:57
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
过来提前占个楼
缣移双
2026-2-8 16:08:32
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
戈森莉
2026-2-10 22:31:55
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
乐敬
2026-2-11 06:20:34
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
邰怀卉
2026-2-12 08:02:56
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
程序
科技
数据
代码
软件
安全
签约作者
程序园优秀签约作者
发帖
归悦可
2026-2-12 08:02:56
关注
0
粉丝关注
27
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9016
9
闰咄阅
9995
10
蓬森莉
9870
查看更多
今日好文热榜
469
SpringCloud进阶--Seata与分布式事务
986
大模型私有化部署指南:从“一键安装”到“
624
大模型私有化部署指南:从“一键安装”到“
883
SpringCloud进阶--Seata与分布式事务
170
SpringCloud进阶--Seata与分布式事务
784
Oracle SQL经典练习50题 | 附答案
203
gitru:一个由 Rust 打造的零依赖 Git 提交
929
gitru:一个由 Rust 打造的零依赖 Git 提交
266
gitru:一个由 Rust 打造的零依赖 Git 提交
853
gitru:一个由 Rust 打造的零依赖 Git 提交
424
gitru:一个由 Rust 打造的零依赖 Git 提交
692
ESP32S3 USB MSC 调试全过程记录
637
瑞芯微工业级芯加持,正点原子RK3562J开发
54
gitru:一个由 Rust 打造的零依赖 Git 提交
784
营销自动化数据驱动 - 多源数据 OLAP 架构
532
C# .NET 周刊|2026年3月1期
148
【GUI-Agent】阶跃星辰 GUI-MCP 解读---(5)
867
LangChain教程-3、Langchian进阶
4
【GUI-Agent】阶跃星辰 GUI-MCP 解读---(5)
727
Ubuntu 部署Harbor (Docker版)