NameServer

什么是NameServer

NameServer是RocketMQ中的一个组件,负责管理集群中所有Broker的信息,应用系统通过与NameServer通信,能够感知到集群中存在多个Broker,每个Broker的具体信息等

NameServer的部署方式

为了NameServer能够做到高可用,NameServer是支持集群部署的,如果集群中某些NameServer节点挂了,只要没有全挂,集群还是能够正常对外提供服务的

Broker把自己的信息注册到哪个NameServer上?

实际上,每个Broker都会把自己的信息注册到所有的NameServer节点上

如果每个Broker仅仅将自己的信息注册到单个NameServer上,一旦这个NameServer宕机了,或者因为其他原因不能对外提供服务了,那么应用系统就无法获取到该Broker的信息了,也就降低了Broker的集群性能,因为这相当于注册到该NameServer上的Broker都不可用了

应用系统如何从NameServer获取Broker信息

由应用系统主动从NameServer中拉取Broker信息

NameServer如何感知Broker是否宕机

NameServer通过心跳机制来感知Broker的健康状态,Broker每30s会给所有的NameServer发送心跳,以此来告知NameServer自己状态是健康的

每次NameServer收到心跳后,就会更新Broker的最近一次心跳时间,并且NameServer会启动一个后台任务,每隔10s检查所有Broker的最近一次心跳时间,如果某个Broker超过120s没有发送心跳,就认为该Broker已经宕机了