1、NameServer启动流程总结

1、在启动的时候,还会启动一些定时任务,比如printAllPeriodically每一分钟打印kv信息,比如scanResponseTable每一秒钟清除无效ResponseFuture,最重要的就是scanNotActiveBroker这个定时任务,该定时任务每隔10秒执行一次扫描,检测无效的Broker,并清除Broker相关路由信息的任务,用于实现Broker相关数据的更新。

2、 启动一个基于Netty的服务端,端口为9876 ,采用 1+N+M1+M2的Reactor多线程模型

        1就是parentGroup,即eventLoopGroupBoss,内部只包含1个线程,线程名以NettyNIOBoss_为前缀。负责监听 TCP网络连接请求事件,并建立好连接。随后将连接交给childGroup。

        N就是childGroup,即eventLoopGroupSelector,内部默认包含3个线程线程名以NettyServerNIOSelector_为前缀。用于监听IO读写事件,并负责从网络读取数据。

        M1就是defaultEventExecutorGroup,当线程数默认8个线程,线程名以NettyServerCodecThread_为前缀。主要用于执行在真正执行业务逻辑之前需要进行的SSL验证、编解码、空闲检查、网络连接管理等操作。

        M2是什么呢?我们上面说执行的业务请求的ChannelHandler是serverHandler,这个serverHander的源码如果进入看就会知道,它实际上也是一个分发请求的handler,也就是说serverHandler最终会将请求根据不同的消息类型code分发到不同的process线程池处理具体的源码我们后面会分析。不同类型的请求可能会使用不同的process线程池,这就是M2。当然我如果某个也i按没有设置线程池,那就会使用默认的process线程池,即前面初始化的defaultRequestProcessor内部的remotingExecutor线程池(默认8个线程)。

3、向jvm注册销毁钩子函数来关闭和释放资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值