一、名词解释
namespace
Namespace 命名空间进行环境隔离也是官方推荐的一种方式。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
创建命名空间
命名空间ID不填写默认是会生成相应的唯一UUID,保留空间默认是不能删除的
Data ID
创建规则:
${prefix} - ${spring.profiles.active} . ${file-extension}
(1)prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
(2)spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档
(3)file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。目前只支持 properties 和 yaml 类型
group分组
同⼀个环境内,不同应⽤的配置,通过group来区分 默认是DEFAULT_GROUP
配置类型
- 主配置(dataID区分)
- 扩展配置 extension-configs
- 共享配置 shared-configs
配置优先级及配置的覆盖
不同类型的优先级:主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)
扩展和共享配置为数组格式 数组下标越大优先级越高 会覆盖排在之前的同名配置项
覆盖某个dataId上的特定属性,请使⽤ extension-config
extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]
shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]
二、案例demo
1.在项目中新建bootstrap.yml
spring:
application:
name: order
profiles:
active: prod
cloud:
nacos:
discovery:
password: nacos
username: nacos
config:
server-addr: 192.168.32.128:8848
file-extension: yaml
namespace: prod
group: DEFAULT_GROUP
2.在nacos 中不同namespace中新建配置文件
结果:
三、扩展&&共享配置
注意:dataId 要和spring.application.name对应上
bootstrap.yml配置
- refresh: true 自动更新
spring:
application:
name: order
profiles:
active: dev
cloud:
nacos:
discovery:
password: nacos
username: nacos
config:
server-addr: 192.168.32.128:8848
file-extension: yaml
namespace: dev
group: DEFAULT_GROUP
#扩展配置
extension-configs[0]:
data-id: common-redis.yaml
refresh: true
#共享配置
shared-configs[0]:
data-id: mysql.yaml
group: MYSQL_GROUP
refresh: true
结果:
四、自动更新
@RestController
@RequestMapping("/config")
@RefreshScope //开启配置自动更新
public class ConfigController {
@Value("${name}")
private String name;
@Value("${url}")
private String redisUrl;
@Value("${mysql}")
private String mysql;
@GetMapping("/getConfig")
public String test() {
return "当前环境:" + name + " ****** 当前redisUrl:" + redisUrl + " ***** 当前mysql:" + mysql;
}
}
五、与其他配置中心优势
- 可视化界面
- 秒级动态更新配置
- 权限管理等