從3.x之前使用Zookeeper,之後改成NameServer
NameServer是整個叢集的狀态伺服器 NameServer部署,互相獨立(相當于熱備份)
為什麼不用Zookeeper,因為根據業務需要不需要主從選舉(相對來說比較重量級),NameServer隻需要維護節點的狀态和一些中繼資料資訊
NameServer維護的主要資訊:
private final HashMap<String,List<QueueData>> topicQueueTable;
List<QueueData>的長度 指的是master Broker的個數
private final HashMap<String,BrokerData> brokerAddrTable;
BrokerData存儲的是節點位址的一些資訊
private final HashMap<String,Set<String> clusterAddrTable;
維護一個clusterName和一組brokerName的組成
private final HashMap<String,BrokerLiveInfo> brokerLiveTable;
存儲broker位址和broker的狀态