MQ 选型:RocketMQ、Kafka 与 RabbitMQ 的分野
2026/8/24大约 3 分钟
亿级规模系统系列 · 阶段 3 · 异步与消息 · 第 21/49 篇 · 🚧 占位待学
上一篇:《推与拉:长轮询、百万连接的消息投递》
下一篇:《拆前穷尽:别急着分库分表》
学习大纲:《QPS 过万与亿级消息系统设计学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 3 · 单元 3.7
一、本文要解决的问题
亿级消息场景,选 RocketMQ 还是 Kafka?这个问题的正确答案不是「哪个更强」,而是「你的消息是什么形态」——业务消息(低延迟、事务、重试)与数据流(高吞吐、批量、顺序写)是两个物种,两个 MQ 各占一边。本篇把选型从「听说」变成「实测 + 论证」。
二、知识点清单
- 模型差异:RocketMQ topic/queue、Kafka topic/partition、RabbitMQ exchange/queue——并发单元与扩容方式完全不同
- 功能矩阵:事务消息、延迟消息、消息重试与死信、消息轨迹——业务消息刚需 vs 数据流不需要
- 吞吐量级认知:百万级 TPS(Kafka 批量场景)vs 十万级(RocketMQ)vs 万级(RabbitMQ),及背后的设计取舍
- Kafka 4.x 时代:ZooKeeper 已移除、KRaft 唯一模式、队列能力(KIP-932)preview——旧资料甄别
- 选型决策树:业务消息 → RocketMQ;日志 / 埋点 / 流计算 → Kafka;低吞吐复杂路由 → RabbitMQ
- 集群规模思维:单集群能承载多少 topic × 多少 TPS,什么规模必须拆多集群
三、动手实验(学习时必须真跑)
- 同一压测脚本分别打 RocketMQ 5.3.x 与 Kafka 4.3.x(同机器、同消息大小),对比 TPS 与 P99 RT
- 分别测试两家的顺序消息与事务消息支持(Kafka 事务语义与 RocketMQ 事务消息的差异记录)
- 对一个给定场景(如「订单事件流供数仓消费」vs「下单发券业务消息」)写选型报告
四、验收标准(全部通过才进入下一篇)
五、阶段验收(本篇是阶段 3收尾篇)
六、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(Spring Boot 3.x / MySQL 8.0 / Redis 8.x / RocketMQ 5.3.x / Kafka 4.3 / ShardingSphere 5.5.3)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。