Nacos之命名空间分组和DataID三者关系
问题 - 多环境多项⽬管理
问题1:
实际开发中,通常⼀个系统会准备
dev开发环境
test测试环境
prod⽣产环境。
如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置⽂件呢?
问题2:
⼀个⼤型分布式微服务系统会有很多微服务⼦项⽬,每个微服务项⽬⼜都会有相应的开发环境、测试环境、预发环境、正式环境…那怎么对这些微服务配置进⾏管理呢?
Nacos的图形化管理界⾯
POM
<dependencies>
<!--nacos-config-->springcloud怎么读音
<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>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--⼀般基础配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
YML
Nacos同springcloud-config⼀样,在项⽬初始化时,要保证先从配置中⼼进⾏配置拉取,拉取配置之后,才能保证项⽬的正常启动。
springboot中配置⽂件的加载是存在优先级顺序的,bootstrap优先级⾼于application
bootstrap
# nacos配置
server:
port: 3377
Processing math: 100%
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中⼼地址
config:
server-addr: localhost:8848 #Nacos作为配置中⼼地址
file-extension: yml #指定yaml格式的配置
group: DEV_GROUP
#namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
# ${spring.application.name}-${spring.profile.active}.${spring.fig.file-extension}
# nacos-config-client-dev.yaml
# nacos-config-client-test.yaml  ----> config.info
application
spring:
profiles:
active: dev # 表⽰开发环境
#active: test # 表⽰测试环境
#active: info
在Nacos中添加配置信息
Nacos中的dataid的组成格式及与SpringBoot配置⽂件中的匹配规则
说明:之所以需要配置spring.application.name,是因为它是构成Nacos配置管理dataId 字段的⼀部分。
在 Nacos Spring Cloud中,dataId的完整格式如下:
prefix−{spring-profile.active}.${file-extension}
prefix默认为spring.application.name的值,也可以通过配置项spring.fig.prefix来配置。
spring.profile.active即为当前环境对应的 profile,详情可以参考 Spring Boot⽂档。注意:当spring.profile.active为空时,对应的连接符 - 也将不存在,datald 的拼接格式变成prefix.{file-extension}
file-exetension为配置内容的数据格式,可以通过配置项spring .fig.file-extension来配置。⽬前只⽀持properties和yaml类型。
通过Spring Cloud 原⽣注解@RefreshScope实现配置⾃动更新。
最后公式:
spring.application.name)−{spring.profiles.active}.${spring.fig.file-extension}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。