最近正在负责将公司内部的服务注册中心做转移工作,正准备切入到nacos注册中心,于是花了些时间去整理学习关于使用nacos的一些笔记,并进行一番文档的输出。
使用版本 nacos-1.1.4版本
nacos注册中心的简单介绍
nacos是一款阿里巴巴开源的注册中心+配置中心,除此之外nacos还有很多强大的功能。
nacos的文件目录
在nacos安装包底下,我们可以大概看到nacos包含了以下几类文件夹,不同的文件底下存储了不同的数据信息。
最后在target文件夹底下发现了nacos的jar包,因此我好奇地将其打开来一探究竟。发现内部的jar将nacos的管理台源代码给打包了一份。
通过阅读源码发现在工程的内部有个lib目录文件夹,这里面似乎有自己希望找到的内容
但是目前还是没法看到内部的源码,在工程的外部主要就是结合一些源码的api做了一套可视化界面的控制台。
这里面有份jar命名为:nacos-server.jar。
在startup.sh脚本里面可以看到,nacos有着对应的脚本细节:
这里对应了java -jar的命令关键行进行控制台的启动:
配置中心源码分析
如何进行本地源码的debug
选择Nacos工程,然后设置对应的启动参数:
-Dnacos.standalone=true -Dnacos.home=F:\nacos-local-config
从github下载一份nacos的源码之后可以看到内部的基础结构为:
整体项目里面对应的工程有好几个,这里我们选择了Config工程这个模块进行分析,因为这里面包含了nacos控制台中的拉去服务详情,查看配置列表等常用接口,有助于我们对工作中常用功能的深入理解。
参照控制台的接口路径很快能定位到controller内容
下边这段接口是对应了查看配置属性的内容:
http://127.0.0.1:8848/nacos/v1/cs/configs?search=accurate&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTU5MDE1MzAwM30. TFlSFPTzKd0-2zmmsFjnghV74JfL_tWwo6BOFYAfdjk&dataId&group&pageNo=1&pageSize=10
配置信息查询接口对应源代码:
com.alibaba.nacos.config.server.controller.ConfigController#searchConfig ---> com.alibaba.nacos.config.server.service.repository.PersistService#findConfigInfo4Page
在com.alibaba.nacos.config.server.service.repository.EmbeddedStoragePersistServiceImpl#findConfigInfo4Page
里面看到有关于sql的查询,深入内部去查看:
单机版本的nacos使用的是 derby 数据库进行配置存储的持久化
具体的初始化步骤位于:com.alibaba.nacos.config.server.service.datasource.LocalDataSourceServiceImpl#init
初始化的时候会链接本地数据库:jdbc:derby:F:\nacos-local-config\data\derby-data;create=true
单机版本的nacos重启之后数据并不会丢失,依旧是从本地的存储文件中读取数据信息。