消息队列路由中心
NameServer 是什么?
轻量无状态的路由注册中心,告诉你该找哪个 Broker
类比:查「这个快递该去哪个驿站」的地图
它做什么
Broker 每 30 秒向所有 NameServer 上报心跳和 Topic 路由信息;客户端发消息前先问 NameServer 拿路由,然后缓存 30 秒。
NameServer 节点之间互不通信、不选举,每个都是完整数据的只读副本,所以随便挂几个都不影响可用性。
和 ZooKeeper 的对比
Kafka 老架构用 ZooKeeper 存元数据、做 Controller 选举,组件重、运维复杂。RocketMQ 把这件事做薄:NameServer 只做路由,不做选举,部署就是起几个进程。
Kafka 3.x 的 KRaft 模式也是在往「去掉外部依赖」的方向走。
常见故障
NameServer 全挂时,已在运行的客户端因为缓存了路由还能继续工作约 30 秒,但新客户端无法启动。所以生产至少部署 2~3 个节点。