前言
”三继君看过几本书,看了很多遍源码编译的RocketMQ进阶图,对于RocketMQ,你只需要记住这张图!如果觉得不错,记得点赞并跟随。”
一张图进阶RocketMQ图片链接
【重要】视频将在B站同步更新,欢迎观看,轻松抬高姿态。一张图进阶 RocketMQ-NameServer(视频版)
本文是“带图进阶RocketMQ”系列的第二篇。今天主要讲RocketMQ集群元数据管理。因为Producer、Consumer和Broker都需要和NameServer进行交互,所以三位负责的先生不得不跟大家说说NameServer的神圣。
《RocketMQ 整体架构》中说NameServer是集群的元数据管理中心,那么它管理的元数据是什么?一起来看看NameServer有什么,看完记得关注、转发、点赞、收藏。
img 集群元数据
简单来说,NameServer 负责集群元数据的增删改查。不管这个 CRUD 是怎么实现的,我们甚至可以理解为是数据库的 CRUD,但是我们必须知道这些元数据是什么样的。只有这样我们才能知道Producer、Consumer和Broker是如何根据这些数据发送和接收消息的。
集群元数据
如图所示,两主两从Broker集群相关的元数据信息包括topicQueueTable、BrokerAddrTable、ClusterAddrTable、brokerLiveInfo、FilterServer(暂不关注,图中未显示) )。
工作流程
那么我们来看看NameServer的简单工作流程。其他角色会主动向NameServer上报状态,并根据上报消息中的请求码做相应处理,更新存储的相应信息。
image-20220612152922567
为了让大家感觉更真实,不要以为都是废话,我们直接看源码吧:
总结
以上就是本文的全部内容。这么多数据,相信大家都有些头晕了。三继军简单总结:NameServer通过brokerLiveInfo维护存活的Brokers。 Producer 会获取上述路由信息,并指定将消息发送到哪个 Topic。根据Topic可以从topicQueueTable中选择一个Broker,根据BrokerName可以从BrokerAddrTable中获取Broker IP地址。有了IP地址,Producer就可以与Broker建立连接,通过网络将消息传递给Broker。
暂无评论内容