之前项目中使用得是配置中心是SpringCloudConfig,没有操作页面而且监听配置更改需要另行实现,实在是不方便,最近花时间切换到了阿里的Nacos,简单纪录下过程
Nacos项目地址:官方github项目地址
官网地址:官网地址
本文示例Demo地址: 本文Demo地址 Dev分支
项目安装
- 安装过程略,官网很详细,需要注意的就是默认使用的是内置数据库,可以配置使用Mysql
项目依赖&配置
- 依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacosconfig</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
- BootStrap.yml
spring:
cloud:
nacos:
config: #配置中心根节点
server-addr: arthas557.nacos.com:8848 #nacos部署地址:端口(默认8848)
file-extension: yaml #配置文件后缀:nacos里面的配置名称后缀
prefix: arthas557-admin # 当前项目本身配置
ext-config: #此处为额外加载的配置文件(项目中通常有一些公用配置,比如:数据库配置,官方给出的配置方式有三种,已数组的形式配置个人认为是最优,颗粒度最细)
- {dataId: 'arthas557-common.yaml',group: 'arthas557-alibaba',refresh: 'true'} #额外加载的配置文件
group: arthas557-alibaba #配置文件分组
namespace: 7d00d36a-9bd3-45b8-a3eb-027f6ac6a6a7#名称空间ID,租户粒度的配置隔离,可以用以多环境配置(测试/生产)
discovery: #作为注册中心根节点,略
server-addr: arthas557.nacos.com:8848
group: arthas557-alibaba
namespace: 7d00d36a-9bd3-45b8-a3eb-027f6ac6a6a7
-
Nacos服务端配置示例
上图中arthas557-common.yml是以额外配置的形式进行加载,必须带有文件后缀。arthas557-admin,使用的是前缀,可以不用(此处需进一步确认) -
启动日志示例
如图,会打印出当前应该加载的全部配置文件,如果文件内容不为空还会打印配置的具体值。文件不存在的话会提示ignore
官方给出的额外配置方式
原文: 官方提供的公共配置方式
本文采用的是第三种,第一种不考虑,第二种无法单独设置是否刷新。
最后
由于大部分情况下需要个人/测试/生产三个环境,通过启动参数指定nameSpace和Group过于繁琐,最后还是使用spring的profile模式,
如上图,使用spring约定的 bootstrap-{profile}.yml命名格式,每个环境里面配置相对应的nameSpace和Group,通过-D指定启动参数
本地调试目前采用的是复制一份bootstrap.yml到项目中(不加入git版本管理),nacos服务端建立个人的namespace,修改启动参数指向本地profile.
以上仅为个人理解,有出错和可以优化的地方欢迎指正
追加:
今天交流群里有人反馈 nacos配置无法监听配置更新。但是启动时可以正常获取配置中心的值, 后来发现是防火墙未关。
推测nacos采用的是主动向客户端推送模式,nacos服务端应该有相关日志,找时间本地模拟一下,此处仅作纪录