RocketMQ核心架构
原创大约 1 分钟
虽然RocketMQ一直在不停地演变和进化,但它的核心结构是基本上没有改变的。

RocketMQ主要由下面几个部分组成。
Broker
:负责消息的存储和传输,响应消费者的请求,它将消息存储在本地磁盘文件中。NameServer
:管理集群中所有的Broker
,同时负责完成Broker
的路由注册与服务发现,它和Broker
之间通过心跳机制保持连接。生产者
(Producer):负责生产并发送消息的组件。消费者
(Consumer):负责接收并消费消息的组件。生产者
或消费者
通过轮询,定时向NameServer
拉取最新Broker
注册信息。
为了避免单点故障,提升性能,RocketMQ又将Broker
分为两种不同的角色。
Master Broker
:主Broker
,负责响应请求并存储消息。Slaver Broker
:从Broker
,一般只同步Master Broker
的数据,偶尔也会响应消费者的读请求。
根据Master Broker
和Slaver Broker
的不同,RocketMQ又有三种不同的集群模式,不管是哪种模式,它们都有一些共同点。


Master Broker
和Slaver Broker
都会向NameServer
注册自己,以及发送心跳。消费者可能从
Master Broker
获取消息,也可能从Slave Broker
获取消息,但消息只会被消费一次。高可用集群无非就是从多个
Slaver Broker
之中自动产生新的Master Broker
,它是通过Raft协议实现的。