在 RocketMQ 的整体架构中,NameServer 扮演着“服务发现”或“路由管理中心”的重要角色。Producer 和 Consumer 都需要从 NameServer 获取 Topic 的路由信息,然后才能与相应的 Broker 节点进行消息发送或消费。下面将详细介绍 RocketMQ NameServer 的定位、工作机制、部署方式以及常见问题。
一、NameServer 的主要功能
-
存储路由信息
- NameServer 会维护当前可用的 Broker 信息(包括 Broker IP、端口、BrokerId、所属集群以及 Topic 和 Queue 的分布情况)。
- 当新 Broker 启动时,会向所有 NameServer 注册;当 Broker 下线或发生故障时,也会通知 NameServer 进行更新。
-
提供路由查询
- Producer 在发送消息前,会向 NameServer 请求某个 Topic 的路由信息,从而获得可用的 Broker 列表和 Queue 分布;
- Consumer 同样需要从 NameServer 获取 Topic 对应的 Broker、Queue 信息,才能订阅并拉取消息。
-
轻量且无状态
- NameServer 本身非常简单,默认没有依赖外部存储(如数据库),路由信息都在内存中;
- 可以水平扩展多台 NameServer,每个都独立工作,不进行数据同步;Producer/Consumer 会按照配置的地址列表去顺序访问多个 NameServer,直到获取到路由信息。
二、工作原理
-
注册和心跳
- Broker 启动后会定时(默认 30 秒)向 NameServer 发送心跳包,包括自身配置信息、Topic 配置等,以便 NameServer 保持最新的路由信息。
- 如果超过一定时间(默认 120 秒)没有收到 Broker 的心跳,NameServer 会认为该 Broker 已不可用,自动将其路由信息移除。
-
查询路由
- Producer 或 Consumer 在启动时,首先向 NameServer 发送
GET_ROUTE_INFO_BY_TOPIC请求,NameServer 返
- Producer 或 Consumer 在启动时,首先向 NameServer 发送

最低0.47元/天 解锁文章
853

被折叠的 条评论
为什么被折叠?



