nacos 配置核心 V1.4.1
参考文档:nacos 官网文档
nacos 服务端分为单机和集群两者,下文次要讲述单机版
1. 启动篇 & 部署篇
-
nacos 本地服务
git clone https://github.com/alibaba/nacos.git cd nacos/ mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 打包胜利后会呈现 zip, 解压后进入 distribution/target 下,应该会有个 nacos-sever-$version.zip,只提取这个至某目录下,解压后进入 /nacos/bin - startup.cmd 开启服务 - shutdown.cmd 敞开服务 如果 startup.cmd 启动报错,可能是配置文件中默认注明以集群的形式启动的,此时须要编辑 startup.cmd,<26> 行批改为 set MODE = "standalone",即以单机模式启动;
-
docker 部署 nacos
docker pull nacos/nacos-server:1.4.1 首先,咱们须要去初始化 nacos 的数据库 在上文中 nacos-sever-$version.zip 解压后,进入 /nacos/conf 目录下,咱们会发现 nacos-mysql.sql 脚本,咱们能够应用该脚本进行初始化;另外,临时我只发现须要关注两个配置文件,logs 和 application.properties 在服务器中咱们建设 nacos 文件夹,并在其中创立 logs 和 config 两个文件夹,目标是映射容器内两个文件夹;在 config 目录下创立 application.properties,该文件可参考解压后的文件中 /nacos/conf 目录下的 application.properties,留神开启 mysql 及以下属性 - spring.datasource.platform=mysql - db.url.0 - db.user.0 - db.password.0 配置对应的 docker-compose,暂不介绍 配置完后即可 UP
2. nacos 关键点介绍
认识:nacos 能够看作一个配置管理核心,通常来说,咱们会把我的项目配置文件写在 config 下,然而须要批改时咱们须要拜访服务器对应目录下的配置文件进行批改,如果配置文件的变更须要设计多个我的项目,反复操作过多。nacos 帮忙咱们解决的就是此类问题,它提供 web 模式的图形化界面,咱们可在界面中进行批改,配合 @RefreshScope 注解达到动静更新的目标。
nacos 服务端登陆后,在配置管理 - 配置列表中可创立配置文件
配置文件的命名规定为
${prefix}-${spring.profiles.active}.${file-extension}
通常来说,prefix 默认为 spring.application.name, 而 file-extension 为咱们在 nacos 外面创立配置文件的类型
** 这里须要留神:spring.cloud.nacos.config.file-extension 可指定 file-extension,但必须与咱们 nacos 中创立的配置文件应用类型雷同 **
nacos 共有几个关键词需注意
- data-id
- group
- namespace
其中 data-id 为 ${prefix}-${spring.profiles.active}.${file-extension}
group 可指定,下文形容;** namespace 是齐全隔离的,即不能在一个我的项目中逾越多个 namespace **
** @Value 关键字可读取配置文件中的对应属性 **
3. nacos 解决方案:违反初衷的解决方案
我感觉,namespace 可作为我的项目名,group 可作为版本号,每个我的项目通过 namespace 做到隔离性,通过 group 可用作版本隔离,且可用作 profiles 的隔离;
通常来说,一个我的项目能够分为 5 个配置文件
- comment.properties 通用配置文件,多个我的项目可克隆复用
- 我的项目名.properties 该我的项目配置文件,次要用来配置该我的项目中在环境切换时不变的属性,如 mybatis 扫描的相干配置,我的项目公有的配置参数等;
- 我的项目名 -profiles(dev,test,pro).properties 不同环境的公有配置,如 ip 的切换
4. 根本应用如下
spring:
application:
name: example
cloud:
nacos:
config:
prefix: 我的项目名 up 优先级大于 spring.application.name
server-addr: 127.0.0.1:8848
file-extension: yml
group: V1_GROUP
namespace: 我的项目名 作为命名空间
(以下是依赖于其余配置文件,优先级下方大于上方)
extension-configs:
- data-id: comment.properties 通用配置
group: COMMENT_V_GROUP
refresh: true
- data-id: 我的项目名 +profikes.properties
group: V1_GROUP
refresh: true