尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?

从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?
📅 发布时间:2026/6/20 11:22:51

从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?

当成百上千的服务需要相互协作时,它们之间的通信模式变得至关重要。如果服务间采用紧密耦合的同步调用,一个服务的延迟或故障,就可能引发连锁反应,导致系统性的“雪崩”。
消息中间件正是为了打破这种刚性依赖而生。它在服务之间建立了一个异步的通信渠道,通常是一个消息队列。生产者服务只需将任务(即“消息”)投递到队列中便可完成工作,而无需等待消费者服务的实时响应。
使用场景
消息中间件常见的使用场景,包括不限于解耦、有序性、异步处理、削峰填谷等。

解耦
在一个电商系统中,用户下单后,订单系统通常需要直接调用库存系统来减少库存。但是,如果库存系统有问题或延迟,订单系统也会受影响,导致用户下单失败或延迟。
使用消息中间件,订单系统在用户下单后只需发送一条消息,然后立即回应用户。库存系统会从消息中间件获取消息并处理。这样,即使库存系统有问题,订单系统也不会受影响。
image

有序性
在一个银行系统中,用户的转账操作可以被视为一个消息,包含转账金额和目标账户。这些消息的顺序很重要,因为需要保证转账的顺序与用户的操作顺序相同。
使用消息中间件,可以把每次转账操作作为一个消息发送出去。消息中间件能确保消息的顺序,也就是先发送的消息先处理,后发送的消息后处理。这样,用户的转账操作顺序就能得到保证。
image

异步处理
在一个在线服务平台中,用户登录后,系统需要做一些操作,如更新登录时间,发送欢迎邮件,生成登录日志等。如果这些操作同时进行,可能会让用户等待时间变长,影响体验。
使用消息中间件,用户登录成功后,系统可以立即回应用户,然后把需要做的操作作为消息发送出去。后台服务会从消息中间件获取消息,然后异步处理。
image

削峰填谷
在一个电商网站的大促销活动中,用户访问和订单量会激增,这就是"流量峰值"。如果系统直接处理这些请求,可能会因负载过大而崩溃,所以需要"削峰",即平滑处理这些请求。
使用消息中间件,用户下单时,系统可以将订单作为消息发送出去,然后立即回应用户。后台服务会从消息中间件获取消息,然后处理订单。这样,即使短时间内订单量大,也不会直接冲击到订单处理服务,实现了"削峰"。
另外,在流量低的时候,如深夜,订单处理服务可能会闲置。这时,如果有未处理的订单在消息中间件中,订单处理服务可以继续处理订单,实现了"填谷"。

架构
image

无论是Kafka系统架构,还是RocketMQ系统架构,从图中可以看到它们整体的结构是大同小异的,通常由四个主要部分构成。
1)生产者:负责生成并发送消息到Broker集群进行存储。
2)Broker集群:这是消息队列的核心部分,它负责存储来自生产者的消息,并将这些消息分发给消费者进行处理。
3)消费者:负责接收并处理来自Broker集群的消息。
4)元数据中心集群:例如Kafka中的Zookeeper和RocketMQ中的NameServer,它们都扮演着相似的角色,主要负责维护集群以及主题相关的元数据。
image

集群扩展能力
Kafka和RocketMQ都具有良好的集群扩展能力,但它们的实现方式和特点有所不同。

!image

在Kafka中,数据同步以分区为单位进行。在创建主题时,会预设分区数和副本数。Kafka会从每个分区的副本集中选出一个Broker作为Leader,其余副本所在的Broker则作为Follower。所有客户端请求(包括生产者发送消息和消费者消费消息)都由Leader节点处理,数据同步也由Leader节点向Follower节点进行。这种设计赋予了Kafka优秀的水平扩展性,可以通过增加Broker数量来提升集群的存储和处理能力。
在RocketMQ中,整个集群由多个子集群组成,每个子集群包含一个Master节点和多个Slave节点。RocketMQ会首先按照子集群对主题进行分片,然后在每个子集群内部将分片的主题进一步拆分为多个消息队列(MessageQueue)。每个消息队列是一个逻辑队列。当生产者发送特定主题的消息时,通过负载均衡策略(默认为轮询策略)将消息路由到各个消息队列,从而确保集群中每个Broker节点的负载大致均衡。

主题
在消息中间件中,主题(Topic)是一个关键的逻辑概念。生产者将消息发布到特定的主题,而消费者则从这些主题中订阅并接收消息。因此,主题实际上是消息的分类标识,它使得消费者能够进行有效的消息筛选和选择。
主题的存在实现了一条消息可以被多个消费者接收,从而形成了一种发布-订阅(Pub-Sub)的通信模式。例如,在一个“天气更新”主题中,所有订阅了这个主题的消费者(可能包括多个应用或服务)都会收到关于天气更新的消息。
这种模式的优势在于它实现了生产者和消费者的解耦。生产者只需知道消息应发送到哪个主题,而无需关心谁将会是消费者。同样,消费者只需订阅他们感兴趣的主题,而无需知道谁是消息的生产者。这种解耦的设计,使得生产者和消费者可以独立地进行扩展和修改。

image

未完待续

很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!

本文来自博客园,作者:poemyang,转载请注明原文链接:https://www.cnblogs.com/poemyang/p/19211868

相关新闻

  • 第22天(简单题中等题 二分查找)
  • Meta AI 推出全语种语音识别系统,支持 1600+语言;谢赛宁、李飞飞、LeCun 联手发布「空间超感知」AI 框架丨日报
  • Python Socket网络编程

最新新闻

  • CANN/GE SubgraphBoundary简介
  • # 2026年太原中考复读全封闭冲刺选校指南:太原正德书院vs太原习知中考复读vs太原得壹中考复读vs太原华英中考复读深度横评 - 中国企业名录优选推荐
  • 2026年国产工业级3D扫描仪推荐: 高性价比国产替代品牌选型指南 - 速递信息
  • 2026 济南 家庭除四害专业服务商推荐 - 优质品牌推荐商
  • Mermaid.js数据可视化架构解析:饼图与柱状图的技术实现与应用
  • 2026年6月北京黄金回收店行业评测报告 究竟怎么选正规的黄金回收店? - 薛定谔的梨花猫

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号