4. 微服务之Nacos配置管理

本文介绍了Nacos配置管理的主要目的,包括统一服务配置和实现服务更新无需重启。详细阐述了如何在Nacos控制台添加配置文件,以及微服务如何拉取和应用这些配置。同时,讨论了微服务的热更新策略,如@RefreshScope和@ConfigurationProperties的使用。此外,还讲解了如何在Nacos中实现多环境配置的共享,以及配置加载的优先级规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1 Nacos配置管理的目的

在这里插入图片描述

可用于对各个服务进行统一配置,并且可以通过修改配置信息来进行服务更新,而不用重启服务

4.2 Nacos控制台添加配置文件

进入配置列表添加文件

在这里插入图片描述

配置信息

在这里插入图片描述

配置文件的Data ID:[服务名称]-[环境].[后缀名] (取名要规范,要不然获取不到该文件)
格式:目前支持 yaml 和 properties

4.3 微服务配置拉取

配置获取步骤:

在这里插入图片描述

在项目启动时,bootstrap.yml 优先级大于 application.yml,所以可以将 nacos 相关配置信息放入 bootstrap.yml 中用于先读取 nacos中的配置文件

  1. 在 pom.xml 中引入 Nacos 的配置管理客户端依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    
  2. 在 resource 目录添加 bootstrap.yml 文件,进行配置,其优先级高于 application.yml 文件

    spring:
      application:
        name: user_service # 服务名称
      profiles:
        active: dev # 开发环境
      cloud:
        nacos:
          # nacos 地址
          server-addr: localhost:8848
          config:
            file-extension: yaml # 文件后缀名
    

    可以看到,其 服务名称、开发环境、文件后缀名 是要与Nacos控制台中配置文件名 [服务名称]-[环境].[后缀名] 进行对应的

  3. 通过 @Value("${xxx.xxx}") 从配置文件读取值

4.4 微服务热更新

Nacos 中的配置文件变更后,微服务无需重启就可以感知

方式一:

在 @Value 注入的变量所在类上添加注解 @RefreshScope 实时刷新

@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
    @Value("${pattern.name}")
    private String name;

    @GetMapping("/cfg")
    public String showCfg() {
        return name;
    }
}
方式二(推荐):

创建一个该属性的类进行属性封装,使用 @ConfigurationProperties 注解自动装配属性

@Component
@Data
@ConfigurationProperties(prefix = "pattern") // 前缀对应的是Nacos配置文件中首字段
public class PatternProperties {
    private String name;
    private String age;
}
4.5 多环境配置共享

微服务启动时,会从nacos读取多个配置文件:

  • [服务名称]-[环境].[后缀名],例如:userservice-dev.yaml
  • [服务名称].[后缀名],例如:userservice.yaml

无论环境如何变化,[服务名称].[后缀名] 这个文件一定会加载,因此多环境共享配置可以写入这个文件

在这里插入图片描述

多个配置文件属性重复问题:

当 本地配置文件属性 与 nacos 配置文件中 [服务名称]-[环境].[后缀名],[服务名称].[后缀名] 属性重复时,遵循的优先级为:

[服务名称]-[环境].[后缀名] > [服务名称].[后缀名] > 本地配置

即 远端配置 高于 本地配置
在远端配置中,附有环境配置 高于 共享配置

### 如何在微服务架构中正确加载和使用Nacos配置中心的配置项 #### 加载Nacos配置概述 为了使微服务能够利用Nacos作为其配置管理工具,在项目初始化阶段,需确保`bootstrap.properties`或`bootstrap.yml`文件被正确设置来指向Nacos服务器地址以及指定应用所需的具体环境变量。这允许应用程序在启动期间自动获取并加载来自Nacos的外部化配置数据[^2]。 #### 配置文件示例 对于采用YAML格式的应用程序而言,可以在项目的资源目录下的`bootstrap.yml`文件内添加如下所示的相关配置: ```yaml server: port: 9201 # 定义服务端口 spring: application: name: cloud-nacos-provider # 设置应用名称 profiles: active: dev # 激活开发模式 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # Nacos的服务注册地址 config: server-addr: 127.0.0.1:8848 # Nacos配置中心地址 file-extension: yml # 设定配置文件扩展名为yml shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 动态引入共享配置文件 ``` 上述配置片段展示了如何通过修`bootstrap.yml`中的条目来实现与Nacos配置中心的有效对接[^4]。 #### 实现动态刷新功能 为了让微服务能够在运行时响应由Nacos推送过来的新版本配置而不必重启整个进程,开发者应当充分利用Nacos所提供的长轮询机制。一旦检测到任何变更事件发生,则立即触发回调函数执行相应的处理逻辑,从而达到即时生效的目的[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值