配置中心集成
在SpringCloud Alibaba体系中是使用Nacos作为配置中心,这样Nacos既可以作为注册中心也可以作为配置中心,相当于SpringCloud中的Eureka + Config。要接入Nacos的配置中心也很简单,只需要如下几步:
第一步:加依赖
引入配置中心组件spring-cloud-starter-alibaba-nacos-config
<!--服务配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
第二步:打开nacos网页点击命名空间
第三步:点击配置管理的配置列表
点击+号进入新建配置
如在我们的account-service中应该建立一个account-service.yaml文件,然后把原application.yaml的内容复制到里面即可,在nacos配置中可以删除spring.application.name配置。
第三步:在项目中建一个bootstrap.yaml配置
接着就是把我们原本的application.yaml删除
在resource中新建文件bootstrap.yml,配置应用名称和注册中心地址
spring:
application:
name: user
cloud:
nacos:
config:
server-addr: 101.42.157.178:8848
file-extension: yaml
namespace: a27d72ca-62db-488c-926c-019b2b3a6e6d
group: DEFAULT_GROUP
profiles:
active: test
注:namespace千万别配错了,要不然报数据库的错
注:在客户端和server端对文件格式的声明要一致,例如在客户端声明的是yml,则server端添加配置文应该是${spring.application.name}.yml,若写成${spring.application.name}.yaml,则会找不到配置文件。
运行测试
是不是发现跑不起来
这有个非常大的坑
2020/2021版本无法加载bootstrap.yaml文件
解决方法就是加入依赖
<!--解决2020/2021版本无法加载bootstrap.yaml文件bug-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
简单几步就可以将你的微服务集成Nacos的配置中心了,但是在实际开发中我们需要准备多个环境的配置文件(开发、测试、生产),接下来我们看看如何使用Nacos进行多环境配置管理。
多环境管理
在Nacos中实现多环境管理很容易,可以通过Profiles, Group, Namespace三个维度实现。
profiles
nacos配置中心的DATA ID就相当于一个配置文件的名称,前面一部分我们DATA ID的默认命名方式为${spring.application.name}.${ spring.cloud.nacos.config.file-extension},比如我们之前的配置文件为account-service.yml。
如果我们在服务启动的时候指定了服务的环境名称spring.profiles.active,那么DATA ID的命名方式就变成了${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}。比如上面的account-service我们在bootstrap.yml中设置了spring.profiles.active=DEV,那么服务启动时就会去nacos抓取account-service-DEV.yml这个配置文件的数据。
利用Nacos命名方式的特性我们可以实现多环境配置管理。
实战
- 给系统指定环境名称(注意)
spring:
profiles:
active: dev
- 在Nacos中建立多套环境的配置
- 启动应用,观察后端启动日志