美文网首页消息中间件
RocketMQ-Broker模块解析之Broker初始化以及启

RocketMQ-Broker模块解析之Broker初始化以及启

作者: 一语长情 | 来源:发表于2022-07-22 17:31 被阅读0次

    RocketMQ整体物理架构如下:

    Broker服务器主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker包含了以下几个重要子模块

    1.消息的存储(MessageStore): broker服务器最核心的功能就是消息的存储,需要保障消息存储的可靠性,以及写入、读取消息的效率。

    2.请求处理器(Processor): broker服务器提供了消息发送、消息拉取、消息查询、事务消息等处理器,这些处理器封装并展示了broker对外提供能力。

    3.定时调度服务(scheduleAtFixedRate):这些定时调度服务方便统计和维护broker服务的各种状态。

    4.HA高可用服务(HAservice): 用于主从同步的服务,从broker服务向主broker服务拉取未同步的消息。

    本篇主要以源码解析的形式,展开介绍一下Broker服务的初始化以及启动,可以清晰的了解到broker在初始化的过程中加载的资源以及各个功能模块是如何展开的。

    BroekrStartup做为执行命令行启动脚本调用的入口类,执行其main方法,调用createBrokerController,创建之。

    createBrokerController这个方法代码量较大,主要目标就是创建BrokerController对象,在创建BrokerController对象之前加载和创建了其依赖的一系列对象。

    主要涉及的内容为:

    1.解析命令行启动参数以及配置文件,初始化创建BrokerConfig、NettyServerConfig、NettyClientConfig、MessageStoreConfig对象

    2.校验NamesrvAddr地址的正确性

    3.主从节点的设置以及HA监听端口

    4.调用initialize方法进行broker的初始化

    5.注册JVM钩子函数,在JVM退出时,关闭涉及到的各种资源

    createBrokerController这个方法结束之后,BrokerController对象已经创建完毕了,通过BrokerController对象的构造函数,可以看一下主要加载了哪些模块

    其中可以看到,加载了一系列的队列信息,这些队列主要服务于各个请求处理器内部的线程池服务的,

    不同处理器的的线程资源隔离,其内部的服务队列也不同,依赖BrokerConfig的配置,可以修改

    再关注一下BrokerController对象在创建完毕之后调用的initialize方法,这个方法进行了一系列初始化的工作

    篇幅也是比较长的,总结一下这个方法主要做的事情:

    1.加载broker服务器自身持久化存储的各个资源以及配置

    2.初始化默认的存储模块DefaultMessageStore

    3.依据DefaultMessageStore 加载broker服务的commitlog(消息存储文件)、indexFile(索引文件)、ConsumeQueue(消息队列文件)、abort服务是否正常启动文件)、storeCheckpoint(存储检查点文件)

    4.初始化Netty服务,用于broker服务器接收请求

    5.初始化请求处理器的线程池,注册请求处理器,并且把线程池关联到请求处理器上

    6.开启一些列的定时调度任务

    7.初始化事务消息服务、ACL权限相关、以及加载Hook函数

    initialize方法篇幅较长,但是内容还是比较清晰比较有层次的

    接来下就是调用start方法,正式启动broker服务,开始接受客户端的请求了

    BrokerController的start方法,主要做的工作就是启动之前步骤中已经初始化好的各项服务,一同构建broker服务

    至此,broker模块解析的第一篇Broker初始化以及启动已经介绍完毕了,这篇文章涉及到了broker服务的方方面面,涉及的内容较多,比较重要的模块只是加了注释解释了一下主要做什么工作而已,后续关于RocketMQ的文章中,会详细拆解其中涉及的各个子模块,一同进步学习。

    相关文章

      网友评论

        本文标题:RocketMQ-Broker模块解析之Broker初始化以及启

        本文链接:https://www.haomeiwen.com/subject/wwsvirtx.html