第一篇:为什么需要消息队列?
为什么需要消息队列上一篇我们聊完了 Redis 系列的最后一篇《Redis 为什么不能当数据库》。Redis 解决的是一个问题如何让系统访问数据更快。但是当系统继续发展流量继续增加只靠 Redis 还不够。因为很多时候系统慢并不是因为数据库慢也不是因为缓存慢而是因为一次请求需要同步完成太多事情。这也是消息队列Message QueueMQ出现的原因。一个最开始的订单系统刚开始开发一个电商系统下单逻辑可能非常简单。PostMapping(/order)publicLongcreateOrder(OrderRequestrequest){OrderorderorderService.create(request);returnorder.getId();}用户提交订单保存订单。返回结果没有任何问题。但是随着业务发展订单创建之后需要做的事情越来越多。比如扣减库存发送短信发放优惠券增加积分更新会员等级通知物流系统写入数据分析平台于是代码慢慢变成PostMapping(/order)publicLongcreateOrder(OrderRequestrequest){OrderorderorderService.create(request);stockService.reduce(order);couponService.send(order);pointService.add(order);smsService.send(order);logisticsService.notify(order);returnorder.getId();}从业务角度看这段代码没有错。订单创建之后这些事情确实都需要做。但是从系统设计角度它开始出现问题。第一个问题接口越来越慢假设每个服务耗时创建订单 20ms扣库存 30ms优惠券 50ms积分 20ms短信 500ms物流通知 200ms最终接口耗时20 30 50 20 500 200 820ms用户点击一次下单需要等待接近 1 秒。但是仔细想一下用户真的需要等待短信发送完成吗需要等待积分增加完成吗需要等待物流系统收到通知吗其实不需要。用户真正关心的是我的订单有没有创建成功。其他事情可以稍后完成。第二个问题服务之间越来越耦合更麻烦的是订单服务现在知道太多东西。它知道订单服务↓库存服务↓短信服务↓优惠券服务↓积分服务↓物流服务如果以后新增一个需求“下单后发送邮件”怎么办继续修改emailService.send(order);如果邮件系统异常创建订单成功↓发送邮件失败整个接口怎么办返回失败但是订单已经创建了这就出现了一个很经典的问题非核心业务失败影响核心业务。那能不能让订单服务只负责订单重新思考一下订单服务真正需要做什么其实只有创建订单告诉其他系统“订单创建成功了”至于谁需要这个消息怎么处理什么时候处理订单服务不应该关心。于是架构变成用户请求↓订单服务↓发送消息↓消息队列↓其他服务消费代码变成PostMapping(/order)publicLongcreateOrder(OrderRequestrequest){OrderorderorderService.create(request);rocketMQTemplate.send(order-created,order.getId());returnorder.getId();}订单服务只负责发送“订单创建成功” MQ 到底做了什么很多人理解 MQMQ 就是帮我存一条消息这个理解不完整。真正重要的是MQ 在系统之间增加了一层缓冲。以前订单服务↓短信服务订单服务必须等待短信服务完成。现在订单服务↓Broker↓短信服务订单服务只需要把消息交给 Broker后面的事情异步完成。这就是消息队列最核心的价值。那为什么不用 HTTP 调用既然服务之间可以 HTTP 调用为什么还需要 MQ比如smsService.send(order);换成POST /sms/send 不也可以吗区别在于HTTP 是主动调用。调用方必须知道谁提供服务地址是什么接口是什么对方是否成功。MQ 是消息通知。生产者只关心消息有没有发送出去。消费者只关心有没有自己感兴趣的消息。两者的关系完全不同。MQ 底层为什么需要 Broker这里其实已经涉及 MQ 的核心设计。很多初学者会想既然订单服务要通知短信服务。为什么不直接订单服务↓短信服务而要增加订单服务↓Broker↓短信服务中间这个 Broker 就是 MQ 的核心。它解决三个问题消息暂存如果短信服务挂了订单服务↓Broker↓短信服务异常消息不会消失等短信服务恢复后继续消费。消费速度不同订单创建每秒 10000 次。短信发送每秒只能处理 1000 次。如果直接调用订单服务也会被拖慢。有了 MQ10000 条消息↓Broker↓消费者慢慢处理生产和消费速度被隔离。多个消费者订阅同一个订单消息订单创建事件↓Broker/ |库存 积分 短信不同系统消费自己关心的数据订单服务不需要知道它们存在。RocketMQ 中消息到底怎么流转以 RocketMQ 为例。一次消息发送并不是Producer↓Consumer而是Producer↓NameServer↓Broker↓CommitLog↓ConsumerProducer 发送消息Broker 保存消息。Consumer 从 Broker 拉取消息。后面的文章我们会继续拆为什么消息需要 BrokerBroker 为什么选择 CommitLog为什么 RocketMQ 写消息这么快消息为什么不会丢消息为什么会重复消费这些才是 MQ 真正有意思的地方。总结消息队列出现不是因为开发者喜欢增加中间件。而是因为系统发展到一定阶段后简单的同步调用已经无法满足需求。当一个接口需要同时通知几十个系统时同步调用会让系统越来越慢服务依赖会越来越复杂。任何一个下游异常都可能影响核心流程。MQ 做的事情本质上就是把一次强依赖的同步调用变成一次可靠的消息通知。它让系统从你必须马上帮我完成变成我告诉你发生了什么你什么时候处理由你决定这就是消息队列存在的意义。上一篇《Redis 为什么不能当数据库》下一篇《消息为什么能够解耦系统》

