- NamesrvStartup
该类主要用于读取配置文件,初始化并启动NamesrvController。
NamesrvController
该类两个重要功能:
1 接受broker的注册,并返回master地址和ha地址,这样slave注册时就能知道master以及数据同步地址。
broker注册详细过程如下:
BrokerController启动的时候会进行注册,之后每30秒注册一次。
broker注册时携带的信息如下:- cluster name
- broker 地址
- broker name
- broker id //0为master 1为slave
- HA地址,即slave可以通过该地址与master进行数据同步
- topic信息 包含topic name,read queue num, write queue num, permission等。
2 在接受broker注册的同时,它还维护了一个最后注册时间,并每隔10秒扫描一次,如果最后注册时间超过2分钟,则认为此broker已死,剔除broker。
解释一下NameServer与broker,NameServer,consumer,producer之间的关系
1 NameServer与NameServer之间没有关系
2 broker与NameServer
broker与每个NameServer进行定时注册,以便告知NameServer自己还活着
3 consumer与NameServer
consumer与一个NameServer长连,如果该NameServer断开,则从NameServer列表中查找下一个进行连接。
consumer主要从NameServer中根据topic查询broker的地址,查到就会缓存到客户端。如果broker宕机,则NameServer会将其剔除,而consumer端的定时任务MQClientInstance.this.updateTopicRouteInfoFromNameServer每30秒执行一次,会将topic对应的broker地址拉取下来,此地址已经为slave地址了,故此时consumer会从slave上消费。具体请参见rocketmq问题汇总-Failover下consumer的表现
4 producer与NameServer
具体请参见rocketmq问题汇总-Failover下producer的表现
rocketmq3.26研究之三NameServer
最新推荐文章于 2025-06-15 14:15:24 发布