前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NameServer初始化流程,主要有5步骤操作

NameServer初始化流程,主要有5步骤操作

原创
作者头像
用户7365393
修改2021-09-26 17:25:52
2470
修改2021-09-26 17:25:52
举报
文章被收录于专栏:人生得意须尽欢
  • Step1:加载KV配置,并写入到KVConfigManager的configTable属性中;
  • Step2:初始化netty服务器;
  • Step3:初始化处理netty网络交互数据的线程池;
  • Step4:注册心跳机制线程池,启动5秒后每隔10秒检测一次Broker的存活情况;
  • Step5:注册打印KV配置的线程池,启动1分钟后,每隔10分钟打印一次KV配置。

RocketMQ的开发团队还使用了一个常用的编程技巧,就是使用JVM钩子函数对NameServer进行优雅停机。这样在JVM进程关闭前,会先执行shutdown操作。

代码语言:javascript
复制
Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new Callable<Void>() {
    @Override
    public Void call() throws Exception {
        controller.shutdown();
        return null;
    }
}));

执行start函数,启动NameServer。代码比较简单,就是将第一步中创建的netty server进行启动。其中remotingServer.start()方法不展开详细说明了,需要对netty比较熟悉,不是本篇文章重点,有兴趣的同学可以自行下载源码阅读。

代码语言:javascript
复制
public void start() throws Exception {
    //启动netty服务
    this.remotingServer.start();
  //如果开启了TLS
    if (this.fileWatchService != null) {
        this.fileWatchService.start();
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档