NameServer
1. 什么是NameServer?
NameServer
就是一个保存Broker状态的一个服务和Broker管理。
NameServer 的特点:
- NameServer 和 每一台Broker 服务器保持长连接,并间隔30s检测一次Broker是否存活。
- 检测到 Broker右机 , 则从路由注册表中将其移除 。 但是路由变化不会马上通知消息生产者。— 降低 NameServer实现的复杂性,在消息发送端提供容错机制来保证消息发送的高可用性。
- NameServer本身的高可用可通过部 署多台 NameServerr服务器来实现,但彼此之间互不通信,也就是 NameServer服务器之间在某一时刻的数据并不会完全相同
作用:
- 消息生产者 和 消息消费者提供关 于主题 Topic 的路由信息
- NameServer存储路由 的基础信息
- 管理 Broker节点,包括路由 注册、路由删除等功能
2. NameServer 路由注册、故障剔除
2.1 NameServer 存储了哪些信息
- Topic 消息队列路由信息。消息发送时根据路由表进行负 载均衡。
- Broker 基础信息, 包含 brokerName、 所属集群名称 、 主备 Broker 地址
- Broker 集群信息,存储集群中所有 Broker 名称
- Broker 状态信息 。NameServer 每次收到心跳包时会替换该信息
- Broker上的 FilterServer列表,用于类模式消息过滤
RocketMQ 基于订阅发布机制 , 一个Topic拥有多个消息队列 ,一个Broker为每一主题默认创建 4 个读队列 4 个写队列。多个Broker组成一个集群, BrokerName由相同的多台Broker组成Master-Slave架构。brokerId 为0代表 Master, 大于0表示Slave。 BrokerLivelnfo中的lastUpdateTimestamp 存储上次收到 Broker 心跳包的时间