目录
前言
Nacos实战一,咱们讲的是Nacos的服务注册和服务发现的作用,这篇文章咱们讲解一下Nacos的配置管理的作用。
当服务越来越多,后面要是达到了几千个或者更多服务,修改一个服务配置可能会影响到很多服务,而且修改完,还得重启服务,那要怎么解决呢?
这里我们以用户服务为例去进行配置管理。
Spring Cloud最新面试题
Spring Cloud Nacos详解之注册中心
Spring Cloud Nacos详解之配置中心
Spring Cloud Eureka详解
Spring Cloud Frign详解
Spring Cloud Ribbon详解
Spring Cloud Gateway详解
Spring Cloud Hystrix详解
一.Nacos实现配置管理
二.Nacos拉取配置
1.Nacos拉取配置原理图
2.pom文件导入依赖
<!--nacos的配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3.在用户服务添加一个bootstrap.yml
文件,这个文件是引导文件,加载优先级比application.yml
高
服务名称 + 环境.后缀名 就是咱们刚才新建的配置,所以 地址 + 名称 让我们找到了配置文件。
spring:
application:
name: userservice #服务的名称
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
4.验证是否能读取到Nacos的配置文件
//在controller写下面的代码,然后启动服务,看看返回值
@Value("${pattern.dateformat}")
private String date;
/**
* 获取当前时间
* @return
*/
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(date));
}
三.Nacos配置热更新(自动刷新,不需要重启服务)
1.在有@Value
注入变量所在类添加注解
(1) 加@RefreshScope
注解
(2) 修改nacos里的配置文件
(3) 这时候我们没有重启,只需要修改配置文件
2.新建类用于属性加载和配置热更新
(1) 定义属性配置类
(2) 在需要用到配置属性的类注入配置类
四.Nacos多环境配置共享
多环境配置共享: 比如某个服务在开发、测试、生产环境下配置文件里的属性值是一样的,那我再每个配置文件都写一份,那且不是很麻烦,能不能只改一个,别的环境都可以同步呢?
微服务启动时会从Nacos读取多个配置文件:
userservice-dev.yaml
是开发环境下的配置文件。
userservice.yaml
不论在什么环境下,都会被读取,所以多环境共享配置可以用此文件来实现。
1.多环境共享配置
(1).新建userservice.yaml文件
(2).在属性配置类加上你共享配置里的属性
(3).在你需要使用共享属性的类编写代码
(4).验证一下
2.配置的加载优先级测试
如果我本地配置文件和nacos远程配置文件都有同一个属性,而且值不一样,会先加载那个?Nacos远程配置开发环境和共享配置文件都有某个属性,会先加载那个?
(1) 测试本地配置和远程共享配置属性一致那个优先级高
①本地yml配置
pattern:
name: 本地环境name测试
②nacos远程共享yml配置
③访问接口
(2) 测试远程开发环境配置和远程共享配置属性一致那个优先级高
① nacos远程开发环境yml配置
② nacos远程共享yml配置
和上面配置一样。
③访问接口
3.配置优先级
服务名-环境.yaml(远程配置) > 服务名.yaml(远程配置) > 本地配置