rocketmq源码(一)——namesrv启动流程
2024-09-10 11:21:37 4 举报
rocketmq的namesrv是一个轻量级的组件,主要负责维护Broker、Topic和Namesrvs等信息。在启动流程中,namesrv会首先加载配置文件,然后创建各种监听器和线程池。接下来,会启动服务器,监听来自于Broker的注册请求、unregister请求、heartbeat请求、查询请求等。同时,namesrv也会定时扫描 Broker、Topic和Namesrvs等信息,以确保数据的准确性。在整个启动流程中,namesrv采用了Java的多线程和网络编程技术,通过创建线程池和监听器来异步处理请求,保证服务的高效性和稳定性。
作者其他创作
大纲/内容
初始化服务controller.initialize();
namesrv配置解析
读取namesrv启动时-c 指定的配置文件
this.kvConfigManager.load();
开启服务controller.start();
创建Namesrv核心组件
注册处理客服端请求的处理器DefaultRequestProcessorthis.registerProcessor();
将指定的配置文件路径设置到namesrvConfig保存namesrvConfig.setConfigStorePath(file);
Namesrv核心组件
namesrvConfig: 读取到的namesrv启动配置nettyServerConfig:namesrv服务端通信配置kvConfigManager:用于管理键值对配置的组件,提供了加载、存储、更新和获取配置的功能。通过这些功能,可以动态地控制和调整 RocketMQ 的行为和性能routeInfoManager:管理路由信息的核心组件。它负责维护 Broker、Topic 和消费者组的路由信息brokerHousekeepingService:维护和管理与Broker通信的通道状态,确保在通道异常或关闭时能够及时处理和清理相关资源。configuration:namesrv全局配置对象,读取到的所以配置和默认配置信息都保存在这个对象中remotingServer:处理网络通信的核心组件。它负责接收客户端的请求,并将请求分发到相应的处理器进行处理
构建namesrv命令行命令
Namesrv 核心组件说明
nettyServerConfig
通过反射获取NamesrvConfig和NettyServerConfig实体对象的set方法,并将配置文件中的值设置到这些对象中。
创建NamesrvController实体对象
configuration
将namesrv命令行参数解析后设置到namesrvConfig
brokerHousekeepingService
创建NamesrvControllercreateNamesrvController(args);
remotingServer
NamesrvStartup.main(args)
routeInfoManager
启动Namesrv服务start(controller);
启动netty,等待客服端broker连接this.remotingServer.start();
输入:namesrvConfig,nettyServerConfig
创建NamesrvConfig服务配置和NettyServerConfig配置对象并且设置namesrv服务默认端口为9876
kvConfigManager
namesrvConfig
0 条评论
下一页