NameServer 启动步骤二|学习笔记

简介: 快速学习 NameServer 启动步骤二

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)NameServer 启动步骤二】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12462


NameServer 启动步骤二


步骤二:

根据启动属性创建NamesrvCongroller实例,并初始化该实例。NameServerController实例为NameServer核心控制器

image.png相关源码:

public static Namesrvcontroller main0(string[ ] args){

try {

Namesrvcontroller controller = createNamesrvContro

ller(args);

start(controller) ;

string tip = "The Name server boot success. serializeType="+Remotingcommand.getserializeTypeconfigInThisserver();

log.info(tip);

system.out.printf("%s%n", tip);

return controller;

}catch (Throwable e) {

e.printstackTrace();

system.exit( status: -1);

}

第一步完成的标志是创建一个controller,之后是启动controller,在controller的里面是:

public static NamesryController start(final NamesrController controller) throws Exception {

if (null == controller) {

throw new IllegalArgumentException("Namesry

Controller is null");

}

boolean initResult = controller.initiaize();

if ( ! initResult) {

controller.shutdown( );

system.exit( status: -3);

}

Runtime.getRuntime().addshutdownHook(new ShutdownHookThread(Log,new callable<Void>() {

@override

public void call( ) throws Exception {

controller.shutdown( );

return null;

}

}))}

boolean initResult = controller.initiaize()是在进行controller的初始化。

Controller初始化:

public boolean initialize( {

//加载KV配置

this.kvconfigManager. 1oad(;

//创建Nettyserver网络处理对象

this.remotingserver = new NettyRemotingserver(this

.nettyserverconfig,this.brokerHousekeepingservice);

//创建线程池,注册请求处理器,线程池的目的是接收客户端的请求

this.remotingExecutor =Executors.newFixedThreadPoo1(nettyserverconfig.getserverworkerThreads(),new ThreadFactoryImpl

this.registelProcessor() ;

//开启定时任务:每隔10s扫描一次Broker ,移除不活跃的Broker

this.scheduledExecutorservice.scheduleAtFixedRate(new Runnable() {

@Override

public void run() { NamesrvController.this.routeInfoManager.scanNotActiveBroker();

}

}, initialDelay: 5,period: 10,TimeUnit.SECONDS) ;

//开启定时任务:每隔10min打印一次KV配置

this.scheduledExecutorservice.scheduleAtFixedRate(new Runnable() {

@Override

pub1ic void run(){Namesrvcontro1ler.this.kvconfigManager.printA11Periodically();

}

},1,10,Timeunit.MINUTES);

return true;

}

初始化主要要做:加载KV配置;创建remotingserver;创建线程池,线程池的目的是接收客户端的请求并进行处理;最关键的是开启定时任务,每隔10秒扫描broker,清除不活跃的broker。

相关文章
|
域名解析 缓存 网络协议
dns 域名解析
dns 域名解析
|
JSON 前端开发 数据格式
@RequestBody、@RequestParm、@PathVariable三个注解的区别
@RequestBody、@RequestParm、@PathVariable三个注解的区别
834 2
|
移动开发 开发框架 JavaScript
在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
|
域名解析 存储 缓存
Linux网络服务之DNS服务
DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互 映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
Linux网络服务之DNS服务
|
网络协议 Linux
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
1236 0
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
|
JSON 小程序 Java
微信小程序:获取不限制的小程序码后端Java实现
微信小程序:获取不限制的小程序码后端Java实现
1390 0
|
Web App开发 弹性计算 Java
使用云助手公共命令快速安装Java环境
本场景带您体验如何使用云助手公共命令为您的ECS实例快速安装Java环境和Tomcat。
|
网络协议 Linux
云服务器修改dns服务器为阿里云公共dns服务器
云服务器修改dns服务器为阿里云公共dns服务器
2087 0
|
6天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
5天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。