使用Data ID
与profiles
实现:
Data ID: Nacos中,可以理解为Spring Cloud应用的配置文件名。
Data ID 的名称格式是这样的:${spring.application.name}.properties
实际上,Data ID的规则中,还包含了环境逻辑,应用启动可以通过spring.profiles.active
来指定具体的环境名称,那么相应客户端的配置为:${spring.application.name}-${spring.profiles.active}.yml
注释:Spring-could默认的配置为:
${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
而上面我们写的 :${spring.application.name}-${spring.profiles.active}.yml
是因为:${spring.cloud.nacos.config.prefix}和${spring.cloud.nacos.config.file-extension}
都使用了默认值
使用Group
实现
Group
在Nacos中是用来对Data ID做集合管理的重要概念,我们可以把GROUP看成一个环境的集合,例如应用A归属一个GROUP-A
,应用B归属GROUP-B
。对于使用GROUP没有固定要求,主要是为了们在实际使用的时候,需要根据我们的具体需求,可以是架构运维上对多环境的管理,也可以是业务上对不同模块的参数管理。
- 第一步:先在Nacos中,通过区分Group来创建两个不同环境的配置内容。
- 第二步:在
alibaba-nacos-config-client
应用的配置文件中,增加Group的指定配置如:spring.cloud.nacos.config.group=DEV_GROUP
- 第三步:启动应用
使用Namespace
实现
NameSpace是较大粒度的隔离,它可以隔离上述说的DATA ID
GROUP
,也就是说在不同的命名空间下可以存在相同的DATA ID
和 GROUP
,Namespace的常用场景之一是不同环境的配置的区分隔离,例如:开发测试环境和生产环境的资源(如配置、服务)隔离等。
使用方法:在alibaba-nacos-config-client
应用的配置文件中
增加Namespace
的指定配置,比如:spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a
注意 :namespace 的配置不是使用名称,而是使用Namespace的ID。
优劣对比
利用Nacos配置管理功能中的几个不同纬度来实现多环境的配置管理。从结果上而言,不论用哪一种方式,都能够胜任需求,但是哪一种最好呢?
第一种:通过Data ID与profile实现。
- 优点:这种方式与Spring Cloud Config的实现非常像,用过Spring Cloud Config的用户,可以毫无违和感的过渡过来,由于命名规则类似,所以要从Spring Cloud Config中做迁移也非常简单。
- 缺点:这种方式在项目与环境多的时候,配置内容就会显得非常混乱。配置列表中会看到各种不同应用,不同环境的配置交织在一起,非常不利于管理。
- 建议:项目不多时使用,或者可以结合Group对项目根据业务或者组织架构做一些拆分规划。
第二种:通过Group实现。
- 优点:通过Group按环境讲各个应用的配置隔离开。可以非常方便的利用Data ID和Group的搜索功能,分别从应用纬度和环境纬度来查看配置。
- 缺点:由于会占用Group纬度,所以需要对Group的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。
- 建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在Group的管理上要做好规划和控制。
第三种:通过Namespace实现。
- 优点:官方建议的方式,通过Namespace来区分不同的环境,释放了Group的自由度,这样可以让Group的使用专注于做业务层面的分组管理。同时,Nacos控制页面上对于Namespace也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。