转载:https://blog.csdn.net/yhl_jxy/article/details/77512226,
这个更好:
https://blog.csdn.net/javahongxi/article/details/72956608
Broker(不管是Master还是Slave)和每一台NameServer机器来建立TCP连接。
Broker在启动的时候调用BrokerController中start方法,获取远程nameServerAddressList(远程NameServer服务列表),
Broker对nameServerAddressList进行for循环处理,注册自己配置的topic信息到NameServer集群的每一台机器中。
即每一台NameServer都有该Broker的topic的配置信息。Master与Master之间无连接,Master与Slave之间有连接。
Producer和NameServer:
每一个Producer与NameServer集群中的一台机器建立TCP连接,从这台NameServer上拉取路由信息。
Producer和broker:
Producer和它要发送的topic相关的Master类型的Broker建立TCP连接,用于发送消息以及定时的心跳信息。
Broker中记录该Producer的信息,供查询使用。
Consumer和NameServer:
每一个Consumer会和NameServer集群中的一台机器建立TCP连接,会从这台NameServer上拉取路由信息,进行负载均衡。
Consumer和Broker:
Consumer可以与Master或者Slave的Broker建立TCP连接来进行消费消息,Consumer也会向它所消费的Broker发送心跳信息,供Broker记录。