关于nacos:Nacos配置文件的实用知识

10次阅读

共计 3396 个字符,预计需要花费 9 分钟才能阅读完成。

1、入门

在 spring cloud 生态下应用 nacos config 很容易,引入 pom 依赖:

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

创立 bootstrap.properties 文件,并增加 nacos server 的连贯地址即可:

spring.application.name=demo-api
spring.cloud.nacos.config.server-addr=nacos 服务器地址
spring.cloud.nacos.config.prefix=nacos 匹配配置前缀,默认为 ${spring.application.name}

2、配置文件

2.1. 规定配置

nacos 上的 dataId 残缺格局如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix:取自 bootstrap 配置文件外面 spring.cloud.nacos.config.prefix 的值,而该配置的默认值又为 ${spring.application.name}
  • spring.profile.active:取以后环境的 profile。如果我的项目 spring.profile.active 为空,dataId 格局变成 ${prefix}.${file-extension}
  • file-exetension:为配置内容的数据格式,能够通过配置项 spring.cloud.nacos.config.file-extension来配置。目前只反对 properties 和 yaml 类型,默认 properties。

理论测试,如果配置了 spring.profile.active,我的项目会被动获取 nacos 服务器上的配置文件包含:${prefix}-${spring.profile.active}.${file-extension}${prefix}.${file-extension}

2.2. 共享配置

大一点的我的项目,通常须要将配置信息拆分成多个配置文件,如:数据库连贯信息、多语言配置等。因而就存在了两种状况:

  1. 一个我的项目会加载多个配置文件。
  2. 多个我的项目会共享同一个配置文件。

此时能够应用 shared-configsextension-configs,始终没发现二者之间有啥区别,作用和用法根本一样。例如:

spring.cloud.nacos.config.shared-configs[0].data-id=mysql.properties
spring.cloud.nacos.config.shared-configs[0].group=DATABASE_GROUP
spring.cloud.nacos.config.shared-configs[1].data-id=redis.properties
spring.cloud.nacos.config.shared-configs[1].group=DATABASE_GROUP
spring.cloud.nacos.config.shared-configs[2].data-id=common-i18n.properties
spring.cloud.nacos.config.shared-configs[2].group=I18N_GROUP
spring.cloud.nacos.config.shared-configs[2].refresh=true

上述配置中,将 shared-configs[n] 替换成 extension-configs[n],并没有任何不同。

3. 优先级

1. 配置文件优先级

依照后面介绍的,在应用 nacos 后,我的项目的配置文件起源多了起来,依照 从高到低 的优先级程序别离为:

  1. 通过外部相干规定 ${prefix}-${spring.profile.active}.${file-extension} 主动生成相干的 Data Id 配置。
  2. 通过 extension-configs 形式反对的 Data Id 配置。
  3. 通过 shared-configs 形式反对的 Data Id 配置。

2. 共享配置外部优先级

共享配置 shared-configs[n]extension-configs[n]外部,n的值越大,优先级越高。

后面的例子中优先级程序:common-i18n.properties > redis.properties > mysql.properties

3. 本地优先级

如果在配置文件中开启了 nacos config,在 nacos 服务器和我的项目本地,都创立了同样的配置文件。nacos 服务器上的配置项,优先级比本地高。

4. 通过日志查看优先级

当你切实搞不清 naco 配置文件加载的优先级时,不要慌,间接看启动我的项目日志即可。

在 spring 我的项目中开启 nacos config 后,启动我的项目会在控制台打印出 nacos 加载的所有配置文件,而且依照优先级程序从前往后排序。

如依照后面的配置,打印进去的日志为:

[PropertySourceBootstrapConfiguration.java:112] [] [] – Located property source: [BootstrapPropertySource {name=’bootstrapProperties-demo-api-native.properties,DEFAULT_GROUP’}, BootstrapPropertySource {name=’bootstrapProperties-demo-api.properties,DEFAULT_GROUP’}, BootstrapPropertySource {name=’bootstrapProperties-demo-api,DEFAULT_GROUP’}, BootstrapPropertySource {name=’bootstrapProperties-common-i18n.properties,I18N_GROUP’}, BootstrapPropertySource {name=’bootstrapProperties-redis.properties,DATABASE_GROUP’}, BootstrapPropertySource {name=’bootstrapProperties-mysql.properties,DATABASE_GROUP’}]

4. 我的项目布局

这里谈谈一个我的项目创立时,无关 nacos config 相干配置布局的想法。

1. 分配置文件

我的项目本地配置文件的性能分类:

  • bootstrap-{profile}:次要寄存 nacos 的环境信息,不同环境下的 nacos 服务器地址可能不同。
  • bootstrap:寄存 nacos 与环境无关的根底信息,如 shared-configs[n]、extension-configs 等。
  • application-{profile}:次要用于开发环境的配置,本地开发时有些参数不心愿间接改公共的 nacos,能够在配置文件中批改。
  • application:本地开发时,寄存与环境无关的根底信息。

总体来说,在开启 nacos config 服务后,都是以服务器上 ${prefix}-${spring.profile.active}.${file-extension}为准。本地 application 的作用及其无限,除非满足一些非凡的本地开发场景需要。

2. 分环境

尽管能够在一个 nacos 服务器上,通过 ${prefix}-${spring.profile.active}.${file-extension} 来分环境,但不倡议这么做。

不同环境 nacos 的服务器强壮水平、平安窃密水平等,都是有不同要求的。个别倡议在一个 nacos 服务器上,依据不同环境,创立不同的 namespace。甚至,依据不同环境,连贯不同的 nacos 服务器。

3. 分我的项目

通过 GROUP 来辨别我的项目。而多个我的项目专用的一些配置,可独立出几个 GROUP,如:数据库连贯配置、多语言配置等。

正文完
 0