rocketmq3.26研究之三NameServer

本文解析了RocketMQ中NameServer的工作原理,包括NamesrvStartup类如何读取配置并启动NamesrvController,以及NamesrvController如何接收Broker注册、维护Broker状态,并通过定时扫描确保Broker的有效性。同时阐述了NameServer与Broker、Consumer、Producer之间的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. NamesrvStartup

    该类主要用于读取配置文件,初始化并启动NamesrvController。

  2. 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。

  3. 解释一下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的表现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值