微服务架构落地:消息队列架构设计(上篇)——异步解耦、削峰填谷,看懂业务事件流转本质

消息队列解耦、异步、削峰:简单实例与原理解析 通过消息队列,我们可以实现异步处理,订单系统只需要发送消息到消息队列,然后立即返回响应给用户,而不需要等待库存系统的响应。消息队列充当了消息的中转站,生产者将消息发送到消息队列,消费者从消息队列中获取消息并进行处理。消息队列可以用于削峰填谷,即将请求暂时存储在消息队列中,然后按照系统处理能力逐渐消费消息,从而平滑处理高峰期的请求,避免系统崩溃或性能下降。当一个系统产生消息时,将消息发送到消息队列,其他系统可以订阅消息队列并接收消息,从而实现解耦。而通过消息队列,我们可以实现它们之间的解耦。 阅读详情

大宗商品销采运储系统・六层架构连载(公共中间件层)

上一篇,我们完成了配置中心的落地拆解。注册中心解决服务寻址,配置中心管理动态参数,而消息队列,是分布式系统里用来做异步通信的核心底座。

在大宗商品销采运储业务中,单据流转、入库出库、对账推送、第三方系统对接,大量业务都是脉冲式流量。白天业务高峰,大量订单、仓储单据集中产生;夜间批量对账、数据同步任务集中执行。如果全部采用同步调用,很容易出现接口超时、服务雪崩,上下游强耦合,一个系统慢,整条链路跟着卡住。

消息队列的核心价值,一句话概括:

把同步强依赖,转为异步解耦;把瞬时尖峰流量,平滑成持续稳定的消费流量。


一、消息队列在销采运储业务中的核心职责

消息队列主要负责四件事:

  1. 业务解耦:采购、销售、仓储、运输、财务对账各个业务服务之间不再直接同步调用。上游业务完成后投递消息,下游按需消费。上游不需要关心下游是否在线、处理快慢。例如销售下单成功,投递消息,仓储服务异步生成入库单、财务异步生成应收单据,互不阻塞。

  2. 削峰填谷:业务高峰期瞬时涌入大量单据,消息队列作为缓冲,先把消息存储下来。消费端按照自身处理能力匀速消费,避免瞬间流量压垮下游服务。比如大宗商品集中开盘下单、月底大批量对账场景。

  3. 异步通知:跨系统对接场景,推送外部平台单据、回调通知、状态变更提醒,全部走消息队列,不阻塞主业务流程。

  4. 事件回溯与可靠投递:业务事件持久化存储,消费失败可以重试;出现业务问题,可回溯事件记录,排查单据流转断层问题。

边界说明:
消息队列只负责消息的存储、投递、重试,不承担业务逻辑。业务幂等、单据状态校验,依然需要业务服务自己实现。

图片


二、整体架构与基础消息流转链路

整套基础链路分为生产者、Broker 集群、消费者三大部分。

  1. 业务服务(生产者)完成核心业务逻辑,组装业务事件消息,投递至消息队列 Broker 集群。

  2. Broker 持久化消息,写入磁盘,支持多副本,保证消息不丢失。

  3. 消费者服务订阅对应 Topic,拉取消息进行业务处理。

  4. 业务处理成功,提交消费位点,Broker 标记消息已消费。

  5. 业务处理异常,不提交位点,按照策略重试;多次失败,消息转入死信队列,人工排查,避免无限重试阻塞队列。

核心设计要点:

  • 集群多副本部署,防止单点故障;

  • 消息位点持久化,服务重启之后,从上次消费位置继续处理;

  • 区分普通业务 Topic、死信 Topic、重试 Topic,隔离异常消息,不污染正常业务消息。

    图片


三、销采运储场景选型对比

大宗商品销采运储系统,存在内网信创部署、大批量单据、高可靠要求,这里做选型对比:

中间件

适用场景

优点

业务局限

RocketMQ

企业业务单据、对账、事件通知

支持事务消息、死信、重试,运维成熟,适合业务事件

资源占用相对高

Kafka

海量日志、大批量流式数据

高吞吐,适合数据采集场景

事务消息能力弱,不适合核心单据流转

RabbitMQ

简单异步通知,路由灵活

易用,路由模型丰富

