一、角色介绍
Rocketmq整体包含4个角色
- Producer:消息⽣产者和发送者,就是寄件人。
- NameServer:路由注册中⼼,管理Broker,就是卫星。
- Broker:消息存储服务器,暂存和传输消息,就是邮局。
- Consumer:消息消费者和接收者,就是收件人。
在介绍完以上4个角色以后,还需要重点介绍一下Topic和Message Queue:
- Topic:主题,用来区分不同类型的消息
- Message Queue:一个Topic可以设置一个或多个Message Queue,相当于Topic的分区,用于并行发送和接收消息。
二、集群特点
NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。
Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。
Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。
Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
这里面最核心的是每个Broker与Name Server集群中的所有节点建立长连接这样做好处多多。
- 这样可以使Name Server之间可以没有任何关联,因为它们绑定的Broker是一致的。
- 作为Producer或者Consumer可以绑定任何一个Name Server 因为它们都是一样的。
三、集群模式
- 单Master模式
- 多Master模式
- 多Master多Slave模式(异步)
- 多Master多Slave模式(同步)