栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RocketMQ--nameServer启动流程

RocketMQ--nameServer启动流程

一、创建NameServerController,NameServerController为nameserver的核心控制器

点击进入createNamesevController(arg)方法。

  1.  创建NameServerConfig和NettyServerConfig,把配置文件中或者启动命令中的选项值填充到这两个配置对象中

     #NamServerConfig

#NettyServerConfig

 

 

             2. 加载log配置

             3. 创建NameServerController

创建网络处理连接池、开启扫描判断brocker存活状态的定时任务、开启打印kv 的定时任务。

二、Broker的路由信息的管理----RouteInfoManager

一个Topic 拥有多个消息队列,一个Broker 为每一主题默认创建4 个读队列4 个写队列。多个Broker 组成一个集群, BrokerName 由相同的多台Broker组成Master-Slave 架构, brokerId 为0 代表Master , 大于0 表示Slave 。BrokerLivelnfo 中的lastUpdateTimestamp 存储上次收到Broker 心跳包的时间。 

   1、剔除失效的broker

查询最后的心跳时间,如果两分钟没有更新,则剔除服务

   2、路由注册

  Broker在启动的时候会注册一次,并且会启动定时任务定时发送心跳信息。发送的注册请求会被NameServer处理,最终是通过RouteInfoManager的registerBroker(params...)进行处理

会更新brokerAddrTable和更新brokerLiveTable中最后一次心跳的时间。如果Broker 为Master ,并且Broker Topic 配置信息发生变化或者是初次注册,则需要创建或更新Topic 路由元数据,填充topicQueueTable

设计亮点: Name Serve 与Broker 保持长连接, Broker 状态存储在brokerLiveTable 中,
NameS erver 每收到一个心跳包,将更新brokerL iveTa ble 中关于Broker 的状态信息以及路
由表( topicQueueTable 、brokerAddrTab le 、brokerLiveTable 、fi lterServerTable ) 。更新上述路由表( HashTable )使用了锁粒度较少的读写锁,允许多个消息发送者(P roducer )并发读,保证消息发送时的高并发。但同一时刻NameServer 只处理一个Broker 心跳包,多个心跳
包请求串行执行。这也是读写锁经典使用场景。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号