一:RocketMQ 部署架构
1、RocketMQ的角色介绍
Producer :消息的发送者ProducerGroup:同一类producer的集合Consumer :消息接收者;PushConsumer : broker主动推送消息给消费端PullConsumer :消费端主动拉取消息ConsumerGroup:同一类consumer的集合Broker :暂存和传输消息; 一个broker中可以存储多个topic( 一个topic也可以分片在多个broker上 )NameServer :管理 Broker ;Topic :区分消息的种类;一个发送者可以发送消息给一个或者多个 Topic ;一个消息的接收者可以订阅一个或者多个Topic 消息Message Queue :相当于是 Topic 的分区,一个topic下可以挂载多个queue,消息真实的物理存储结构;广播消息: 所有消费者都会消费该消息,哪怕是同一个 ConsumerGroup 的消费者集群消费:一条消息只会被同一个 ConsumerGroup下的一个消费者消费,如果是多条消息,会均衡消费
集群部署如上图:
NameServer:无状态节点,可集群部署,节点间无信息同步。Broker:mater:slave一对多,通过指定相同的BrokerName建立关系。
BrokerId为0为master,非0为slave,slave中只有为1的那个可参与读负载。
每个broker与nameServer中所有节点建立长连接,定时注册topic信息上去。
Producer: 与nameServer中随机一个节点建立长连接,定期获取topic路由信息,并与提供topic服务的master建立长连接,定时发送心跳。 无状态,可集群部署。consumer:同producer,另外也会与slave建立长连接和发送心跳。
可以从master或slave订阅消息,如果是master,则master会根据最大偏移量和拉取偏移量对比,(判断是否读取老消息,老消息已持久化,会产生IO),以及slave是否可读等,建议下一次从master还是slave拉取。
了解了物理集群后,
来看看逻辑上的关系:
![]()
![]()
如上图示:
- 在broker集群中,每个broker是可以存储多个topic的,当然,每个topic也是可以分散到不同的broker上。
- 在一个broker的每个topic分片下,有多个

本文深入讲解RocketMQ的部署架构及特性,包括角色介绍、消息发送与接收方式、集群部署细节等,并提供了Java示例代码及Spring整合教程。
最低0.47元/天 解锁文章
919

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



