架构之旅
源码之 Java 基础
从 Hello, World! 说起
Hello, World! 之 标准输入流
从 流 到 Java IO
pulsar 文档
pulsar 本地开发集群搭建
jvm - sandbox
流量回放流程分析
nacos 笔记
nacos server 启动流程
nacos 集群管理 - ServerMemberManager
dubbo 之 No provider available for the service
-
+
首页
nacos server 启动流程
在 nacos 源码里,有这个一个类:SpringApplicationRunListener.java 位于 core 模块下面,实现了 `org.springframework.boot.SpringApplicationRunListener` 以及 `org.springframework.core.Ordered` , 实际负责初始化的是 `StartingApplicationListener` 这个类,它实现了 `NacosApplicationListener` 主要有以下方法: ```java void starting(); void environmentPrepared(ConfigurableEnvironment environment); void contextPrepared(ConfigurableApplicationContext context); void contextLoaded(ConfigurableApplicationContext context); void started(ConfigurableApplicationContext context); void running(ConfigurableApplicationContext context); void failed(ConfigurableApplicationContext context, Throwable exception); ``` 具体实现大致如下: ```java @Override public void environmentPrepared(ConfigurableEnvironment environment) { makeWorkDir(); injectEnvironment(environment); loadPreProperties(environment); initSystemProperty(); } @Override public void contextPrepared(ConfigurableApplicationContext context) { logClusterConf(); logStarting(); } @Override public void contextLoaded(ConfigurableApplicationContext context) { } @Override public void started(ConfigurableApplicationContext context) { starting = false; closeExecutor(); ApplicationUtils.setStarted(true); judgeStorageMode(context.getEnvironment()); } @Override public void failed(ConfigurableApplicationContext context, Throwable exception) { starting = false; makeWorkDir(); LOGGER.error("Startup errors : ", exception); ThreadPoolManager.shutdown(); WatchFileCenter.shutdown(); NotifyCenter.shutdown(); closeExecutor(); context.close(); LOGGER.error("Nacos failed to start, please see {} for more details.", Paths.get(EnvUtil.getNacosHome(), "logs/nacos.log")); } ``` 首先创建 logs、conf、data 目录,然后将 environment 注入,然后加载配置信息,接着打印集群信息以及启动日志,最后关闭启动日志的打印并判断存储模式。 加载配置信息时,会注册对 application.properties 文件的监听,当这个文件变化后,会发送消息。这里的发送消息,其实现是观察者模式,解耦合不错,似乎没别的好处了。 我们启动 nacos 集群时,打印出的如下 log 主要就是这个类负责 ``` The server IP list of Nacos is [xxx] Nacos is starting... Nacos is starting... Nacos is starting... Nacos is starting... Nacos is starting... Nacos is starting... Nacos started successfully in cluster mode. use external storage ```
十三
2021年8月16日 20:09
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码