MQ NameServer模块划分

上图是之前讨论确定的系统架构(后续内容会按照这个架构来叙述),其中:

  1. NameServer做Broker的服务发现,即客户端可以通过NameServer拿到Broker的信息

  2. Broker汇报数据到NameServer

NameServer的模块划分

在进行NameServer的模块划分讨论前,先整理一下NameServer的功能:

  1. 做Broker的服务发现

  2. 提供元数据(Topic、Group等)

  3. 也可以作为Console的操作入口(整个MQ系统是没有DB的,Console可以通过NameServer获取系统信息进行展示)

结合以上提供的功能和之前几篇对系统架构的介绍,NameServer是不需要对数据进行持久化的,因为NameServer的数据都是来自于Broker汇报的。可以认为NameServer是一个无状态的节点。NameServer可以非常方便的做集群部署,高可用之类的,只需要Broker将数据汇报到多个NameServer即可(RocketMQ就是这种架构)。

基于以上的约定(NameServer尽量简单,没有持久化等),对NameServer的模块划分如下。

1. 网络模块

这个不再多说了,属于最基础的公共模块了,Broker、Client、NameServer都会有。

除了基础的网络实现,还有网络相关的就是各个网络请求的处理,比如新建Topic、新建Group等。按照请求来源的维度,NameServer上会包含:

  • ClientPacketHandler

  • BrokerPacketHandler

  • ConsolePacketHandler

  • ...

这些都是网络包的处理入口,可以算到网络模块中。

2. 元数据模块

除去网络模块外,NameServer剩余内容都是对元数据的汇总处理,包含以下组件:

  • TopicManager:Topic元数据的汇总,处理Topic的增删改查

  • GroupManager:Group元数据的汇总,处理Group的增删改查

  • BrokerManager:Broker的管控,进行Broker的上下线及配置变更等

  • PositionManager:汇总位点信息

  • InstanceManager:汇总Consumer和Producer实例

汇总以上内容,NameServer模块如下:

 

以上是基于NameServer的功能限定下讨论的模块。NameServer在MQ中是最简单的一个大模块,也是和消息发送和消费关系最小的模块,所以只有这么多内容。 (NameServer更多在Consumer、Producer初始化的时候会涉及到,一旦运行起来,过程中并不需要进行太多的交互,所以运行过程中脱离了NameServer也是能正常执行消费和发送的)

RocketMQ的NameServer功能上更加简化,不超过1000行代码。

这就是RocketMQ(开源版本)NameServer所有的代码了

结语

本篇主要是把NameServer的组件罗列一下,相对来说比较简单。

下一篇会开始整理MQ系统中的数据流和操作流程,包括消息和元数据在MQ中的流转、元数据的操作、消息的写入、消息的读取等流程。

往期内容:

《什么是分布式消息中间件》

《消息中间件的一些概念》

《业务方对消息中间件的需求》

《消息中间件架构讨论》

《Broker模块划分》

《Client模块划分》

欢迎关注此公众号,将坚持不懈的写MQ相关的技术文章,希望能和更多的朋友交流。 

 

如果本文对您有帮助,点一下右下角的“推荐”
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/660449

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。