问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

整合 Nacos 配置中心:实现动态配置刷新

创作时间:
作者:
@小白创作中心

整合 Nacos 配置中心:实现动态配置刷新

引用
CSDN
1.
https://blog.csdn.net/morgenchen/article/details/144917611

本文将详细介绍如何使用Nacos配置中心实现动态配置刷新。通过本文,你将了解配置中心的作用和必要性,并学习如何在Spring Boot项目中集成Nacos配置中心,包括添加依赖、配置Nacos服务器地址、使用@NacosValue注解获取配置项等步骤。

什么是配置中心?

在微服务架构下,配置中心是一个专门用来集中管理和分发配置的服务。它通过提供统一的接口,帮助开发人员将所有微服务的配置项集中存储、管理和分发,确保微服务在不同环境下(如开发、测试、生产环境)能够方便地获取到对应的配置。

为什么需要配置中心?

  1. 集中管理,简化运维: 在传统的单体应用中,配置项通常存储在本地文件中,管理和维护相对简单。但在微服务架构下,配置项分散在多个服务中,如果每个服务都单独管理自己的配置项,会导致管理复杂性增加。配置中心通过集中管理配置项,极大简化了运维工作。

  2. 环境隔离,配置灵活: 不同的环境(开发、测试、生产等)通常需要不同的配置项。配置中心支持按环境隔离配置项,使得相同的微服务在不同环境中可以方便地获取对应的配置,而无需手动修改配置文件。

  3. 动态更新,实时生效: 在业务需求变化较快的场景中,配置项的频繁修改是常态。配置中心支持配置项的动态更新和实时生效,减少了服务重启的次数,提高了系统的可用性和灵活性。

  4. 安全管理: 某些敏感配置项(如数据库密码、API 密钥等)不适合写在代码中或本地文件中。配置中心提供了安全的存储和访问机制,确保敏感信息的安全性。

  5. 统一监控,提升稳定性: 配置中心可以对所有配置项进行统一监控和管理,方便运维人员及时发现和处理配置问题,提升系统的稳定性和可靠性。

本地配置演示

在单体项目中,配置文件信息通常写入application.yml文件中,比如我们要实现消息中心,发送邮件的功能,一些邮件的配置项需要手动配置,我们可能需要在application.yml文件中,自定义如下配置:

为了方便查看配置项,我们写一个测试接口:

package org.example.message;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class TestController {
    @Value("${mail.password}")
    private String password ;
    @GetMapping("/test")
    public String test() {
        return "邮箱密码为: " + password;
    }
}

启动程序,在浏览器端输入:localhost:8080/test,如图所示:

我们看到接口是正常能够调通的!

使用Nacos配置中心

浏览器访问昨天我们映射到宿主主机的端口:8848,浏览器访问:http://localhost:8848/nacos,进入到Nacos控制台,如图所示,点击创建配置按钮。

填写message模块的配置项,我们只需要将application.yml中的配置项复制粘贴进去即可,配置中的一些参数解释如下:

  • Data Id: 配置的唯一标识,这里我们填写需要和模块文件名一样即可,我们这里填写message
  • Group: 所属组,这里默认组即可
  • 描述:描述该配置文件
  • 配置格式:项目中使用的什么格式就选择什么格式,我们的demo中使用的是 YAML 格式配置, 这里也选择 YAML
  • 配置内容:将application.yml中的配置项复制粘贴
  • 发布:点击发布按钮

添加依赖

在根pom.xmlmessage中的pom.xml中分别添加Nacos配置所需要的依赖

<!-- 根 pom.xml中-->
<properties>
    // 省略...
    
    <nacos-config.version>0.3.0-RC</nacos-config.version>
</properties>
<!-- 统一依赖管理 -->
<dependencyManagement>
        // 省略...
        <!-- Nacos 配置中心 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>${nacos-config.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
// 省略...

注意:版本0.2.x.RELEASE对应的是 Spring Boot 2.x 版本,版本0.1.x.RELEASE对应的是 Spring Boot 1.x 版本。我们是 Spring Boot 3.x, 故使用最新的0.3.x版本。

<!-- message pom.xml中-->    
<!-- Nacos 配置中心 -->
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-config-spring-boot-starter</artifactId>
    </dependency>

刷新一下Maven仓库即可!

项目配置Nacos

Nacos依赖添加完成后,编辑application.yml文件,与Nacos通信

nacos: 
  config: # Nacos 配置中心
    access-key: # 身份验证
    secret-key: # 身份验证
    data-id: message # 指定要加载的配置数据的 Data Id
    group: DEFAULT_GROUP # 指定配置数据所属的组
    type: yaml # 指定配置数据的格式
    server-addr: http://127.0.0.1:8848/ # 指定 Nacos 配置中心的服务器地址
    auto-refresh: true # 是否自动刷新配置
    remote-first: true # 是否优先使用远程配置
    bootstrap:
      enable: true # 启动时,预热配置

使用@NacosValue注解

编辑TestController控制器,将之前的 Spring 框架提供的@Value注解,替换为 Nacos 的@NacosValue注解, 代码如下:

package org.example.message;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class TestController {
    @NacosValue(value = "${mail.password}", autoRefreshed = true)
    private String password ;
    @GetMapping("/test")
    public String test() {
        return "邮箱密码为: " + password;
    }
}
  • @NacosValue: 这是 Nacos 提供的一个注解,用于从 Nacos 配置中心中获取配置项,并将其注入到字段中。
  • value: 这是注解的一个参数,用于指定要获取的配置项的键。这里使用了占位符${rate-limit.api.limit},表示要从 Nacos 配置中心中获取键为rate-limit.api.limit的配置项。
  • autoRefreshed: 这是注解的另一个参数,用于指定是否自动刷新配置项。当配置中心中的配置项发生变化时,如果autoRefreshed设置为true,则该字段的值会自动更新,保持与配置中心中的最新值一致。

测试

修改nacos中的配置信息并发布,启动程序测试!

邮箱密码成功变为123456,说明Nacos作为配置中心的能力是非常强大的!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号