RocketMQ源码深度解析二之Name Server篇

本文深入探讨了RocketMQ的Name Server,它作为服务治理中心,管理所有broker信息。Name Server负责接收Broker注册,保存topic和队列列表,以及Filter信息。文中详细阐述了其初始化、启动过程,包括配置加载、Netty Remoting Server的建立,以及定时任务的设置。此外,还解释了处理Broker注册请求和根据Topic获取Broker信息的机制,以及为何弃用Zookeeper的原因。
摘要由CSDN通过智能技术生成

前言:主要是用于管理所有的broker信息,让producer和consumer都能获取到正确的broker信息,进行业务处理。这是一个类似于zookeeper的服务治理中心。

(一)功能
1,Broker启动时候会向Namesrv发送注册请求,Namesrv接收broker的请求注册路由信息和保存活跃的broker列表,包括Master和Slave
2,用来保存所有topic和该topic所有队列的列表
3,NameServer用来保存所有broker的Filter列表
4,接收Producer和Consumer的请求,根据某个topic获取到broker的路由信息。

(二)初始化和启动过程
1,KVConfigManager类
该类会加载NameServer的配置参数,将配置参数加载保存到一个HashMap中

2,以初始化 BrokerHousekeepingService 对象为参数初始化
NettyRemotingServer 对象, BrokerHousekeepingService 对象作为该 Netty 连接中 Socket 链接的监听器( ChannelEventListener);监听与 Broker 建立的渠道的状态(空闲、关闭、异常三个状态),并调用 BrokerHousekeepingService的相应 onChannel****方法。其中渠道的空闲、关闭、异常状态均调用RouteInfoManager.onChannelDestory 方法处理。清理 RouteInfoManager 类的几个成员变量数据
这里写图片描述

3,注册默认的处理类 DefaultRequestProcessor,所有的请求均由该处理类的 processRequest 方法来处理。

4,设置两个定时任务
(1)每隔十秒钟遍历brokerLiveTable集合,查看每个broker的最后更新时间是否超过了两分钟,超过则关闭broker的渠道并清理 RouteInfoManager 类的topicQueueTable、 brokerAddrTable、 clusterAddrTable、 filterServerTable成员变量
(2)每隔 10 分钟打印一次 NameServer 的配置参数。即KVConfigManager.configTable 变量的内容。

5,启动 NameServer 的 Netty 服务端( NettyRemotingServer),监听渠道的请求信息。当收到客户端的请求信息之后会初始化一个线程,并放入线程池中进行处理,该线程调用 DefaultRequestProcessor. processRequest 方法来处理请求。

(三)处理broker的注册请求
如果收到REGISTER_BROKER请求,那么最终会调用到RouteInfoManager.registerBroker。注册完成后,返回给Broker端主用Broker的地址和主用Broker的HA服务地址

public RegisterBrokerResult registerBroker(
        final String clusterName,
        
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值