RocketMQ基于订阅发布机制,一个Topic拥有多个消息队列,一个Broker为每一主题默认创建4个读队列4个写队列。多个Broker组成一个集群,BrokerName由相同的多台Broker组成Master-Slave架构,brokerId为0代表Master,大于0表示Slave。BrokerLivelnfo中的lastUpdateTimestamp存储上次收到Broker心跳包的时间。
RocketMQ2主从从部署图如图
- RocketMQ路由注册是通过Broker与NameServer的心跳功能实现的。Broker启动时向集群中所有的NameServer发送心跳语句,每隔30s向集群中所有NameServer发送心跳包,NameServer收到Broker心跳包时会更新brokerLiveTable缓存中BrokerLiveInfo的lastUpdateTimestamp,然后Name Server每隔l0s扫描brokerLiveTable,如果连续l20s没有收到心跳包,NameServer将移除该Broker的路由信息同时关闭Socket连接。