- 相关的概念
- Namespace(名称空间)方案
- DataID方案
- Group方案
- 本项目使用的配置方案
命名空间 用于进行租户粒度的配置隔离, 不同的命名空间下, 可以存在相同的Group 或Data ID的配置. 命名空间的常用场景之一是不同环境的配置的区分隔离, 例如开发环境, 测试环境 和生产环境的资源(如配置, 服务的隔离等)
配置集 一组相关或者不相关的配置项的集合 称之为配置集, 在系统中, 一个配置文件, 通常就是一个配置集.包含了系统各个方面的配置, 例如, 一个配置集可能包含了数据源, 线程池, 日志级别的配置项等. 所有的配置的集合 , 就叫配置集.
配置集ID Nacos中的某个配置集 ID, 配置集ID是组织 划分配置的维度之一, DataID 通常用于组织划分系统的配置集, 一个系统或者应用可以包含多个配置集, 每个配置集都可以被一个有意义的名称标识, DataID通常采用类Java包 例如com.taobao.tc.refund.log.level 的命名规则, 保证全局唯一性. 此命名规则非强制性 类似于文件名 . Data ID 就是配置集的ID
配置分组 Nacos中的一组配置集, 是组织配置的维度之一, 通过一个有意义的字符串(如 Buy 或Trade) 对配置集进行分组, 从而区分 Data ID相同的配置集. 当您在Nacos上创建一个配置时, 如果未填写配置分组的名称, 则配置分组的名称默认采用DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置. 默认所有的配置集, 都属于DEFAULT_GROUP. 新建立分组, 是在新建配置的时候, 手动输入Group组.
Namespace(名称空间)方案通过命名空间实现环境区分 下面是配置实例: 1、创建命名空间: “命名空间”—>“创建命名空间”: 命名空间的作用 1.用于配置隔离 开发 测试 生产环境各有命名空间. 如下创建 三个环境的命名空间
创建三个命名空间,分别为dev,test和prop 2、回到配置列表中,能够看到所创建的三个命名空间
下面我们需要在dev命名空间下,创建“gulimall-coupon.properties”配置规则: public克隆配置到prop中
Prop中的配置修改如下
修改coupon微服务的配置文件, 指定使用哪个命名空间, 如下指定的是prop命名空间的uuid
浏览器访问 http://localhost:7000/coupon/coupon/test 可以看到获取的数据为prop中的配置信息
但是这种命名空间的粒度还是不够细化,对此我们可以为项目的每个微服务module创建一个命名空间。 每一个微服务都创建自己的命名空间, 只加载自己命名空间下的所有配置 6、为所有微服务创建命名空间
7、回到配置列表选项卡,克隆pulic的配置规则到coupon命名空间下
切换到coupon命名空间下,查看该命名空间的id
8、修改“gulimall-coupon”下的bootstrap.properties文件,添加如下配置信息
spring.cloud.nacos.config.namespace= 815d84b4-93a5-493a-89f4-a913b2b8b676
这里指明的是,读取时使用coupon命名空间下的配置。 9、重启“gulimall-coupon”,访问:http://localhost:7000/coupon/coupon/test
通过指定spring.profile.active和配置文件的DataID,来使不同环境下读取不同的配置,读取配置时,使用的是默认命名空间public,默认分组(default_group)下的DataID。 默认情况,Namespace=public,Group=DEFAULT GROUP,默认Cluster是DEFAULT
例如如图不同的dataid
通过Group实现环境区分 实例:通过使用不同的组,来读取不同的配置,还是以上面的gulimall-coupon微服务为例 1、新建“gulimall-coupon.properties”,将它置于“11111”组下 2、修改“bootstrap.properties”配置,添加如下的配置
spring.cloud.nacos.config.group=11111
3、重启“gulimall-coupon”,访问:http://localhost:7000/coupon/coupon/test
每个微服务创建自己的命名空间, 使用配置分组区分环境, dev test prod 如下图所示