在 RocketMQ 的整体架构中,Broker 是消息的核心存储与转发节点,负责保存从 Producer 发来的消息,并向 Consumer 提供消息拉取服务。它与 NameServer、Producer、Consumer 一同构成了 RocketMQ 的分布式消息中间件生态。本文将介绍 Broker 在 RocketMQ 中所扮演的角色、内部结构、主从复制模式以及常见的运维与使用注意事项。
1. Broker 的核心作用
-
消息存储
- Producer 发送的消息会被持久化到 Broker 的存储文件中(CommitLog / ConsumeQueue / IndexFile 等),待后续 Consumer 拉取。
- 默认使用零拷贝 (Zero-Copy) 方式及顺序写磁盘,兼顾高吞吐与高性能。
-
消息转发与调度
- Consumer 拉取消息时,Broker 负责根据路由和队列信息,将对应 Topic/Queue 中的消息发送给 Consumer 端。
- 对延迟消息、事务消息等也有特殊的调度机制(如将延时消息放入
SCHEDULE_TOPIC_XXXX,到期后再转发到真实 Topic)。
-
保障消息可靠性
- 通过配置刷盘策略(同步刷盘或异步刷盘)和主从复制方式(同步或异步),Broker 可以在性能与数据安全之间做灵活的权衡。
- 在主从模式下,Slave Broker 可以在主机故障时快速接管读操作(读取历史消息)。
-
维持与 NameServer 的心跳
- Broker 会定期向 NameServer 注册并汇报自身运行状态与 Topic 配置数据;
- NameServer 记录所有 Broker 路由信息,Producer 和 Consumer 查询 Topic 路由时,NameServer 会返回相应 Broker 地址列表。
2. Broker 的内部结构
-
CommitLog
- RocketMQ 最底层的消息存储文件,所有消息都会以顺序写的方式追加到 CommitLog 中。
- 对消息进行追加写,并通过
Offset来定位消息物理地址,保证高效的顺序 I/O。
-
ConsumeQueue
- 为了加速消息消费的检索,RocketMQ 会针对每个 Topic 下的每个 Queue 维护一个 ConsumeQueue 文件(相当于一层索引),记录了消息在 CommitLog 中的起始物理偏移量、大小、Tag Hash 等信息。
- Consum

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



