官方介绍
NameServer(名字服务)充当消息的提供者。生产者或消费者能够通过NameServer查找各主题对应的Broker IP列表。多个NameServer实例组成集群,但是相互独立,没有信息交换。具体来说就是:
NameServer 是一个非常简单的 Topic 路由注册中心 ,其角色类似 Dubbo 中的 zookeeper,支持 Broker 的动态注册与发现。主要包括两个功能:
- Broker 管理:NameServer 接受 Broker 集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查 Broker 是否还存活
- 路由信息管理:每个 NameServer 将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。然后 Producer 和 Conumser 通过 NameServer 就可以知道整个 Broker 集群的路由信息,从而进行消息的投递和消费。
NameServer 通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker 是向每一台 NameServer 注册自己的路由信息,所以每一个 NameServer 实例上面都保存一份完整的路由信息。当某个 NameServer 因某种原因下线了,Broker 仍然可以向其它 NameServer 同步其路由信息,Producer,Consumer 仍然可以动态感知 Broker 的路由的信息。
NameServer启动流程
- 创建Controller:解析NameServer配置并完成赋值操作
- 初始化Controller:创建NettyRemotingServer对象、Netty服务线程池、定时任务
- 启动Controller:启动Netty服务