Appearance
在实际的企业环境中,我们很多软件环境是需要区分使用场景的。例如MySQL有开发集群、测试集群和上线集群等等。难道我们需要部署多个Naocs来适应我们不同环境的配置吗?
答案是不需要。Naocs能够通过命名空间和分组id来进行不同的配置,我们不需要改变yml中nacos的地址,只需要适配环境变量和分组信息即可。
Namespace命名空间
Namespace主要用来实现隔离,比方说我们现在有三个环境:开发测试、环境,我们就可以创建三个Namespace, 不同的Namespace之间是隔离的,默认是public。
Group分组
Group可以把不同的微服务划分到同一个分组里面去
默认空间+默认分组+多DataId实现不同环境的配置读取
先来看一下如何在控制台配置,DataId最后一个"-"后面代表的就是不同环境。
bootstrap.yml此时的配置如下,我们通过切换spring.profiles.active
来配置不同环境,DataId构成结构:${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
,也就是命名空间-环境.文件拓展格式
yaml
spring:
application:
name: flight-sys-service
cloud:
nacos:
config:
server-addr: ip:8848 #Nacos配置中心地址
file-extension: yaml #文件拓展格式
profiles:
# active: dev #开发环境
active: test #测试环境
通过Group实现环境区分
Nacos控制台新建配置时指定Group
Nacos控制台新建两个DataId一样,但是Group不一样的配置文件。
配置文件指定Group
yaml
spring:
application:
name: flight-sys-service
cloud:
nacos:
config:
server-addr: ip:8848
file-extension: yaml
group: TEST_GROUP #指定group
profiles:
active: test
Namespace命名空间
如何新建Namespace?直接在Nacos控制台可视化界面,点击新建即可。
如何在新建的Namespace中添加配置文件?
配置文件指定Namespace为dev
yaml
spring:
application:
name: flight-sys-service
cloud:
nacos:
config:
server-addr: ip:8848
file-extension: yaml
namespace: 27718f8f-8b75-4d0d-b78d-e69800b17d37 # 这里不填dev,填命名空间的id
profiles:
active: dev