相关新闻

【转载】亚马逊蝮蛇毒液多样性研究:生态和毒理学意义 | MDPI Toxins

【转载】亚马逊蝮蛇毒液多样性研究:生态和毒理学意义 | MDPI Toxins

蛇毒作为蝮蛇等毒蛇的关键生化武器,其组成与变异常被视为影响物种生态适应与生存成功的重要因素。然而,关于毒液成分是否直接决定蛇类在不同生态环境中的分布与生存策略,目前仍缺乏明确结论。来自巴西布坦坦研究所等多家科研机构的的Ana M. M…

2026/8/1 1:47:27 阅读更多 →
方差互换定价与VIX指数原理:从波动率交易到期权组合复制

方差互换定价与VIX指数原理:从波动率交易到期权组合复制

1. 从波动率交易说起:为什么我们需要方差互换?在金融衍生品的世界里,大家最熟悉的是基于资产价格方向性变化的工具,比如看涨期权、看跌期权、期货。你赌资产价格上涨,或者下跌,盈亏直接与价格挂钩。但有一类…

2026/8/1 1:47:27 阅读更多 →
Realtek多口网络芯片选型指南:从PHY、Switch到SGMII接口实战解析

Realtek多口网络芯片选型指南:从PHY、Switch到SGMII接口实战解析

1. 项目概述:解码Realtek多口网络芯片的选型迷宫最近在规划一个工控网关项目,需要选型一款支持多路以太网接口的芯片。客户的需求很明确:既要成本可控,又要接口灵活,最好还能集成一些交换功能。在翻遍了各大厂商的选型…

2026/8/1 1:47:27 阅读更多 →

最新新闻

【限时解密】Top 3零售AI平台底层架构图(含TensorRT优化节点与Redis缓存穿透防护设计):仅开放至本季度末

【限时解密】Top 3零售AI平台底层架构图(含TensorRT优化节点与Redis缓存穿透防护设计):仅开放至本季度末

更多请点击: https://codechina.net 第一章:AI零售行业应用全景图谱与技术演进脉络 人工智能正深度重构零售价值链,从消费者洞察、智能选品、动态定价到无人履约与个性化服务,已形成覆盖“人、货、场”全要素的系统性能力矩阵。技…

2026/8/1 2:27:42 阅读更多 →
AI接管重复劳动不是未来——它已在产线运行18个月(附某制造业RPA+LLM混合架构拓扑图)

AI接管重复劳动不是未来——它已在产线运行18个月(附某制造业RPA+LLM混合架构拓扑图)

更多请点击: https://kaifayun.com 第一章:AI接管重复劳动不是未来——它已在产线运行18个月(附某制造业RPALLM混合架构拓扑图) 在华东某汽车零部件智能工厂,一条装配线上的质量巡检、工单派发与异常归因流程已由RPAL…

2026/8/1 2:27:42 阅读更多 →
【飞书AI团队协作终极指南】:20年资深架构师亲授5大提效陷阱与避坑实战手册

【飞书AI团队协作终极指南】:20年资深架构师亲授5大提效陷阱与避坑实战手册

更多请点击: https://codechina.net 第一章:飞书AI团队协作的认知重构与价值重定义 传统团队协作工具将“沟通”与“执行”割裂为两个平行轨道:消息在群聊中沉没,任务在待办里静默,文档在版本迭代中失焦。飞书AI的介入…

2026/8/1 2:27:42 阅读更多 →
我挑战做一个没人愿意做的免费软件

我挑战做一个没人愿意做的免费软件

很多人觉得图片压缩很简单, 但真正用起来,全是广告、收费、限制。 所以我决定自己开发一个。 花时间研究算法,做界面,测试各种图片格式。 现在它终于完成了。 支持图片压缩,减少文件大小,同时尽量保持画…

2026/8/1 2:27:42 阅读更多 →
市场正规道闸维修公司哪家好?3个要点教你选

市场正规道闸维修公司哪家好?3个要点教你选

道闸系统是停车场、园区、社区出入口的“交通中枢”,但设备故障、识别失灵、防砸失效等问题频发,选对维修(含维保)公司直接决定通行效率与安全。对比海康威视、捷顺科技等全国品牌,南京瑞宇智能科技有限公司&#xff0…

2026/8/1 2:27:42 阅读更多 →
生活化AI可观测性体系设计总览:日志、指标与告警

生活化AI可观测性体系设计总览:日志、指标与告警

生活化AI可观测性体系设计总览:日志、指标与告警 一、AI系统的可观测性挑战:非确定性与黑箱的双重叠加 传统Web应用的可观测性聚焦于"是否正常运行"——API返回码、响应延迟、错误率。AI系统在此基础上增加了两个独特挑战:非确定…

2026/8/1 2:26:42 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →