RocketMQ 技术内幕:路由中心
Broker 消息服务器在启动时向所有 NameServer 注册,消息生成者(Producer)在发送消息之前先从 NameServer 获取 Broker 服务器地址列表,然后根据负载算法从列表中选择一台消息服务器进行消息发送。NameServer 与每台 Broker 服务器保持长连接,并间隔 30s 检测 Broker 是否存活,如果检测到 Broker 宕机,则从路由注册表中将其移除。

NameServer 本身的高可用是通过部署多台 NameServer 服务器来实现的,但彼此之间互不通信,也就是 NameServer 服务器之间在某一时刻的数据并不会完全相同,但这对消息发送不会造成任何影响。
NameServer 启动流程
NameServer 启动类:org.apache.rocketmq.namesrv.NamesrvStartup
- Step 1:首先解析配置文件,在解析启动时把指定的配置文件或启动命令中的选项值,填充到 NameServerConfig、NettyServerConfig 对象。
- Step 2:根据启动属性创建 NamesrvController 实例,并初始化该实例,NameServerController 实例为 NameServer 核心控制器。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content