1 NameServer的功能
1、每个Broker启动的时候会向Namesrv发送注册请求,Namesrv接收Broker的请求注册路由信息,NameServer保存活跃的broker列表,包括Master和Slave;
2、用来保存所有topic和该topic所有队列的列表;
3、NameServer用来保存所有broker的Filter列表
4、接收client(Producer和Consumer)的请求根据某个topic获取所有到broker的路由信息;
2 NameServer的初始化及启动过程
1、KVConfigManager类加载NameServer的配置参数,配置参数的路径是 $HOME /namesrv/kvConfig.json;将配置参数加载保存到KVConfigManager.configTable:HashMap<String/*namespace*/,HashMap<String/*key*/,String/*value*/>>变量中。
2、以初始化BrokerHousekeepingService对象为参数初始化NettyRemotingServer对象,BrokerHousekeepingService对象作为该Netty连接中Socket链接的监听器(ChannelEventListener);监听与Broker建立的渠道的状态(空闲、关闭、异常三个状态),并调用BrokerHousekeepingService的相应onChannel****方法。其中渠道的空闲、关闭、异常状态均调用RouteInfoManager.onChannelDestory方法处理。清理RouteInfoManager类的几个成员变量数据:
变量名称 | 变量类型 | 含义 |
---|---|---|
topicQueueTable | HashMap<String/*topic*/, List<QueueData>> | 主题与topic配置的对应关系,topics.json的topicConfigTable数据,在QueueData对象中记录了该topic的BrokerName |
brokerAddrTable | HashMap<String/*brokerName*/, BrokerData> | Broker名称与broker属性的map |
clusterAddrTable | HashMap<String/* clusterName */, Set<String/* brokerName */>> | 集群与broker集合的对应关系 |
brokerLiveTable | HashMap<String/* brokerAddr */, BrokerLiveInfo> | Broker的信息集合 |