2-CloudAlibaba-Nacos
(配置中心)学习笔记 2020.10.15
前言:
以前项目单独使用
CloudConfig
, 只能实现配置文件从云端(git、svn
)拉取下来,作为项目启动使用。没有集成
CloudBus
的情况下, 更改了配置文件只能重新启动项目使其生效。现在使用
Nacos
的配置中心功能就能非常简单实现CloudConfig
+CloudBus
云端拉取配置文件作为项目启动, 并实时更新配置文件。下面进行快速入门。
1.0 新建模块/引入依赖
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1.1 NacosWeb
界面管理中的配置管理模块说明
在 Nacos Spring Cloud 中,创建配置文件要遵从下面格式:
dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
-
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 -
spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
-
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。 -
最终通过 Spring Cloud 原生注解
@RefreshScope
实现配置自动更新:
1.1 添加bootstrap.yml
(名称固定值)
Nacos
加载配置文件顺序是优先从bootstrap.yml
加载, 保证应用的正常启动, 然后在去加载application.yml
(这里单独只留有bootstrap.yml
)
server:
port: 9888
spring:
application:
name: nacos-config
profiles:
active: dev # 选择使用那个环境的配置文件
cloud:
nacos:
discovery:
server-addr: 公网IP:8848 #Nacos服务注册中心地址
config:
server-addr: 公网IP:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
prefix: myConfig # 指定配置文件名前缀, 没有则是默认项目名nacos-config
1.2 启动项目进行测试
@SpringBootApplication
@RestController
@RefreshScope //加上此注解,支持Nacos的动态刷新功能。
public class NacosConfig
{
//读取配置中心的属性
@Value("${myUser.name}")
private String name;
public static void main(String[] args) {
SpringApplication.run(NacosConfig.class, args);
}
@GetMapping("/getName")
public String getName(){
return name;
}
}
进行访问
http://localhost:3377/getName
返回结果:
张韶涵
, 接着在nacos
上配置中心修改配置文件属性myUser.name
= 张韶涵6666不用重启服务, 再次进行访问, 发现结果已经更改, 返回
张韶涵6666
2.0 使用命名空间/Data ID/分组来区分,隔离不同运行环境的配置文件(官网)
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
就是通过: 命名空间 + Group(分组) + Data ID , 来实现不同环境与一个应用多个实例的配置文件。
更为具体自行观看官网。
2.1 使用Data ID
来区分不同环境的配置文件
- 在
nacos
配置管理上创建2个配置文件。 - 一个命名为
myConfig-dev.yaml
(代表开发环境) , 另一个命名为:myConfig-test.yaml
(代表测试环境) - 项目中的
bootstrap.yml
配置文件选择拉取那个配置文件作为项目启动使用, 来区分。
spring:
application:
name: nacos-config
profiles:
active: dev # 选择使用那个配置文件 (现在更为test)
cloud:
nacos:
discovery:
server-addr: 119.xxxx:8848
config:
server-addr: 119.xxxx:8848
file-extension: yaml
prefix: myConfig # 指定配置文件名前缀
到这就简单实现了, 不同环境使用不同配置文件的情况。
2.2 使用Group
(分组) 来区分一个应用多个实例不同配置文件
-
在
nacos
配置管理上创建2个配置文件。 -
一个命名为
myConfig-dev.yaml
, 分组Group
选择为开发组DEV_GROUP
(代表环境实例1), 另一个命名为:
myConfig-dev.yaml
, 分组Group
选择为开发组DEFAULT_GROUP
(代表环境实例2) -
项目中的
bootstrap.yml
配置文件选择拉取那个配置文件作为项目启动使用, 来区分。
# 实例1 配置文件
spring:
application:
name: nacos-config-1
profiles:
active: dev # 选择使用那个配置文件
cloud:
nacos:
discovery:
server-addr: 119.xxxx:8848
config:
server-addr: 119.xxxx:8848
file-extension: yaml
group: DEFAULT_GROUP # 选择DEFAULT_GROUP分组
prefix: myConfig # 指定配置文件名前缀
---------------------------------------------------------------------------------
# 实例2 配置文件
spring:
application:
name: nacos-config-2
profiles:
active: dev # 选择使用那个配置文件
cloud:
nacos:
discovery:
server-addr: 119.xxxx:8848
config:
server-addr: 119.xxxx:8848
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP # 选择DEV_GROUP分组
prefix: myConfig
到这就配置完毕。
2.3 使用优先级最大的命名空间来区分不同环境的配置文件
- 在
nacos
命令空间上创建命名空间。 - 在配置管理新创建的命名空间中创建配置文件
myConfig-test.yaml
, (代表开发环境) - 项目中的
bootstrap.yml
配置文件选择拉取那个命名空间的配置文件作为项目启动使用, 来区分。
spring:
application:
name: nacos-config
profiles:
active: test # 选择使用那个环境的配置文件
cloud:
nacos:
discovery:
server-addr: 119.xxxx:8848
config:
server-addr: 119.xxxx:8848
file-extension: yaml
prefix: myConfig
namespace: 41ac85c6-98b8-4310-82be-8561d34013a1 # 使用新创建的命名空间
可以配合使用 : 命名空间 + Group(分组) + Data ID
到此配置完成。
3.0 使用自定义数据库进行持久化配置
1