大批量消息场景吞吐量一般

本项目选型:RocketMQ。
核心单据流转、跨业务事件全部使用;日志采集等大数据流量场景,单独使用 Kafka,两类场景分开,不混用。

基础 Spring Boot 接入示例

pom.xml 依赖:

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.3</version>
</dependency>

application.yml 配置:

rocketmq:
  name-server: 10.0.0.20:9876;10.0.0.21:9876;10.0.0.22:9876
  producer:
    group: supply-producer-group
  consumer:
    group: stock-consumer-group

生产者发送消息:

@Autowired
private RocketMQTemplate rocketMQTemplate;

// 销售下单完成,投递仓储事件
public void sendOrderStockEvent(OrderStockDTO dto) {
    String topic = "supply_order_stock_topic";
    rocketMQTemplate.convertAndSend(topic, dto);
}

消费者监听消息:

@RocketMQMessageListener(
    topic = "supply_order_stock_topic",
    consumerGroup = "stock-consumer-group"
)
public class StockOrderConsumer implements RocketMQListener<OrderStockDTO> {

    @Override
    public void onMessage(OrderStockDTO message) {
        // 仓储业务处理,生成入库单据
        stockService.createStockOrder(message);
    }
}

工程规范:
Topic 命名必须带业务域前缀,例如 supply_order_stock_topic、sale_outbound_topic、logistics_track_topic。禁止无业务语义的 test_topic、topic1 上线。


四、本篇小结

本篇我们理解了消息队列的定位、基础流转模型,以及销采运储场景下的组件选型与基础代码接入。

记住一句话:

消息队列不是“发个消息就完事”,它解决的是上下游解耦、流量削峰、事件可靠投递。

但在大宗商品核心单据场景,仅仅基础消息能力远远不够。单据一致性、事务消息、消息幂等、堆积治理、消息监控这些生产级难题,才是落地的重中之重。

下篇预告:消息队列(中篇):事务消息、幂等设计、消息堆积与死信治理,拆解大宗商品单据流转的生产级实战方案。

深入剖析MQ(消息队列):解耦、削峰、异步 在了解什么事消息队列之前,我们要先知道同步和异步通讯的区别,我们从以下两方面介绍MQ:同步和异步通讯什么使用MQ。 阅读详情

相关推荐

Spring Boot 微服务消息队列实战:RabbitMQ 整合,搞定解耦 + 削峰 + 异步 + 可靠性投递(企业级落地)

