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

目录

  • 前言
  • 一.Nacos实现配置管理
  • 二.Nacos拉取配置
  • 三.Nacos配置热更新(自动刷新,不需要重启服务)
    • 1.在有`@Value`注入变量所在类添加注解
    • 2.新建类用于属性加载和配置热更新
  • 四.Nacos多环境配置共享
    • 1.多环境共享配置
    • 2.配置的加载优先级测试
    • 3.配置优先级

前言

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文件导入依赖

  		
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        

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

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/6f500a08c9.html