匠心零度 轉載請注明原創出處,謝謝!
RocketMQ網絡部署圖
- NameServer:在系統中是做命名服務,更新和發現 broker服務。
- Broker-Master:broker 消息主機服務器。
- Broker-Slave: broker 消息從機服務器。
- Producer: 消息生產者。
- Consumer: 消息消費者。
說明: rocketmq系列都將會以rocketmq-4.1.0-incubating進行介紹。
在閱讀源碼時做了一定的注釋,公眾號【匠心零度】回復:rocketmq,可獲得基於rocketmq4.1.0加詳細中文代碼注釋 。歡迎大家 star、fork !
下面來討論下今天的主題namesrv。
namesrv存在意義
在RocketMQ網絡部署圖中,broker相當於服務端,而Producer、Consumer都是相當於其客戶端,如果broker固定死永遠不變,那么namesrv存在就沒有任何一樣的,但是由於服務端自動伸縮、故障以及升級等,服務端會變動,因此namesrv就有存在的意義了。
下面簡單說明:
因此需要一個類似namesrv的東西存在,一般存在兩種機制:客戶端發現機制和服務端發現機制。
客戶端發現機制
當發出請求服務時,客戶端通過注冊中心服務知道所有的服務實例。客戶端接着使用負載均衡算法選擇可用的服務實例中的一個並進行發送。
服務端發現機制
發出請求服務時,客戶端通過請求負載平衡器,負載均衡器通過注冊中心服務知道所有的服務實例。負載均衡器接着使用負載均衡算法選擇可用的服務實例中的一個並進行發送。
備注: Nginx HTTP服務器和反向代理服務器就是這種。
兩種機制總結
客戶端發現機制:客戶端有所有可用的服務實例,可以靈活方便的特定應用進行特定的負載均衡決策。
服務端發現機制:客戶端只需要給負載均衡器發請求即可,客戶端屏蔽掉了一些細節。
未完待續
如果讀完覺得有收獲的話,歡迎點贊、關注、加公眾號【匠心零度】,查閱更多精彩歷史!!!
加入知識星球,一起探討!