本文介绍了RabbitMQ在微服务架构中的核心应用场景和解决方案。主要内容包括:1) 分析微服务同步调用的四大痛点(服务耦合、流量冲击、响应延迟、故障扩散);2) 详解RabbitMQ的核心价值(服务解耦、流量削峰、异步通信、可靠性保障)及技术优势;3) 通过电商案例演示SpringBoot整合RabbitMQ实现五大核心场景:服务解耦(订单-库存-物流)、流量削峰(秒杀活动)、延迟队列(订单超时取消)、死信队列(消费失败兜底)和消息幂等性;4) 提供生产环境优化建议(高可用部署、可靠性保障、监控告警、性能

lamehsl的专栏 1484

消息队列 (message queue) 详解 - 消息队列应用场景介绍

消息队列是一种异步处理机制,用于在分布式系统中存储和转发消息。它通过将消息从发送方(生产者)传递到接收方(消费者)来实现解耦、异步处理以及流量削峰。在RocketMQ中,生产者负责生成并发送消息至Broker;Broker作为代理服务器,负责存储消息并根据消费者的请求进行分发;消费者则负责从Broker拉取消息并进行消费。消息以Topic为单位进行组织,每个Topic可包含多个Message Queue,用以存储具体的消息。

xingxuechao的专栏 2376

Java亿级流量高并发实战:工业级限流削峰方案,从设计到落地全流程

本文从事故复盘→架构设计→多方案落地→监控调优→踩坑总结完整覆盖了亿级流量下限流削峰的全流程,所有方案均经过生产环境验证,可直接复用。学习多级缓存架构,配合限流削峰进一步提升系统承载能力;研究Service Mesh微服务架构,实现无侵入流量治理;结合混沌工程,主动模拟流量洪峰,验证架构容错能力。最后提醒:高并发架构没有银弹,所有方案都需要结合自身业务做压测验证,切忌直接照搬配置,适合自己业务的架构才是最优架构。

2601_94871597的博客 665

消息队列一文全解!!!

一文讲清楚市面主流(ActiveMQ、RabbitMQ、RocketMQ、Kafka)MQ用法及使用场景,以及注意事项。

qq_28754027的博客 992

AD20/Altium designer——如何进行DRC检查、冲突的错误如何改正

对于一个画完的PCB,我们常常需要进行DRC检查,确保板子的电器连接及制作工艺在设定规则的范围内,本篇将介绍如何对PCB进行后期DRC检查处理,确保电路板出现不必要错误。 1.DRC检查入口 2.DRC设置 3.错误分析 对于错误的内容,依据个人实际情况不同,其出现的原因都是因为与设计规则中的设定标准冲突,这里按遇到的错误进行修改讲解,其他错误同理。 4.常见错误分析及解决方法 (1) 解决方法:将未连接网络连接(...

嵌入式创客工坊的博客 5万+

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程,涵盖运动学建模、仿真环境搭建、PID控制器设计与实现等关键环节。通过Simulink仿真和可视化调试技巧,帮助开发者掌握移动机器人运动控制的核心技术,提升轨迹跟踪精度与性能优化能力。

weixin_28717683的博客 241

消息队列相关问题之RocketMQ篇

其中,利用了 NIO 中的 FileChannel 模型将磁盘上的物理文件直接映射到用户态的内存地址中(这种 Mmap 的方式减少了传统 IO,将磁盘文件数据在操作系统内核地址空间的缓冲区,和用户应用程序地址空间的缓冲区之间来回进行拷贝的性能开销),将对文件的操作转化为直接对内存地址进行操作,从而极大地提高了文件的读写效率(正因为需要使用内存映射机制,故 RocketMQ 的文件存储都使用定长结构来存储,方便一次将整个文件映射至内存)。发布者将消息发送到主题中,订阅者在接收消息之前需要先“订阅主题”。

fbbqt的博客 1130

软件项目质量管理

识别项目中涉及质量管理的不同角色,如项目经理、质量经理、测试人员等,明确每个角色的职责和任务,包括负责哪些质量管理活动和决策。1、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。2、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。测试用例表是质量控制过程中的关键工具,确保所有功能和场景都被验证,减少项目中的缺陷。1、理解项目质量管理的基本过程,包括质量计划、质量保证、质量控制和质量改进;明确质量管理活动中的角色和职责。

weixin_51996255的博客 1258

RabbitMQ - 在微服务架构中的落地实践:消息推送 / 解耦 / 削峰填谷

本文探讨了RabbitMQ在微服务架构中的核心应用场景与最佳实践。针对微服务通信面临的同步调用瓶颈,RabbitMQ通过异步消息机制实现服务解耦,提升系统吞吐量与韧性。重点分析了三大典型场景:1)实时消息推送系统的广播与定向路由实现;2)基于事件驱动的订单处理系统解耦方案;3)秒杀场景下的流量削峰策略。文章详细展示了各场景的架构设计与关键代码实现,包括消息可靠性保障、Saga事务模式、批量处理优化等高级特性。同时提供了集群配置、监控告警、性能调优等生产级建议,最后总结了消息设计原则、错误处理策略及常见问题解

2301_81527952的博客 503

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 418

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

大模型网关削峰填谷:基于消息队列的异步任务池

在大模型系统落地到实际生产业务的过程中,除了智能对话、搜索补全这类必须在数百毫秒内返回的首字交互场景外,有大量业务天然属于长耗时、高计算密度的离线或半离线任务。典型的场景包括:企业级合同长文档合规审查、全量代码库安全扫描与重构建议、数十万字营销文案的批量生成,以及企业私域知识库的大规模切片与向量化嵌入。这类任务在单次推理或多次链式调用(Agent Loop)中,耗时往往从数十秒延伸至数分钟。

alex_goden的博客 230

蓝牙攻防实战指南:低功耗蓝牙

