全站最硬核 百万字强肝RocketMq源码 火热更新中~(五十二)

NameServer

NameServer功能

NameServer负责维护Producer和Consumer的配置信息、状态信息,并且协调各个角色的协同执行。通过NameServer各个角色可以了解到集群的整体信息,并且他们会定期向NameServer上 状态。
在 org.apache.rocketmq.namesrv.routeinfo 包下的RouteInfoManager类中,定义了许多变量,通过5个HashMap变量存储和维护集群的状态信息

BROKER_CHANNEL_EXPIRED_TIME定义了Broker向NameServer的汇 超时时长,默认是两分钟,如果超过两分钟则关闭Broker和NameServer连接通道,并将该Broker从brokerLiveTable中移除
HashMap topicQueueTable。该变量存储了所有的Topic,并以Topic的名字作为key,value是这个Topic下的消息列表,列表的长度即Master Broker的数量

HashMap/, BrokerData> brokerAddrTable。变量存储同一个Broker的数据信息。以brokerName作为key,BrokerData作为value。在BrokerData类中包含了cluster属性、brokerName属性和brokerAddrs属性。由于在一个集群中,同一个brokerName中可能包含多台机器(一个Master和多个Slave),因此在BrokerData中用HashMap存储这些机器的brokerId和地址

HashMap/>> clusterAddrTable。这个变量存储了在集群下对应的brokerName有哪些
HashMap brokerAddr */, BrokerLiveInfo> brokerLiveTable。该变量存储每台broker机器对应的实时状态,通过上次更新时间戳(lastUpdateTimestamp)来计算Broker更新是否超时,判断该Broker是否失效。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93523 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月20日
下一篇 2022年1月20日

相关推荐