目录
NameServer 是 RocketMQ 的核心组件之一,扮演着轻量级的服务发现和路由管理角色。它的主要作用是管理整个 RocketMQ 集群的元数据信息,为 Producer 和 Consumer 提供 Broker 的路由信息,确保消息的正确路由和高效传递。
NameServer 的核心作用
1. Broker 路由管理
-
NameServer 负责维护整个 RocketMQ 集群中所有 Broker 的路由信息。
-
每个 Broker 在启动时会向 NameServer 注册自己的信息,包括:
-
Broker 的地址(IP 和端口)。
-
Broker 负责的 Topic 和消息队列(MessageQueue)信息。
-
Broker 的主从角色(Master/Slave)。
-
-
NameServer 会定期检查 Broker 的健康状态(通过心跳机制),如果某个 Broker 宕机,NameServer 会将其从路由表中移除。
2. 服务发现
-
Producer 和 Consumer 在启动时,会从 NameServer 获取 Broker 的路由信息。
-
通过 NameServer,Producer 和 Consumer 可以知道:
-
哪些 Broker 负责哪些 Topic。
-
每个 Topic 的消息队列分布情况。
-
Broker 的主从关系(用于高可用和故障切换)。
-
3. 路由信息同步
-
NameServer 是无状态的,多个 NameServer 之间不会相互通信。
-
每个 Broker 会向所有的 NameServer 注册自己的信息,确保每个 NameServer 都有完整的路由信息。
-
Producer 和 Consumer 可以从任意一个 NameServer 获取路由信息。