Bluetooth Low Energy(也称Bluetooth Smart)是经典蓝牙(Bluetooth Classic)的演进版本,设计目标是实现极低功耗,适用于无需频繁更换电池的设备,如智能手环、健康监测器、蓝牙标签等。Bluetooth Low Energy 是一项极具前景的无线通信技术,它以极低的功耗实现了短距离高效通信,广泛应用于智能设备和物联网领域。然而,其简化的协议结构和配对机制也带来了不小的安全挑战。

idlecloud0105的博客 682

easy-vibe 后端基础:消息队列(Message Queue)与事件驱动架构实战指南

消息队列(Message Queue, MQ)是分布式系统解耦、削峰与保障可靠性的核心中间件。本指南以 [docs/ja-jp/appendix/4-server-and-backend/message-queues.md](https://link.gitcode.com/i/5abb232693fc2130b8fd88d6c8b74bd2) 为骨架,通过淘宝订单系统演进、餐厅叫号、秒杀系统等真

gitblog_01035的博客 937

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7103

31、车载通信中的可见光通信(VLC)技术解析

本文详细解析了车载通信中可见光通信(VLC)技术的应用背景、优势及发展前景。对比传统RF通信技术(如DSRC),VLC利用LED照明设备实现高效、安全的车辆与车辆、车辆与基础设施之间的通信,具有频谱资源丰富、安全性高、无电磁干扰等优势。文章还探讨了VLC在交叉口交通控制、高速公路通信、自动驾驶等场景的应用潜力,展望了其在未来智能交通系统中的重要作用。

hill8的博客 318

Easy-Vibe 后端进阶:消息队列与事件驱动架构的原理与实践

::: tip 导读 当系统服务之间耦合严重、流量突增时,如何保证核心链路稳定?消息队列(Message Queue, MQ)是现代分布式系统中承担"缓冲器"与"解耦器"角色的关键基础设施。本文以真实业务案例(餐厅叫号、快递分拣、双 11 秒杀系统)为线索,系统讲解消息队列的设计哲学、核心三要素、解耦与削峰填谷的架构方法、消息可靠性保障(不丢失、不重复、有序)以及主流 MQ 的选型决策,帮助你在构

gitblog_00322的博客 1022

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PHP高并发架构设计、微服务拆分、消息队列削峰、容器化部署 (Docker/K8s)、CI/CD 流程的庖丁解牛

维度核心要点关键技术栈高并发常驻内存 + 协程异步微服务DDD 拆分 + 服务治理消息队列削峰填谷 + 最终一致容器化标准化 + 弹性伸缩CI/CD自动化 + 快速迭代融合全链路可观测 + 自愈终极心法架构演进没有终点,只有更适合当下的选择。PHP 不再是那个只能写小网站的脚本语言,在云原生加持下,它也能扛住亿级流量。理解这套体系,就是理解“如何用工程化的手段,驾驭不确定性的世界"。记住:微服务是为了解耦,容器是为了弹性,MQ 是为了缓冲,CI/CD 是为了速度。

长风破浪会有时的博客 658

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【消息队列MQ】消息队列MQ——三大核心作用:解耦、异步、削峰填谷;两大核心模型:点对点、发布订阅(附《 消息队列MQ 面试核心考点问答清单》)

本文系统解析消息队列MQ的**三大核心作用**(解耦、异步、削峰填谷)与**两大核心模型**(点对点、发布订阅),贯通原理、价值、实现、选型及避坑实践,构建分布式系统中MQ的全链路知识体系。

小江的记录本 530

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

微服务通信架构设计实战:异步削峰、RPC选型与故障排查指南

在微服务架构中,系统间通信方式直接决定了整体系统的稳定性与扩展性。通信设计需要从同步与异步的基本概念出发,理解消息队列、RPC框架、超时熔断等核心原理。异步消息通过削峰填谷机制,将非实时操作从主链路剥离,有效降低接口响应压力;而同步调用则依赖RPC框架实现高效服务治理,避免HTTP在高并发下的性能瓶颈。合理运用消息队列选型、超时重试策略、熔断隔离等手段,能够显著提升系统容错能力,防止雪崩效应。这些技术广泛应用于电商订单、支付、用户中心等业务场景,是保障大规模分布式系统平稳运行的关键。本文结合真实项目经验,梳

weixin_29274969的博客 315

【亿级电商架构实战】第十三篇:电商消息队列架构深度落地,搞定异步解耦、削峰填谷、最终一致性、消息幂等、重试机制、死信队列、大促流量兜底

在前十二篇连载中,我们已经完整搭建了电商微服务底座、用户、商品、营销、订单、库存、支付、风控、搜索、推荐全套核心业务链路。所有模块各司其职,构成了完整的电商交易与流量闭环。服务拆分越细,调用链路越长,同步耦合越严重。订单创建、支付成功、库存扣减、物流通知、推荐更新、数据同步等大量联动操作,如果全部采用同步调用,会出现链路超时、接口雪崩、主流程阻塞、数据不一致、大促流量扛不住等一系列致命问题。消息队列(MQ)是微服务架构的异步通信核心底座、流量防护中枢、数据一致性兜底载体。

weixin_44661794的博客 381

系统解耦的“瑞士军刀”:深入解析消息队列的核心价值与实战场景

消息队列是分布式系统架构演进的必经之路。它通过解耦让系统更灵活,通过异步让响应更迅速,通过削峰让系统更稳健。何时该用 MQ?当你的系统模块间耦合严重,牵一发而动全身时。当核心接口响应时间过长,包含大量非核心逻辑时。当面对突发流量,后端数据库频频报警时。当需要跨服务保证数据最终一致性时。何时不该用?简单的单体应用,QPS 很低。对实时性要求极高(毫秒级且不能有任何延迟抖动)的场景(需慎重评估 MQ 带来的网络 hop 延迟)。团队缺乏运维 MQ 的能力,且没有成熟的云产品可用。

2603_94941287的博客 405

Java开发:Spring Cloud Alibaba微服务之消息队列(RocketMQ、Kafka、RabbitMQ)

Java开发:Spring Cloud Alibaba微服务之消息队列(RocketMQ、Kafka、RabbitMQ)

weixin_46619605的博客 1615

微服务架构设计 - 事件驱动落地方法论

本文探讨微服务架构中事件驱动架构(EDA)的实践方法。通过用户注册案例,分析同步调用带来的耦合和可用性问题,指出内存异步化的风险。提出引入消息队列(MQ)实现事件驱动,将命令转为事件以彻底解耦服务。总结EDA落地三原则:核心/非核心逻辑分离、长耗时任务回调、最终一致性保障。结合车贷系统案例,展示放款后多步骤处理的EDA改造方案,并强调MQ可靠性设计要点,包括消息必达和消费幂等性。事件驱动架构能有效提升系统扩展性和稳定性。

Hernon的博客 846

SpringBoot 集成 RabbitMQ 实战(消息队列解耦与削峰):实现高可靠异步通信

本文介绍了RabbitMQ在SpringBoot中的实战应用,重点解决同步调用导致的系统耦合问题。通过Docker部署RabbitMQ环境,详细讲解Direct交换机实现服务解耦的配置方法,包括生产者发送消息和消费者处理消息的完整流程。文章还深入探讨了消息可靠性保障机制(生产者确认、持久化、手动ACK)、死信队列处理失败消息、延迟队列实现订单超时等核心场景。最后给出常见问题解决方案,强调RabbitMQ"异步解耦+可靠传递"的核心价值,适用于非核心业务流程的异步化改造。全文包含完整代码示

2503_94434664的博客 1149

Java面试-消息队列的作用与常见中间件(Kafka、RabbitMQ、RocketMQ)

《Java面试200问》系列聚焦消息队列技术,深入解析Kafka、RabbitMQ和RocketMQ三大中间件。文章从消息队列的四大核心作用(解耦、削峰、异步处理、数据分发)切入,通过架构图解和对比表格,详细对比了三者在吞吐量、延迟、可靠性等维度的差异。内容涵盖Kafka的高吞吐日志系统设计、RabbitMQ的灵活路由模型以及RocketMQ的金融级可靠性,并附有实战设计模式、常见陷阱和30道高频面试题,为开发者提供从原理到落地的全面指导。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: 微服务架构落地:配置中心——让微服务在不停机中切换参数
下一篇: 微服务架构落地:消息队列架构设计(中篇)——事务消息、业务幂等,保障单据数据一致性
code_slave(码畜)
博客等级 码龄10年 31粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值