在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
如果微服务架构中没有使用统一配置中心时,所存在的问题:

  • 配置文件分散在各个项目里,不方便维护
  • 配置内容安全与权限
  • 更新配置后,项目需要重启
    nacos配置中心:系统配置的集中管理(编辑、存储、分发)、动态更新不重启回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
    案例:改造生产者中的动态配置项,由配置中心统一管理。
    在这里插入图片描述

nacos中创建统一配置

在这里插入图片描述
在这里插入图片描述

从配置中心读取配置

从配置中心读取配置,分以下3步:

  1. 引入依赖

    在生产者中引入依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.1.0.RELEASE</version>
    </dependency>
    

    注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
    2. 在 bootstrap.properties 中配置 Nacos server 的地址和应用名

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 该配置影响统一配置中心中的dataId,之前已经配置过
spring.application.name=service-provider

说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

在springboot工程中,bootstrap.properties的加载优先级更高。
在这里插入图片描述

3 . 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:
在这里插入图片描述
然后访问网页
在这里插入图片描述

名称空间切换环境

在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,例如,开发、测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
新建三个
test 测试环境
prod 生产环境
dev 开发环境
可以发现有四个名称空间:public(默认)以及我们自己添加的3个名称空间(prod、dev、test),可以点击查看每个名称空间下的配置文件,当然现在只有public下有一个配置。

默认情况下,项目会到public下找 服务名.properties文件。

接下来,在dev名称空间中也添加一个nacos-provider.properties配置。这时有两种方式:

  1. 切换到dev名称空间,添加一个新的配置文件。缺点:每个环境都要重复配置类似的项目
  2. 直接通过clone方式添加配置,并修改即可。推荐
    在这里插入图片描述
    在这里插入图片描述
    点击开始克隆
    在这里插入图片描述
    在这里插入图片描述
    注意:这个id是自动生成的id
    在这里插入图片描述
    在这里插入图片描述
    然后重新启动后台的生产者
    在这里插入图片描述
    访问网页
    在这里插入图片描述

回滚配置(了解)

目前版本该功能有bug,回滚之后配置消失。

回滚配置只需要两步:

  1. 查看历史版本
  2. 回滚到某个历史版本
    在这里插入图片描述
    在这里插入图片描述

加载多配置文件

偶尔情况下需要加载多个配置文件。假如现在dev名称空间下有三个配置文件:nacos-provider.properties、redis.properties、jdbc.properties。
在这里插入图片描述
在这里插入图片描述
再新加一个
在这里插入图片描述
nacos-provider.properties默认加载,怎么加载另外两个配置文件?

在bootstrap.properties文件中添加如下配置:

spring.cloud.nacos.config.ext-config[0].data-id=redis.properties
spring.cloud.nacos.config.ext-config[1].data-id=jdbc.properties

在这里插入图片描述
修改ProviderController使用redis.properties和jdbc.properties配置文件中的参数:
在这里插入图片描述
重新启动生产者消费者,访问页面
在这里插入图片描述
问题:

​ 修改一下配置中心中redis.properties中的配置,不重启服务。能否加载配置信息
这个时候需要

      spring.cloud.nacos.config.ext-config[0].refresh=true
      spring.cloud.nacos.config.ext-config[1].refresh=true

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