消息服务器(Broker)在启动的时候会向所有的NameServer进行注册。
    消息生产者(Producer)在发送消息的时候先从NameServer中检索出消息服务器(Broker)的地址,然后选取其中的一个进行发送。一旦发送不成功,就会立即故障转移换一台消息服务器(Broker)进行重新发送。
    消息消息者(Consumer)在消费消息的时候先从NameServer中检索出消息服务器(Broker)的地址,然后选取其中的一个进行消息拉取消息进行消费。
    路由中心(NameServer)为了避免同步消耗,所以各个节点并不通信。这点跟传统注册中心稍有不同,传统注册中心是Service注册某一个中心节点,而这个节点再将Service的信息同步给其他节点。而RocketMQ中Broker在续写心跳包时发送所有的NameServer,NameServer之间不做通信同步。
    3.1 NameServer的架构设计 - 图1

    NameServer的架构流程与交互设计:
    1):Broker每隔30s向NameServer集群的所有机器发送心跳包,心跳包中包含自身的Topic路由等数据。NameServer会根据该心跳包信息,更新存储Broker的时间戳。
    2):NameServer会每隔10s扫描一次brokerLiveTable(存储Broker心跳信息时间戳集合)一旦超过120s未收到心跳包,NameServer会进行Broker的剔除处理。
    3):Consumer集群或Producer集群每隔30s向NameServer拉取最新的Broker集群信息(Topic路由)。