NameServer、Broker、Producer、Consumer之間如何進行通信,如何工作:
NameServer和Broker:
NameServer主要做兩件事情,第一就是管理Broker,接受來自Broker集群發送的注冊,
以及提供心跳機制來檢查我們的Broker是否還存活。第二件事情就是管理路由信息,
每一個NameServer都存儲有路由信息和隊列信息,提供給Producer和Consumer查詢。
Broker主要負責消息的存儲和傳遞,消息查詢等。主要包含遠程模塊、客戶端管理、存儲服務、HA服務和索引服務。
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記錄。