【专题回顾】
【Nacos专题】Nacos 快速入门
【Nacos专题】Nacos 集群搭建
一、Nacos 配置中心简介
Nacos 既可以作为注册中线,提供服务注册与发现;又是配置中心,提供配置的动态管理。Nacos 既能支持properties类型的配置,也能支持ymal类型的配置。
为了满足多租户、多环境、多服务配置隔离的需求,Nacos 提供了Data Id、Group 以及 Namespace不同管理级别的概念,利用 Nacos 定义的层级关系,用户可以非常方便的管理多环境的配置。
Tips:Nacos 客户端在启动的时候,首先需要从配置中心拉取配置。在SpringBoot中,配置文件的加载顺序
bootstrap优先级要高于application,因此,Nacos Config 相关的配置需要在bootstrap.properties或者bootstrap.yaml进行配置。
二、Data Id
Data Id 的完成格式如下:
${prefix}-${spring.profile.active}.${file-extension:properties}
完整的 Data Id 由 3 部分构成,具体格式说明如下:
- prefix:构成
Data Id的前缀,prefix需要与项目中spring.cloud.nacos.config.prefix配置项的值匹配。如果没有配置spring.cloud.nacos.config.prefix,则需要与项目中spring.application.name配置项的值匹配。值得注意的是,spring.cloud.nacos.config.prefix必须在bootstrap.properties文件中。 - spring.profile.active:构成
Data Id的中间部分,需要与项目中激活的profile相对应 (即与spring.profile.active的值匹配)。如果项目中没有配置spring.profile.active,则 SpringBoot 会加载主配置文件,此时,在Data Id中${spring.profile.active}缺省,且与${prefix}之间的连接符-也不需要。 - file-extension:构成
Data Id的后缀,用来指定配置文件的格式,Nacos 默认采用properties类型的配置,此时,Data Id中的后缀是可以缺省的。如果想要采用yaml类型的配置,Data Id必须以.yaml为后缀,同时需要将项目中spring.cloud.nacos.config.file-extension配置项的值指定为yaml。
示例:
如果Data Id的值为nacos-config-dev.properties,则在 bootstrap.properties 配置如下:
spring.cloud.nacos.config.prefix=nacos-config
spring.cloud.nacos.config.file-extension=yaml
spring.profile.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
如下图所示,用Data Id来区分开发、测试、生产环境配置:

三、Group
在分布式系统中,我们经常会根据业务来对系统进行水平拆分,业务独立的模块单独构成一个系统,从而实现业务解耦。Nacos 的 Group 能够很好的应对分布式系统的配置管理。Group 是 Data Id 的集合,按照业务系统来定义Group,然后再在每个Group下按照 dev、test、prod来区分环境,这样整个系统配置就非常的清晰明了。
在 Nacos 服务端定义完分组后,还需要在项目中通过spring.cloud.nacos.config.group配置来指定分组, 这样在项目启动的时候,就能拉取指定分组下的配置。
# 指定 group
spring.cloud.nacos.config.group=ORDER_SYSTEM
如下图所示,为订单系统创建分组:

四、Namespace
Namespace 是用于在多租户之间进行配置隔离,不同的命名空间下,可以存在相同的Group 和 Data Id,再配合 Nacos 的权限管理功能,针对用户角色(多组合),进行Namespace 级别的读写权限控制。
Nacos 默认命名空间为public,当在新建一个Namespace时,Nacos会生成一个唯一标识UUID,在项目中通过spring.cloud.nacos.config.namespace来指定命名空间。
# 指定 namespace
spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a