从3.x之前使用Zookeeper,之后改成NameServer
NameServer是整个集群的状态服务器 NameServer部署,相互独立(相当于热备份)
为什么不用Zookeeper,因为根据业务需要不需要主从选举(相对来说比较重量级),NameServer只需要维护节点的状态和一些元数据信息
NameServer维护的主要信息:
private final HashMap<String/* topic */,List<QueueData>> topicQueueTable;
List<QueueData>的长度 指的是master Broker的个数
private final HashMap<String/* brokerName */,BrokerData> brokerAddrTable;
BrokerData存储的是节点地址的一些信息
private final HashMap<String/* clusterName */,Set<String/*brokerName */> clusterAddrTable;
维护一个clusterName和一组brokerName的组成
private final HashMap<String/* brokerAddr */,BrokerLiveInfo> brokerLiveTable;
存储broker地址和broker的状态