【Nacos专题】Nacos Config

【专题回顾】
【Nacos专题】Nacos 快速入门
【Nacos专题】Nacos 集群搭建

一、Nacos 配置中心简介

Nacos 既可以作为注册中线,提供服务注册与发现;又是配置中心,提供配置的动态管理。Nacos 既能支持properties类型的配置,也能支持ymal类型的配置。

为了满足多租户、多环境、多服务配置隔离的需求,Nacos 提供了Data IdGroup 以及 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来区分开发、测试、生产环境配置:

【Nacos专题】Nacos Config_第1张图片
Nacos DataId.png

三、Group

在分布式系统中,我们经常会根据业务来对系统进行水平拆分,业务独立的模块单独构成一个系统,从而实现业务解耦。Nacos 的 Group 能够很好的应对分布式系统的配置管理。GroupData Id 的集合,按照业务系统来定义Group,然后再在每个Group下按照 devtestprod来区分环境,这样整个系统配置就非常的清晰明了。

在 Nacos 服务端定义完分组后,还需要在项目中通过spring.cloud.nacos.config.group配置来指定分组, 这样在项目启动的时候,就能拉取指定分组下的配置。

# 指定 group
spring.cloud.nacos.config.group=ORDER_SYSTEM

如下图所示,为订单系统创建分组:


【Nacos专题】Nacos Config_第2张图片
Nacos Group.png

四、Namespace

Namespace 是用于在多租户之间进行配置隔离,不同的命名空间下,可以存在相同的GroupData Id,再配合 Nacos 的权限管理功能,针对用户角色(多组合),进行Namespace 级别的读写权限控制。

Nacos 默认命名空间为public,当在新建一个Namespace时,Nacos会生成一个唯一标识UUID,在项目中通过spring.cloud.nacos.config.namespace来指定命名空间。

# 指定 namespace
spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a

参考文档

  • Spring Cloud Alibaba基础教程:Nacos配置的多环境管理

你可能感兴趣的:(【Nacos专题】Nacos Config)