系列文章目录
前言
接上篇,本篇记录Nacos的配置管理
所有的代码都是基于前篇的基础上
一、nacos配置管理
微服务架构中有很多服务,一个服务就对应了一个配置文件,当服务变多时,通过一个个yml配置文件去管理,往往变得很麻烦,需要开发人员一一寻找,维护性变差,此时就需要我们通过Nacos去统一的管理配置。这样做的好处是我们的配置不用写在项目中,实现集中化的管理,方便环境的变更。
二、使用步骤
1.基本配置
在springcloud-alibaba-microservice-gateway-9090(网关)和springcloudalibaba-micro-service-consumer-8080(服务消费方)工程中都导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 手动在桌面创建文件夹,命名为:micro-service-gateway
然后把springcloud-alibaba-microservice-gateway-9090网关工程中的application.yml中的中文注释都删了再拷贝过去,
修改名称为:micro-service-gateway-dev.yml,
然后再复制一份,命名改为:micro-service-gateway-test.yml,
修改micro-service-gateway-test.yml中的内容,使其和micro-service-gateway-dev.yml文件的内容略有不同即可,
比如:修改micro-service-gateway-test.yml 端口号为9091。- 同样类似的方式,对springcloudalibaba-micro-service-consumer-8080工程中的application.yml也执行一遍。
- 最后,分别对micro-service-gateway和micro-service-consumer两个文件夹打成zip压缩包文件,一会要导入到nacos中使用。
完成后大概如下:
然后打成zip压缩文件
在springcloud-alibaba-microservice-gateway-9090(网关)和springcloudalibaba-micro-service-consumer-8080(服务消费方)工程中都配置bootstrap.yml,内容如下:(group和name对应的值最好和刚才桌面上创建文件夹的名称一致),然后把两个工程中原来的application.yml命名为application.yml.bak
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# 配置文件的后缀名
file-extension: yml
# 配置在nacos上的组名
group: micro-service-gateway
application:
# 服务名称
name: micro-service-gateway
profiles:
# 配置文件环境(生产环境,开发环境,测试环境等等,对应不同的application-*.yml文件)
active: dev
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# 配置文件的后缀名
file-extension: yml
# 配置在nacos上的组名
group: micro-service-consumer
application:
# 服务名称
name: micro-service-consumer
profiles:
# 配置文件环境(生产环境,开发环境,测试环境等等,对应不同的application-*.yml文件)
active: dev
目录结构如下:
2.导入Nacos配置
在Nacos管理界面,将上一步打好的zip压缩包导入
重启网关和消费方服务
- 配置 active: dev 则显示nacos中对应 *-dev.yml配置文件中的内容;
- 配置 active: test则显示nacos中对应 *-test.yml配置文件中的内容;
三、配置实时刷新
在Controller中添加方法并测试,修改springcloudalibaba-micro-consumer-8080中FeignUserController,在FeignUserController上添加实时刷新注解@RefreshScope
@RefreshScope//实时刷新
@RestController
@RequestMapping("feign")
public class UserFeignController {
@Value("${user.username}")
private String username;
@RequestMapping("getUserName")
public String getUserName(){
return username;
}
在nacos面板中修改对应加载的microservice-consumer-test.yml,设置user.username的值为张三
启动springcloudalibaba-micro-consumer-8080工程,访问getUsername方法测试
然后,在Nacos配置中,修改consume-dev文件中的张三为大飞,发布后再次访问方法
不需要重启服务,再次访问:
实时更新完毕!
总结
本篇主要记录了Nacos的配置管理,更多内容见下篇