【SpringCloud】SpringCloud Nacos详解(配置管理)

前言

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(远程配置) > 本地配置

猜你喜欢

转载自blog.csdn.net/twotwo22222/article/details/129387370