RocketMQ探索-broker启动

RocketMQ的broker在RocketMQ体系中是比较核心的一环,因此理解了broker就尽得RocketMQ80%的精髓。先从broker的启动开始:spa

  • 看看总体的流程(比较复杂)

  • 启动过程:分为initialize和start

         initialize作了哪些事情:线程

加载Topic配置(topicConfigManager);日志

加载消费进度存储(consumerOffsetManager);netty

加载订阅组配置管理(subscriptionGroupManager);对象

初始化存储层(DefaultMessageStore);ip

初始化通讯层(remotingServer和fastRemotingServer);rem

初始化线程池(sendMessageExecutor处理发送消息线程池,pullMessageExecutor处理拉取消息线程池,adminBrokerExecutor处理管理Broker线程池,clientManageExecutor处理管理Client线程池);同步

将线程池(SendMessageProcessor,pullMessageProcessor,QueryMessageProcessor,ClientManageProcessor,EndTransactionProcessor,AdminBrokerProcessor)注册到netty消息处理器当中(remotingServer和fastRemotingServer对象中)it

启动相关执行任务(天天凌晨统计消息量的任务(brokerStats.record()),定时刷消费进度(consumerOffsetManager.persist()),)io

获取NameServer地址或者开启定时获取NameServer地址任务;

若是是slave:开启Slave定时从Master同步配置信息任务,若是是Master,开启增长统计日志任务;

       start作了哪些事情:

启动刚刚初始化的各个管理器(消息存储启动(DefaultMessageStore.start());通讯层启动(remotingServer.start(),fastRemotingServer.start());brokerOuterAPI.start();pullRequestHoldService.start();启动检测全部客户端链接(clientHousekeepingService.start());filterServerManager.start();filterServerManager.start();brokerStatsManager.start();brokerFastFailure.start())

启动时,强制注册:registerBrokerAll()

开启定时把Broker注册到NameServer的任务

 

以上分析很粗,后面慢慢细化

相关文章
相关标签/搜索