1 引言
Nacos除了可以做注册中心,同样可以做配置管理来使用。当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。
注:Nacos的下载和使用,参见https://blog.csdn.net/qq_40980718/article/details/131132616
2 Nacos配置管理
2.1 统一配置管理
2.1.1 引入nacos-config依赖
首先,修改 pom.xml 文件,引入 Nacos Config Starter
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.1.2 添加bootstrap.yaml
在服务中添加一个bootstrap.yaml文件,内容如下:
spring:
application:
name: gugumall-coupon # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
2.1.3 打开Nacos,添加配置
①
②
③
2.2 配置热更新
我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。要实现配置热更新,可以使用两种方式:
2.2.1 方式一
在@Value注入的变量所在类上添加注解@RefreshScope:
2.2.2 方式二
使用@ConfigurationProperties注解代替@Value注解(略)
2.2.3 测试
完成修改后,重启服务,此时在Nacos中修改配置:
将number修改成200:
点击确认发布
重新刷新浏览器地址http://localhost:7000/coupon/test,测试是否更改:
注意:
①如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置;
②需要热更新的配置,才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。