rocketmq3.26研究之三NameServer

来源:互联网 发布:java工程师刚入职 编辑:程序博客网 时间:2024/06/01 08:55
  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的表现

1 0
原创粉丝点击