RocketMQ 集群搭建
Producer : 消息的发送者
Consumer : 消息接受者
Broker : 暂存和传输消息 // 快递
Name Server : 管理Broker // 邮政管理机构
Topic : 区分消息的种类, 一个Producer可以发给一个或者,多个,Topic , 一个Consumer 也可以订阅一个或者多个Topic的消息
Message Queue: 消息队列 吗对Topic 分区,用于并行发送和接受消息 ,相当于一个Topic的子分类
Producer 发送消息者,发到 Broker
Producer 先要去问 Name Server ,给他分配一个Broker
实际上 Name Server就是 Broker的管理者
Broker 要上报自己的状态
Consumer也要去问Name Server,从哪个Broker中拿消息
Name Server 里面都是无状态的,Broker对每个 Name Server 都会上报状态,不用担心不同Name Server的同步性。
Producer 之间也没有数据同步 , Consumer之间也没有
关键在 Broker, 分为 Master 和 Slave,Master负责 写, Slave负责读, 意思是
Producer发送的信息,大多发送给Master ,就是写
Consumer 读消息, 大多是从slaver 读
通过 Broker id来分Master 和 slave节点 ,master id 为0 。slave 是 非0
一个 slave只能属于一个master, 一个master可以有多个slave
Master和slave之间要同步数据
Producer 和某个Name Server 节点(随机选择)之间也会进行一个长连接,定期去询问 要传给哪个Broker,获取 Topic 路由信息 ,并向提供该Topic服务的 Master建立 长连接,定时发送心跳。
Consumer 也会和某个Name server节点(随机选择)之间建立长连接,获取 Topic 路由信息 ,并向提供 该Topic服务的Master 和 Slave建立长连接,定时发送心跳。
Consumer既可以从Master订阅,也可以从slave订阅,取决于Broker的配置
。
集群模式
Name server 、Producer、Consumer 搭建都很简单,直接启动多个就行了。
重要的是Broker集群的搭建。
1、单master模式
2、多master模式
全是master
配置简单,单独一个挂了没关系 ,
3、多master、多slave模式 (异步)
4、多Master 多slave模式(同步)