1、问题说明
在SpringCloud系列–Nacos(2)服务配置中心介绍了Nacos作为配置中心-基础配置。但是在多环境多项目管理中通常会存在以下两个问题:
-
在实际开发中,通常一个系统会准备dev开发环境、test测试环境、prod生产环境。那么如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
-
一个大型分布式系统会有很多微服务子项目,每个微服务项目都会有相应的开发环境、测试环境、预发环境、正式环境,那怎么对这些微服务配置进行管理呢?
今天我们将一起学习 Nacos作为配置中心-分类配置,探索如何解决以上两个问题(代码参考SpringCloud系列–Nacos(2)服务配置中心)。
2、Nacos相关说明
2.1、Nacos的图形化管理界面
2.1.1、配置管理
2.1.2、命名空间
2.2、Namespace+Group+Data ID三者关系?为什么这么设计?
2.2.1、是什么
- 类似Java里面的package名和类名
- 最外层的namespace是可以用于区分部署环境的,Group和DatalD逻辑 上区分两个目标对象。
2.2.2、三者情况
默认情况:
Namespace= public, Group=DEFAULT_ GROUP,默认Cluster是DEFAULT。
Nacos默认的命名空间是public, Namespace主要用来实现隔离。
比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace, 不同的Namespace之间是隔离的。
Group默认是DEFAULT_ GROUP, Group可以把不同的微服务划分到同一个分组里面去。
Service就是微服务; 一个Service可以包含多 个Cluster (集群),Nacos默认Cluster是DEFAULT, Clyster是对指定微服务的一个虚拟划分。
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,
这时就可以给杭州机房的Service微服务起一个集群名称(HZ),
给广州机房的Service微服务起一个集群名称 (GZ) ,还可以尽量让词一个机房的微服务互相调用,以提升性能。
最后是Instance,就是微服务的实例。
3、三种方案加载配置
3.1、DataID方案
指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置:
-
默认空间+默认分组+新建dev和test两个DataID
新建dev配置DataID:
新建test配置DataID:
-
通过spring.profile.active属性就能进行多环境下配置文件的读取。
测试:
访问:http://localhost:3377/config/info
结果:配置是什么就加载什么(yaml配置spring.profile.active:test)
3.2、Group方案
通过Group实现环境区分:
新建group示例:
新增两个dataID为nacos-config-client-info.yaml的配置,但分别属于DEV_GROUP和TEST_GROUP:
代码中在bootstrap+application中操作如下:
在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP
测试:
访问:http://localhost:3377/config/info
结果:
获取到TEST_GROUP组中的nacos-config-client-info.yaml配置文件。
3.3、Namespace方案
新建dev/test的Namespace:
回到服务管理-服务列表查看:
按照域名配置填写:
bootstrap.yaml:
bootstrap.yaml中新增namespace配置。
测试如下: