Nacos配置的多环境管理

Nacos多环境管理

Nacos中存在多环境管理的概念,其中Data IDGroupNamespace 做好它们之间的层级关系就可以管理多环境的配置。
如下,介绍几种配置方式:
使用Data IDprofiles实现:
Data ID :Nacos中,可以理解为Spring Cloud应用的配置文件名。Data ID的名称格式是这样的:${spring.application.name}.properties
实际上,Data ID的规则中,还包含了环境逻辑,应用启动可以通过spring.profiles.active来指定具体的环境名称,那么相应客户端的配置为:${spring.application.name}-${spring.profiles.active}.properties
注释: Spring-could默认的配置为:${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
而上面我们写的 :${spring.application.name}-${spring.profiles.active}.properties是因为:
${spring.cloud.nacos.config.prefix}${spring.cloud.nacos.config.file-extension}都使用了默认值

实践

第一步:先在Nacos中,根据这个规则,创建两个不同环境的配置内容。比如:
Nacos创建配置文件第二步:在alibaba-nacos-config-client应用的配置文件中,增加环境配置:spring.profiles.active=DEV
第三步:启动应用,我们可以看到日志中打印了,加载的配置文件:
DEV配置文件TEST配置文件### 使用Group实现
Group在Nacos中是用来对Data ID做集合管理的重要概念,我们可以把GROUP看成一个环境的集合,例如应用A归属一个GROUP-A ,应用B归属GROUP-B。对于使用GROUP没有固定要求,主要是为了们在实际使用的时候,需要根据我们的具体需求,可以是架构运维上对多环境的管理,也可以是业务上对不同模块的参数管理。
第一步:先在Nacos中,通过区分Group来创建两个不同环境的配置内容。比如:
Nacos配置如上图,data id 名称相同,而group不同。
第二步:在alibaba-nacos-config-client应用的配置文件中,增加Group的指定配置:spring.cloud.nacos.config.group=DEV_GROUP.。
第三步:启动应用,我们可以看到日志中打印了,加载的配置文件:
应用启动日志

使用Namespace实现

NameSpace是较大粒度的隔离,它可以隔离上述说的DATA ID GROUP ,也就是说在不同的命名空间下可以存在相同的DATA IDGROUP ,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 IDGroup的搜索功能,分别从应用纬度和环境纬度来查看配置。
  • 缺点:由于会占用Group纬度,所以需要对Group的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。
  • 建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在Group的管理上要做好规划和控制。

第三种:通过Namespace实现。

  • 优点:官方建议的方式,通过Namespace来区分不同的环境,释放了Group的自由度,这样可以让Group的使用专注于做业务层面的分组管理。同时,Nacos控制页面上对于Namespace也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。

注意:对于相关配置:spring.profiles.active=DEV spring.cloud.nacos.config.group=DEV_GROUP spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a等配置不要写在应用的bootstrap.properties中,这样不灵活,在发布脚本的启动命令中,用-Dspring.profiles.active=DEV的方式来动态指定,会更加灵活!。

参考资料

参考文档
Nacos官方文档

发布了8 篇原创文章 · 获赞 0 · 访问量 45

猜你喜欢

转载自blog.csdn.net/weixin_41213402/article/details/105406882