Nacos配置中心

213 阅读1分钟

1.Nacos配置中心

1.1 拉取配置

Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置:

  • A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置
  • B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置
  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是: A < B < C

shared-dataids 方式

下面配置会拉取data-id 为 application-dev.yml 的配置

 spring: 
   application:
     # 应用名称
     name: ruoyi-gen
   profiles:
     # 环境配置
     active: dev
   cloud:
     nacos:
       discovery:
         # 服务注册地址
         server-addr: @vm.host@:8848
       config:
         # 配置中心地址
         server-addr: @vm.host@:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

extension-configs方式

 spring:
   cloud:
     nacos:
       config:
         name: test.yml
         group: DEFAULT_GROUP
         server-addr: 127.0.0.1:8848
         extension-configs:
           - dataId: test01.yml
             group: group_01
           - dataId: test02.yml
             group: group_02
             refresh: false

自动生成相关的 Data Id 配置

不仅仅加载了以 dataId 为 spring.application.name.{spring.application.name}.{file-extension:properties } 为前缀的基础配置,还加载了 dataId 为 spring.application.name{spring.application.name}-{profile}.${file-extension:properties } 的基础配置。

举例:我有一个ruoyi-gen服务,会自动加载ruoyi-gen.yml和ruoyi-gen-dev.yml配置文件

1.2 namespace

nacos中配置的命名空间

命名空间名称命名空间ID描述配置数
public(保留空间)9
prod66745c37-1f31-4af3-8b48-3b4685e630a4生产环境命名空间9
testadc84052-f305-4434-a153-0b63b07d11ee测试环境命名空间9
devb6b06451-8059-4d0a-99e7-bd90a271ca4a开发环境命名空间9

dev命名空间下的配置文件:

Data IdGroup归属应用操作
application-dev.ymlDEFAULT_GROUP详情示例代码编辑删除
ruoyi-gen-dev.ymlDEFAULT_GROUP详情示例代码编辑删除

举例使用dev命名空间的配置:

 spring: 
   application:
     # 应用名称
     name: ruoyi-gen
   profiles:
     # 环境配置
     active: dev
   cloud:
     nacos:
       discovery:
         # 服务注册地址
         server-addr: @vm.host@:8848
       config:
         namespace: b6b06451-8059-4d0a-99e7-bd90a271ca4a #命名空间Id
         # 配置中心地址
         server-addr: @vm.host@:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

该配置必须放在 bootstrap.properties 文件中

在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是组 DEFAULT_GROUP 。如果需要自定义 Group,可以通过以下配置来实现:

 spring.cloud.nacos.config.group=YOUR_GROUP_NAME

1.3 本地配置替换外部配置

在外部配置中加上如下配置:

 spring:
   cloud:
     config:
       allow-override: true #这个配置项允许你的本地配置,覆盖从Spring Cloud Config Server获取的配置。
       override-none: true
       override-system-properties: false # 此配置决定了Spring Cloud Config客户端获取的配置是否能覆盖Java系统属性(通过-D参数设置的属性)

本地配置的属性就可以覆盖外部配置的属性了

1.4 @RefreshScope

如果一个bean被标注@RefreshScope后,当配置中心配置被修改时,会自动刷新

依赖:

 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     <version>2021.0.5.0</version>
 </dependency>