Nacos 配置管理模型

配置的获取

SpringCloud 项目中,假如在 resource 目录下有如下 application.yml 文件:

spring:
  application:
    name: userService # 服务名称
  profiles:
    active: dev       # 开发环境,这里是 dev
  cloud:
    nacos:
      username: nacos # 用户名
      password: nacos # 密码
      discovery:
        server-addr: localhost:8848                     # Nacos 注册中心地址
        group: DEFAULT_GROUP                            # 分组
        namespace: 3bab8e9d-972c-4b11-a44f-74714ac7f471 # 命名空间
      config: # Nacos 配置管理,和 discovery 配置一致,直接引用
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        group: ${spring.cloud.nacos.discovery.group}
        namespace: ${spring.cloud.nacos.discovery.namespace}
        file-extension: yaml # 文件后缀名

项目启动时,会根据spring.cloud.nacos.server-addr得到 Nacos 配置中心的地址,再在指定 Namespace(3bab8e9d-972c-4b11-a44f-74714ac7f471)的指定分组(DEFAULT_GROUP)下,以[spring.application.name]-[spring.profiles.active].[spring.cloud.nacos.config.file-extension]作为配置的 DataID 来从配置中心读取配置,也就是读取 userService-dev.yaml 配置。

另:当spring.profiles.active为空时,DataID 为[spring.application.name].[spring.cloud.nacos.config.file-extension]

配置管理模型

Nacos 通过 Namespace、Group、DataID 能够定位到一个配置集。

image-20231209143946513

配置集 (DataID):一个配置文件就是一个配置集,一个配置集可以包含系统日志级别等各种配置信息。每个配置集都可以定义一个有意义的名称作为配置集的 ID,即 DataID。

配置项:配置集中包含的一个个配置内容就是配置项。通常以 key=value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR)就是一个配置项。

配置分组 (Group):配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade)来表示,不同的配置分组下可以有相同的配置集(DataID)。配置分组的名称默认为 DEFAULT_GROUP。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个 Group 为:STUDENT_GROUP。

命名空间 (Namespace):命名空间可用于进行不同环境的配置隔离。例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同。或者是隔离不同的用户,不同的开发人员/开发组使用同一个 Nacos 管理各自的配置,通过 Namespace 隔离。不同的命名空间下,可以存在相同名称的配置分组或配置集。

最佳实践

Nacos 抽象定义了 Namespace、Group、DataID 的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐一种用法:

  • 多环境隔离:通过 Namespace 区分开发、测试、生产环境,避免配置串用。
    • 多租户/多团队协作:也可为不同团队或租户分配独立的 Namespace,团队间互不干扰(参考)。
  • 多项目隔离:通过 Group 区分不同业务线或项目,便于权限和配置管理。如 XX 医疗项目、XX 电商项目。
  • 多工程隔离:每个项目下往往有若干个工程/微服务,一个配置集(DataId)作为一个工程的主配置文件。
image-20231209144329703
posted @ 2025-07-23 22:10  Higurashi-kagome  阅读(37)  评论(0)    收藏  举报