--- tags: [MQ, 消息队列, 索引] create time: 2026-05-24 19:52 --- # 消息队列(Message Queue) ## 概述 消息队列是分布式系统中最核心的中间件之一,用于解耦、削峰、异步通信。本目录从基础概念出发,逐层深入到协议标准、存储引擎、设计模式、流处理集成、消息追踪、K8s 部署、测试策略、安全运维与架构实战,构建完整的 MQ 知识体系。 ## 知识地图 ```mermaid graph TD A["消息队列"] --> B["基础概念"] A --> C["消息模型"] A --> D["协议与标准"] A --> E["存储引擎"] A --> F["可靠性保障"] A --> G["高级特性"] A --> H["主流 MQ 对比"] A --> I["消息设计模式"] A --> J["流处理与事件驱动"] A --> K["监控与运维"] A --> L["安全与多租户"] A --> M["架构与实战"] B --> B1["什么是 MQ"] B --> B2["核心术语"] B --> B3["适用场景与选型原则"] C --> C1["队列模型 vs 发布订阅模型"] C --> C2["Consumer Group 与 Rebalance"] C --> C3["Push vs Pull"] D --> D1["AMQP 协议"] D --> D2["MQTT 协议"] D --> D3["JMS 与 OpenMessaging"] E --> E1["Kafka 存储设计"] E --> E2["RocketMQ CommitLog"] E --> E3["RabbitMQ 消息存储"] F --> F1["消息确认与持久化"] F --> F2["Exactly-Once 语义"] F --> F3["消息幂等性"] F --> F4["顺序性保障"] F --> F5["死信队列与消息回溯"] G --> G1["延迟消息与定时消息"] G --> G2["事务消息"] G --> G3["消息过滤与路由"] G --> G4["Schema 管理与演进"] G --> G5["消息压缩与批处理"] H --> H1["Kafka"] H --> H2["RabbitMQ"] H --> H3["RocketMQ"] H --> H4["Pulsar"] H --> H5["NATS / NSQ / Redis Streams"] H --> H6["选型对比"] I --> I1["Competing Consumers"] I --> I2["CQRS 与 Event Sourcing"] I --> I3["Claim Check 与消息瘦身"] I --> I4["背压与流控"] I --> I5["请求-回复模式"] J --> J1["Kafka Streams"] J --> J2["流处理框架集成"] J --> J3["事件驱动架构"] J --> J4["MQ 与 CDC"] K --> K1["监控指标与告警"] K --> K2["消费积压治理"] K --> K3["消息轨迹与链路追踪"] K --> K4["容器化与 K8s 部署"] K --> K5["性能调优"] K --> K6["测试策略"] L --> L1["认证与授权"] L --> L2["加密与审计"] M --> M1["高可用架构"] M --> M2["跨集群复制与容灾"] M --> M3["分布式事务实践"] M --> M4["MQ 与微服务"] M --> M5["客户端 SDK 最佳实践"] M --> M6["客户端连接管理"] M --> M7["MQ 设计与实现"] style A fill:#4A90D9,color:#fff style B fill:#6EC1E0,color:#fff style C fill:#6EC1E0,color:#fff style D fill:#6EC1E0,color:#fff style E fill:#F5A623,color:#fff style F fill:#F5A623,color:#fff style G fill:#F5A623,color:#fff style H fill:#D0021B,color:#fff style I fill:#D0021B,color:#fff style J fill:#D0021B,color:#fff style K fill:#D0021B,color:#fff style L fill:#D0021B,color:#fff style M fill:#D0021B,color:#fff ``` --- ## 目录 ### 一、基础概念 由浅入深,先搞清楚 MQ 是什么、为什么需要它。 | 序号 | 主题 | 说明 | |:---:|------|------| | 1 | [[01-基础概念/1-MQ-基础概念|MQ 基础概念]] | 什么是消息队列、核心术语(Producer / Broker / Consumer / Topic / Queue)、为什么需要 MQ | | 2 | [[01-基础概念/2-MQ-适用场景与选型原则|MQ 适用场景与选型原则]] | 解耦、异步、削峰三大经典场景;何时该用 MQ,何时不该用 | ### 二、消息模型 理解消息如何从生产者流向消费者。 | 序号 | 主题 | 说明 | |:---:|------|------| | 3 | [[02-消息模型/3-MQ-消息模型|MQ 消息模型]] | 队列模型 vs 发布订阅模型、Consumer Group 机制、推模式 vs 拉模式 | ### 三、协议与标准 了解底层通信协议,才能理解不同 MQ 的设计取舍。 | 序号 | 主题 | 说明 | |:---:|------|------| | 4 | [[03-协议与标准/4-MQ-消息协议总览|MQ 消息协议总览]] | AMQP / MQTT / STOMP / JMS / OpenMessaging 横向对比与适用场景 | | 5 | [[03-协议与标准/5-AMQP-协议|AMQP 协议]] | AMQP 0-9-1 核心概念(Exchange / Binding / Virtual Host)、AMQP 1.0 与 0-9-1 的差异 | | 6 | [[03-协议与标准/6-MQTT-协议|MQTT 协议]] | IoT 场景下的轻量级协议、QoS 等级(0/1/2)、遗嘱消息、会话保持 | | 7 | [[03-协议与标准/7-JMS-与-OpenMessaging|JMS 与 OpenMessaging]] | Java 消息服务规范、点对点与发布订阅接口、OpenMessaging 标准化尝试 | ### 四、存储引擎 消息如何落地存储,决定了 MQ 的吞吐与可靠性上限。 | 序号 | 主题 | 说明 | |:---:|------|------| | 8 | [[04-存储引擎/8-MQ-存储引擎设计|MQ 存储引擎设计]] | 顺序写盘、零拷贝、Page Cache、内存映射等通用高性能存储原理 | | 9 | [[04-存储引擎/9-Kafka-存储设计|Kafka 存储设计]] | Partition Log 分段存储、稀疏索引、日志压缩(Log Compaction)、时间轮(Timing Wheel) | | 10 | [[04-存储引擎/10-RocketMQ-CommitLog|RocketMQ CommitLog]] | CommitLog + ConsumeQueue + IndexFile 三层存储模型、MappedFile 内存映射 | | 11 | [[04-存储引擎/11-RabbitMQ-消息存储|RabbitMQ 消息存储]] | Erlang Mnesia 表、持久化队列(durable / lazy queue)、内存告警与流控 | ### 五、可靠性保障 消息不能丢、不能重复、最好还能保序——生产环境的核心诉求。 | 序号 | 主题 | 说明 | |:---:|------|------| | 12 | [[05-可靠性保障/12-MQ-消息确认与持久化|MQ 消息确认与持久化]] | ACK 机制、同步/异步刷盘、主从同步、消息投递语义(At-Most-Once / At-Least-Once / Exactly-Once) | | 13 | [[05-可靠性保障/13-MQ-Exactly-Once-语义|MQ Exactly-Once 语义]] | 幂等生产者、事务性生产者、Consumer 端幂等消费、Exactly-Once 的边界与代价 | | 14 | [[05-可靠性保障/14-MQ-消息幂等性|MQ 消息幂等性]] | 为什么会产生重复消息、幂等实现方案(唯一 ID + 去重表、乐观锁、Token 机制) | | 15 | [[05-可靠性保障/15-MQ-顺序性保障|MQ 顺序性保障]] | 全局有序 vs 分区有序、Partition/Queue 级别的有序实现、多消费者场景下的顺序挑战 | | 16 | [[05-可靠性保障/16-MQ-死信队列与消息回溯|MQ 死信队列与消息回溯]] | 死信队列的产生原因与处理策略、消息重试机制、消息回溯(按时间/偏移量重放) | ### 六、高级特性 MQ 在复杂业务场景下提供的进阶能力。 | 序号 | 主题 | 说明 | |:---:|------|------| | 17 | [[06-高级特性/17-MQ-延迟消息与定时消息|MQ 延迟消息与定时消息]] | 延迟级别、定时投递的实现原理(时间轮、定时任务)、典型应用(订单超时取消) | | 18 | [[06-高级特性/18-MQ-事务消息|MQ 事务消息]] | 半消息机制、事务状态回查、分布式事务的最终一致性方案 | | 19 | [[06-高级特性/19-MQ-消息过滤与路由|MQ 消息过滤与路由]] | Tag / SQL 表达式过滤、Topic 路由策略、消息 Schema 演进 | | 20 | [[06-高级特性/20-MQ-Schema-管理与演进|MQ Schema 管理与演进]] | Schema Registry、Avro/Protobuf/Thrift 编码、前向/后向/完全兼容性策略 | | 21 | [[06-高级特性/21-MQ-消息压缩与批处理|MQ 消息压缩与批处理]] | Snappy / LZ4 / Zstd 压缩算法对比、批量发送与拉取策略、压缩对吞吐的影响 | ### 七、主流 MQ 对比 了解主流产品的设计差异,才能做出合理的技术选型。 | 序号 | 主题 | 说明 | |:---:|------|------| | 22 | [[07-主流MQ对比/22-Kafka|Kafka]] | 架构设计(Partition / Replica / ISR)、高吞吐原理(零拷贝、顺序写、批量拉取)、Kafka 生态 | | 23 | [[07-主流MQ对比/23-RabbitMQ|RabbitMQ]] | AMQP 协议、Exchange 类型(Direct / Fanout / Topic / Headers)、插件生态 | | 24 | [[07-主流MQ对比/24-RocketMQ|RocketMQ]] | NameServer / Broker / Producer / Consumer 架构、事务消息原生支持、延迟消息实现 | | 25 | [[07-主流MQ对比/25-Apache-Pulsar|Apache Pulsar]] | 计算存储分离架构、Segment 存储(BookKeeper)、多租户原生支持、与 Kafka 的架构对比 | | 26 | [[07-主流MQ对比/26-NATS-NSQ-Redis-Streams|NATS / NSQ / Redis Streams]] | NATS JetStream、NSQ 无中心架构、Redis Streams 底层 Radix Tree、轻量级场景选型 | | 27 | [[07-主流MQ对比/27-MQ-选型对比|MQ 选型对比]] | Kafka vs RabbitMQ vs RocketMQ vs Pulsar vs NATS 多维度对比(吞吐、延迟、可靠性、生态、运维) | ### 八、消息设计模式 用好 MQ 不只是选产品,更需要掌握经过验证的架构模式。 | 序号 | 主题 | 说明 | |:---:|------|------| | 28 | [[08-消息设计模式/28-MQ-Competing-Consumers-模式|MQ Competing Consumers 模式]] | 多消费者竞争消费、负载均衡策略、分区分配算法(Range / Round-Robin / Sticky / Cooperative) | | 29 | [[08-消息设计模式/29-MQ-CQRS-与-Event-Sourcing|MQ CQRS 与 Event Sourcing]] | 命令查询分离、事件作为数据源、事件存储与重放、与传统 CRUD 的对比 | | 30 | [[08-消息设计模式/30-MQ-Claim-Check-与消息瘦身|MQ Claim Check 与消息瘦身]] | 大消息拆分存储、消息体外置到对象存储、按需拉取减少网络开销 | | 31 | [[08-消息设计模式/31-MQ-背压与流控|MQ 背压与流控]] | 生产速率超过消费能力时的保护机制、Broker 端流控、Consumer 端反压、限流降级策略 | | 32 | [[08-消息设计模式/32-MQ-请求-回复模式|MQ 请求-回复模式]] | RPC over MQ、关联 ID(CorrelationID)、Reply-To 队列、与 gRPC/HTTP 调用的对比取舍 | ### 九、流处理与事件驱动 MQ 不只是"传消息",更是实时数据流的基础设施。 | 序号 | 主题 | 说明 | |:---:|------|------| | 33 | [[09-流处理与事件驱动/33-MQ-与流处理|MQ 与流处理]] | 消息队列 vs 流处理平台的区别与融合、Kafka Streams / Flink / Spark Streaming 集成 | | 34 | [[09-流处理与事件驱动/34-事件驱动架构-EDA|事件驱动架构 EDA]] | 事件风暴(Event Storming)、事件编排 vs 事件编排(Orchestration vs Choreography)、Saga 模式 | | 35 | [[09-流处理与事件驱动/35-MQ-与-CDC|MQ 与 CDC]] | Change Data Capture 原理、Debezium + Kafka Connect、数据库变更实时同步方案 | ### 十、监控与运维 线上 MQ 出问题,如何快速发现、定位与修复。 | 序号 | 主题 | 说明 | |:---:|------|------| | 36 | [[10-监控与运维/36-MQ-监控指标与告警|MQ 监控指标与告警]] | Broker / Producer / Consumer 核心指标、Prometheus + Grafana 看板搭建、告警阈值设计 | | 37 | [[10-监控与运维/37-MQ-消费积压治理|MQ 消费积压治理]] | 积压根因分析、紧急扩容消费者、临时队列转发、监控告警策略 | | 38 | [[10-监控与运维/38-MQ-消息轨迹与链路追踪|MQ 消息轨迹与链路追踪]] | 消息唯一标识(TraceID)传递规范、端到端链路可视化、消息审计日志、排查"消息去哪了" | | 39 | [[10-监控与运维/39-MQ-容器化与-K8s-部署|MQ 容器化与 K8s 部署]] | K8s Operator(Strimzi / RocketMQ Operator)、Helm Chart 部署、StatefulSet 有状态服务管理、资源规划与持久卷 | | 40 | [[10-监控与运维/40-MQ-性能调优|MQ 性能调优]] | Producer 批量与压缩、Consumer 并发与预取、Broker 刷盘与页缓存策略、网络参数优化 | | 41 | [[10-监控与运维/41-MQ-测试策略|MQ 测试策略]] | 集成测试(Testcontainers)、影子流量(Shadow Topic)、故障注入(Chaos Engineering)、消息契约测试(Pact) | ### 十一、安全与多租户 生产环境不可或缺的安全基础设施。 | 序号 | 主题 | 说明 | |:---:|------|------| | 42 | [[11-安全与多租户/42-MQ-认证与授权|MQ 认证与授权]] | SASL / mTLS / OAuth2 认证机制、ACL 细粒度授权、Kerberos 集成 | | 43 | [[11-安全与多租户/43-MQ-加密与审计|MQ 加密与审计]] | 传输加密(TLS)、消息级加密、审计日志、配额管理与多租户隔离 | ### 十二、架构与实战 面向真实生产环境的问题与解决方案。 | 序号 | 主题 | 说明 | |:---:|------|------| | 44 | [[12-架构与实战/44-MQ-高可用架构|MQ 高可用架构]] | Broker 集群与副本机制、无单点设计、灰度发布 | | 45 | [[12-架构与实战/45-MQ-跨集群复制与容灾|MQ 跨集群复制与容灾]] | MirrorMaker 2.0、Confluent Replicator、Dledger 多副本、跨地域同步、异地多活架构 | | 46 | [[12-架构与实战/46-MQ-分布式事务实践|MQ 分布式事务实践]] | 本地消息表 + MQ、事务消息 + 状态回查、Saga 模式与 MQ 结合 | | 47 | [[12-架构与实战/47-MQ-与微服务|MQ 与微服务]] | 服务间通信模式(同步 vs 异步)、事件驱动微服务、服务网格(Istio/Linkerd)与 MQ 集成、背压传播 | | 48 | [[12-架构与实战/48-MQ-客户端-SDK-最佳实践|MQ 客户端 SDK 最佳实践]] | 多语言 SDK 设计范式、连接池管理、优雅关闭(Graceful Shutdown)、序列化策略、错误处理规范 | | 49 | [[12-架构与实战/49-MQ-客户端连接管理|MQ 客户端连接管理]] | 长连接与心跳、重连与重试策略、分区分配策略(Consumer Rebalance)、客户端容错 | | 50 | [[12-架构与实战/50-MQ-设计与实现|MQ 设计与实现]] | 从零设计一个简易 MQ:存储引擎、网络模型、消费者管理、高可用方案 | ### 附录:云消息服务 了解云厂商托管方案,拓宽技术视野。 | 序号 | 主题 | 说明 | |:---:|------|------| | 51 | [[13-云消息服务/51-云消息服务|云消息服务]] | AWS SQS / SNS / MSK、Azure Service Bus、Google Pub/Sub、阿里云 RocketMQ 与 Kafka、自建 vs 托管对比 | --- ## 学习路径建议 ```mermaid graph LR S1["1 基础概念"] --> S2["2 消息模型"] S2 --> S3["3 协议与标准"] S3 --> S4["4 存储引擎"] S4 --> S5["5 可靠性保障"] S5 --> S6["6 高级特性"] S6 --> S7["7 主流 MQ"] S7 --> S8["8 设计模式"] S8 --> S9["9 流处理与 EDA"] S9 --> S10["10 监控运维"] S10 --> S11["11 安全"] S11 --> S12["12 架构实战"] style S1 fill:#6EC1E0,color:#fff style S2 fill:#6EC1E0,color:#fff style S3 fill:#6EC1E0,color:#fff style S4 fill:#F5A623,color:#fff style S5 fill:#F5A623,color:#fff style S6 fill:#F5A623,color:#fff style S7 fill:#D0021B,color:#fff style S8 fill:#D0021B,color:#fff style S9 fill:#D0021B,color:#fff style S10 fill:#D0021B,color:#fff style S11 fill:#D0021B,color:#fff style S12 fill:#D0021B,color:#fff ``` > [!tip] 建议 > - **初学者**:按 1 → 2 → 3 → 5 顺序阅读,打牢基础后再进入存储引擎和高级特性。 > - **有经验者**:可直接跳到 7(主流 MQ)和 8(设计模式),以问题驱动学习。 > - **架构师**:重点关注 8 设计模式、9 流处理、10 监控运维、12 架构实战四个模块。 > - 每篇笔记都包含思考题,建议先独立思考再看解答。 ## 关联笔记 - [[分布式系统]]