十大品牌
当前位置:
首页
>
排行榜
>消息队列怎么选?一篇讲透分布式系统的“中转站”
消息队列怎么选?一篇讲透分布式系统的“中转站”
更新时间 2026-10-03 23:25:49
消息队列怎么选?一篇讲透分布式系统的“中转站”
🚀 朋友们!今天聊一个后端圈最容易被低估、出事时最要命的组件——消息队列。
不管你是写业务 CRUD、做交易清结算、搞 IoT 数据上报,还是被“削峰填谷”四个字折磨过的架构师,这篇码住就对了👀 12 张逻辑图不在话下,咱们把 Kafka / RabbitMQ / RocketMQ / Pulsar / NATS 的底层套路一次讲透,不拉踩、不站队。
01|消息队列到底是啥?📮
盖房子要下水道,分布式系统要“缓冲带”。消息队列就是那个把“生产者疯发”和“消费者慢吞”隔开的中间件。
它每天回答三个灵魂问题:
🔸 消息放哪(存储)
🔸 先给谁(顺序 / 路由)
🔸 丢了怎么办(可靠 / 重投)
🧠 划重点:消息队列 ≠ 异步工具。异步只是副作用,真正价值是解耦、削峰、广播、事件溯源。
02|通用分层结构🧱
🔹 接入层:Producer SDK、Topic/Exchange、Schema 校验
🔹 路由层:Fanout / Topic / Queue / Partition 规则
🔹 存储层:文件分段、CommitLog、WAL、冷热分层
🔹 消费层:Push / Pull、消费组、Offset、ACK
🔹 管控层:鉴权、限流、死信、延时、回溯
看懂这五层,看 RabbitMQ 和 Pulsar 都不会迷路——它们只是把每一层塞进了不同组件里。
03|两条路线:Broker 中心化 vs 日志型存储🌿
🌱 AMQP 派:RabbitMQ 为代表,Exchange 路由优先,消息确认精细,适合任务分发。
🌳 Log 派:Kafka / Pulsar 为代表,分区即真相,顺序写磁盘,适合高吞吐数据流。
公共题一模一样:投递语义、积压治理、消费幂等、扩容不丢消息。
04|虚拟化?不,这里是“投递语义”🎯
📦 At most once:发就完了,丢不管——指标上报常用
📬 At least once:至少一次,重复由业务幂等兜底——最常见
✅ Exactly once:事务 + 去重,代价高,Kafka 事务 / Pulsar 去重走这条路
再往深看:Kafka 用 partition + offset 做顺序;RabbitMQ 用 channel + ack 做可靠;Pulsar 用 BookKeeper 做分段复制——本质都在回答“消息别丢、别乱、别重”。
05|开源老炮:Kafka 🐱
2011 年 LinkedIn 开源,大数据管道的默认底盘。
🔸 Producer 写 Partition
🔸 Broker 顺序写 CommitLog
🔸 Consumer Group 用 Offset 拉消息
🔸 ISR 机制保副本一致
典型拓扑:3+ Broker、ZK 或 KRaft 管元数据、消费者自己管 Offset。
官方口径:单集群百万级 TPS,日志、埋点、CDC 场景统治级。
06|云原生新贵:Pulsar 🐙
Pulsar 的骚点在计算存储分离:
🧠 Broker 无状态,管路由
📚 BookKeeper 管持久化
🌐 Topic 可分层:Namespace → Tenant → Cluster
天然多租户、原生跨地域复制、支持 Queue + Stream 两种模型。K8s 上跑 Pulsar,比“硬塞 Kafka 进容器”舒服太多。
07|轻量与边缘玩家🪁
🐢 RabbitMQ:Erlang 写的 AMQP 老牌,路由灵活,中小系统常客
⚡ NATS:毫秒级、JetStream 补持久化,边缘/IoT 真香
🪶 Redis Streams:别拿来做核心交易,但轻量事件够用
🌾 Mosquitto / MQTT:物联网设备上报,不是消息队列但常混在一起讲
规模、延迟、投递保证,是这档选型的三个砝码。
08|自研顶流:RocketMQ 🚀
阿里双十一磨出来的国产消息中间件。
🔸 CommitLog 单文件顺序写
🔸 消费队列只是索引
🔸 支持事务消息、延时消息、消息轨迹
🔸 5.x 之后走“Broker + Proxy”云原生拆分
和 Kafka 比:RocketMQ 更在乎业务消息语义;和 RabbitMQ 比:它更能扛海量堆积。
09|海外云厂解法☁️
🔵 AWS SQS / SNS:全托管、隐藏分区概念,开发爽但调优黑盒
🟢 GCP Pub/Sub:按“发布/订阅”建模,和 Kafka 像但托管更重
🟣 Azure Service Bus:企业集成派,事务、会话、死信一应俱全
殊途同归:托管化 + 屏蔽底层存储细节 + 和函数计算绑定。
10|国产云:各家怎么卷🪶
🐉 阿里云 RocketMQ / Kafka 双栈,交易和日志分治
🏔️ 华为云 DMS,RabbitMQ/Kafka/RocketMQ 都托管,政企合规优先
🟦 腾讯云 CKafka,音视频弹幕、直播流水场景打磨深
🟣 百度云消息服务绑 AI 训练事件总线和模型推理回调
11|底层三件事:写得下·发得出·查得回🧰
💾 存储:分段文件、零拷贝发送、PageCache 命中率决定吞吐
🌐 网络:批量拉取、压缩(LZ4/Snappy/Zstd)、背压控制
🛡️ 可靠性:副本 ACK、幂等 Producer、消费幂等表、死信队列
多分区再均衡(rebalance)是 《Kafka》 系最痛的课:消费者一抖,全组暂停。
12|选型七维度📊
✅ 吞吐上限
✅ 投递语义
✅ 延时(毫秒级 vs 秒级)
✅ 积压能力
✅ 多租户 / 权限
✅ 云托管成熟度
✅ 生态(Connector / Schema Registry / Stream Processing)
13|选型四步法🧭
🥇 盘需求:订单?日志?IoT?事件驱动?
🥈 画边界:要事务消息选 RocketMQ,要流式分析选 Kafka,要任务队列选 RabbitMQ
🥉 做验证:压 10w/s、杀 broker、消费组重平衡、消息回溯
🏅 留后路:选有 Connector 和 Schema 演进能力的,别被私有协议锁死
14|热词小课堂📖
🗂️ Partition:Kafka 的并行单位,顺序只在分区内保证
🧩 Exactly-once:最贵最难的语义,不是开关
📜 Dead Letter Queue:消费 N 次还失败,进冷宫等人工
🏘️ Consumer Group:一群消费者瓜分分区,别和“订阅”搞混
🚪 Vendor Lock-in:用 SQS 用爽了,迁回自建 Kafka 会哭
写在最后💌:
消息队列没有最强,只有最贴业务。Kafka 不是万能,RabbitMQ 也不是老古董,Pulsar 很帅但运维有门槛。先把“要不要队列”想明白,再选“哪款队列”。
本文来自网友投稿或网络内容, 如有侵犯您的权益请联系我们删除, 联系邮箱:wyl860211@qq.com 。
国庆来景德镇,怎么选一款适合自己的杯子?
折叠屏怎么选?6 台在售机型优缺点一次说清
热门文章
黄三色是哪三色颜色的?解析黄三色的具体颜色及其应用
十大平板拖把品牌排行榜_什么牌子的平板拖把好
第一次做ae视频一般多少秒,制作视频的时长建议
十大免费mp3音乐网站_mp3歌曲下载网站哪个好_MP3音乐网站大全
达泊西汀十大品牌排行榜_达泊西汀品牌排名_达泊西汀品牌排行榜
十大必看番号有哪些?你知道哪些是值得一看的热门番号吗?
亚洲尺码和欧洲尺码区别是什么
包机和专机的区别是什么?
随机文章
10个月宝宝每天需要喝多少奶粉?是否有一个标准量?
十大必看番号有哪些?你知道哪些是值得一看的热门番号吗?
宝宝喝奶粉消化不良怎么办?
Is "How do you pronounce 'formula' in English?" a Common Question for New Parents?
米诺地尔十大品牌排行榜_米诺地尔品牌排名_米诺地尔品牌排行榜
wow十大板甲幻化
用120毫升的水放几勺奶粉:你真的知道吗?
MRO工业品十大采购平台-工业品一站式采购平台排行榜
三轮车十大品牌排行榜:三轮车品牌十大排行榜:三轮车什么牌子好:2025