首先来回忆一下rmq的架构图
rmq的架构图
为什么 NameServer 为什么要集群化部署?
最主要的原因是因为 高可用 ,因为nameserver来管理各个broker,要知道和哪个broker进行通信,所以一旦没了nameserver,就会很麻烦。-
Broker 是如何把自己的信息注册到NameServer 上的?
其实每个Broker都会向所有的NameServer进行注册。
向NameServer注册 -
系统是如何从NameServer 获取到 broker信息的
生产者和消费者主动去NameServer拉取Broker信息的。
拉取信息 -
如果Broker挂了,NameServer是怎么感知的
Broker和NameServer之间的 心跳机制 Broker每隔30s给每个NameServer发送心跳告诉他们自己还活着。 每次NameServer收到一个心跳,就可以更新他最近一次的心跳时间。
然后NameServer 会每隔10s运行一个任务,去检查一下各个Broker的最近一次心跳时间,
如果有Broker超过120s都没发送心跳,那么就认为这个Broker已经挂了
心跳机制 Broker挂了,怎么处理?
宕机场景
- 可以将消息发到其他的Broker
- 可以考虑主备 ,用slave来完成。
需要根据具体情况分析。