前言:
我们都知道 Nacos 既可以做注册中心,也可以做配置中心,本篇我们简单分享一下 Nacos 配置中心的几个重要概念,以及他们之间的关系,来帮助我们更深入的理解运用 Nacos 配置中心。
Nacos 系列文章传送门:
Nacos 初步认识和 Nacos 部署细节
Nacos 配置管理模型
Nacos 配置管理,可以通过 Namespace、group、Data ID 能够定位到唯一一个配置集,三者关系大概如简图:
- 名称空间(Namespace):Namespace 是 Nacos 中的一个重要概念,通过 Namespace 可以对配置和服务进行分类管理和隔离,每个命名空间都是一个独立的环境,可以有自己的配置和服务,通过使用命名空间,我们可以在同一个 Nacos 实例上创建多个独立的环境(例如开发环境,生产环境,测试环境),方便地进行配置和服务的管理。
- 配置分组(Group):配置分组就是对配置集进行分组,通过一个有意义的字符串对配置集进行分组,从而区分 Data ID 相同的配置集,在 Nacos 上创建一个配置时,如果未填写配置分组的名称,默认采用 DEFAULT_GROUP 。
- 配置集ID(Data ID):一组相关或者不相关的配置项的集合称为配置集,一般来说一个配置文件通常就是一个配置集,包含了系统各个方面的配置,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项,当然为了让配置看起来更加模块化、更加清晰,Nacos 也提供了扩展配置集的功能,可以让 MySQL 一个配置集、Redis 一个配置集、MQ 一个配置集等。
在使用Nacos时,可以根据具体的需求和场景,合理使用命名空间、配置分组和配置集ID来进行资源和配置的管理。
配置集ID(Data ID)的命名规则
熟悉配置集 Data ID 的命名规则,才能正确的完成 Nacos 配置,配置集 Data ID 的命名一般是 p r e f i x − {prefix}- prefix−{spring.profile.active}.${file-extension}。
- ${prefix}:默认为所属工程配置 spring.application.name 的值,也可以用 spring.cloud.nacos.config.prefix 来配置。
- ${spring.profile.active}:spring.profile.active 为当前环境对应的 profile,需要注意的是当 spring.profile.active 为空的时候,对应的连接符 - 也将不存在,DataId 的拼接格式变成 prefix.{file-extension}。
- ${file-extension}:为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前只支持 properties 和 yaml 类型。
新建名称空间
创建配置
配置列表–切换空间(选择自己需要的空间)–创建配置
创建配置文件
名称空间(注意名称空间不是 dev,是字符串 1f6be88e-6065-4a17-96ff-0821457dde41)、配置分组(DEFAULT_GROUP)、配置集 DataId(my-study-spring-boot-dev.properties) 都有了,注意,在 bootstrap.properties 中也要正确配置,配置中心才生效。
项目中 bootstrap.properties 配置如下:
#命名空间 ID 用于区分不同环境和应用 默认的 public 空间时候无需配置(或者直接留空即可) 否侧配置中心不生效
spring.cloud.nacos.config.namespace=1f6be88e-6065-4a17-96ff-0821457dde41
#配置分组 默认即可 也可以自定义分组
spring.cloud.nacos.config.group=DEFAULT_GROUP
#默认为 spring.application.name 的值 也可以通过配置项 spring.cloud.nacos.config.prefix 来配置
spring.cloud.nacos.config.prefix=my-study-spring-boot
#配置名称 首先使用配置的前缀 然后再使用名称 最后使用 spring.application.name
spring.cloud.nacos.config.name=my-study-spring-boot
#配置文件格式后缀 默认为 properties
spring.cloud.nacos.config.file-extension=properties
#用于控制是否启用配置刷新功能 默认为true
spring.cloud.nacos.config.refresh-enabled=true
#配置拉取长轮询超时时间 单位为毫秒 默认为 30000 毫秒
spring.cloud.nacos.config.timeout=3000
如有不正确的地方请各位指出纠正。