分析NameServer是如何进行路由信息管理的

2021-09-24 14:19:33 浏览数 (1)

NameServer作为一个轻量级的注册中心,主要是为消息生产者和消费者提供Topic的路由信息,并对这些路由信息和Broker节点进行管理,主要包括路由注册、路由剔除和路由发现。

本章将会通过源码的角度来具体分析NameServer是如果进行路由信息管理的。核心代码主要都在org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager中实现。

4.1 路由元信息

在了解路由信息管理之前,我们首先需要了解NameServer到底存储了哪些路由元信息,数据结构分别是什么样的。

查看代码我们可以看到主要通过5个属性来维护路由元信息,如下:

代码语言:javascript复制
private final HashMap<String/* topic */, List<QueueData>> topicQueueTable;
private final HashMap<String/* brokerName */, BrokerData> brokerAddrTable;
private final HashMap<String/* clusterName */, Set<String/* brokerName */>> clusterAddrTable;
private final HashMap<String/* brokerAddr */, BrokerLiveInfo> brokerLiveTable;
private final HashMap<String/* brokerAddr */, List<String>/* Filter Server */> filterServerTable;

我们依次对这5个属性进行展开说明。

0 人点赞