nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置

作者:larscheng

来源:博客园

在实际开发中,通常一个系统会准备开发环境、测试环境、预发环境、正式环境

那么如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢

本文主要对Nacos作为配置中心时,如何对多环境配置文件进行读取进行论述。


Windows10JDK8SpringCloud:Finchley.RELEASESpringBoot:2.0.4.RELEASEspring-cloud-alibaba-dependencies:0.2.2.RELEASENacos-server:1.0.1

本文的项目Demo继续沿用 Nacos(四)中的工程nacos-config,若小伙伴还没有之前的环境,可至源码地址中下载

4|0Data ID方案


在上一篇文章中有对Data ID进行过介绍,它的命名规则为:${prefix}-${spring.profile.active}.${file-extension}

通过其中的spring.profile.active属性即可进行多环境下配置文件的读取

一起来试一下吧~

4|1新建配置

1、启动Nacos-Server后,创建配置文件Data ID为:nacos-config-dev.yml, 其配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第1张图片

2、继续创建配置文件Data ID为:nacos-config-test.yml, 其配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第2张图片

4|2多环境测试

通过Idea启动nacos-config项目,并指定spring.profiles.active,通过不同的环境进行启动

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第3张图片

通过上面的配置,将项目分为dev、test两个环境启动后,进行测试

访问 http://127.0.0.1:9980/getValue 返回:这里是dev环境

访问 http://127.0.0.1:9981/getValue 返回:这里是test环境

可以看到,分别以dev、test启动后相应的读取到不同的配置,dev环境读取到启动端口为9980,test读取到启动端口9981

5|0Group方案

上面介绍了通过指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

这里也可以不用DataID,直接通过Group实现环境区分

注:这种方式不太推荐,切换不灵活,需要切换环境时要改Gruop配置

5|1新建配置

1、创建配置文件Data ID为:nacos-config.yml, Group为:DEV_GROUP, 其配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第4张图片

2、继续创建配置文件Data ID为:nacos-config.yml, Group为:TEST_GROUP, 其配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第5张图片

5|2修改项目中的配置文件bootstrap.yml

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第6张图片

5|3启动测试

将group配置为DEV_GROUP启动进行测试

访问 http://127.0.0.1:9980/getValue 返回:这里是dev环境

将group配置为TEST_GROUP启动进行测试

访问 http://127.0.0.1:9981/getValue 返回:这里是test环境

通过指定group的方式启动,DEV_GROUP读取到启动端口为9980,TEST_GROUP读取到启动端口9981

5|4说明

只通过Group来进行多环境的区分的方式我不推荐使用,因为涉及到了多环境自然就会改变spring.profile.active,而profile一旦生效,配置文件就会依据DataID的规则进行查找。所以Group的方式仅作参考。

Group的合理用法应该是配合namespace进行服务列表和配置列表的隔离和管理

6|0Namespace方案

Namespace命名空间进行环境隔离也是官方推荐的一种方式。Namespace的常用场景之一是不同环境的配置的区分隔离,例如:开发测试环境和生产环境的资源(如配置、服务)隔离等。

6|1创建命名空间

创建命名空间DEV和TEST,不同的命名空间会生成相应的UUID,如下图

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第7张图片

6|2新建配置文件

1、在命名空间DEV下创建DataID为:nacos-config.yml,Group为默认值的配置,配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第8张图片

2、在命名空间TEST下创建DataID为:nacos-config.yml,Group为默认值的配置,配置如下:

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第9张图片

6|3修改项目中的配置文件boostrap.yml

在config下增加一条namespace的配置,指定当前配置所在的命名空间ID。注意是命名空间ID!!!!配置如下

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第10张图片

6|4 启动测试

将namespace配置为DEV的ID:edbd013b-b178-44f7-8caa-e73071e49c4d,启动进行测试

访问 http://127.0.0.1:9980/getValue 返回:这里是DEV命名空间

将namespace配置为TEST的ID:0133bd1e-25c3-4985-96ed-a4e34efdea2e,启动进行测试

访问 http://127.0.0.1:9981/getValue 返回:这里是TEST命名空间

通过指定namespace的方式启动,均可读取到对应的启动端口和相关配置

6|5说明
Namespace是官方推荐的环境隔离方案,确实有他的独到之处,使用namespace这种方案,同时可以与DataID+profile的方式结合

同时释放Group的限制,大大提高多环境配置管理的灵活性。

7|0总结
通过上面三种方案的介绍,想必大家对于多环境下的配置读取方式应该有所选择

  • DataID: 适用于项目不多,服务量少的情况。
  • Group:实现方式简单,但是容易与DataID方案发生冲突,仅适合于本地调试
  • Namespace:实现方式简单,配置管理简单灵活,同时可以结合DataID共同使用,推荐这种方案

最后,我自己是一名从事了多年开发的JAVA老程序员,辞职目前在做自己的java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:交流,即可免费获取。

nacos dataid修改配置文件_多环境下如何“读取”Nacos中相应的配置_第11张图片

你可能感兴趣的:(nacos,dataid修改配置文件)