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三个注解的区别
787 2
|
移动开发 开发框架 JavaScript
在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
|
域名解析 存储 缓存
Linux网络服务之DNS服务
DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互 映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
Linux网络服务之DNS服务
|
网络协议 Linux
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
1205 0
【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
|
JSON 小程序 Java
微信小程序:获取不限制的小程序码后端Java实现
微信小程序:获取不限制的小程序码后端Java实现
1328 0
|
Web App开发 弹性计算 Java
使用云助手公共命令快速安装Java环境
本场景带您体验如何使用云助手公共命令为您的ECS实例快速安装Java环境和Tomcat。
|
网络协议 Linux
云服务器修改dns服务器为阿里云公共dns服务器
云服务器修改dns服务器为阿里云公共dns服务器
2044 0
|
4天前
|
人工智能 运维 安全
|
2天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!