【Nacos】Nacos配置中心

目录

一、为什么需要配置中心

 二、nacos配置中心的使用

1.版本选择

2.pom.xml依赖

 3.bootstrap.yaml配置

4.Nacos控制台新建配置中心 

5.编写测试类

6.测试


一、为什么需要配置中心

把配置信息写在nacos配置中心里,相比于把配置信息写在application.yml等配置文件里,有以下好处

  • 实时生效:在 application.yml 中配置的参数,若要修改就必须重启应用程序。而 Nacos 配置中心支持动态配置更新,当配置发生变更时,应用程序能实时感知到并自动更新配置,无需重启,从而保证系统的高可用性和不间断运行。例如,在电商系统中,促销活动的折扣率、限时抢购的时间范围等配置随时可能调整,使用 Nacos 配置中心就能快速响应这些变化,及时生效。
  • 统一维护:对于微服务架构而言,每个服务都有自己的配置文件,管理起来较为繁琐。Nacos 配置中心可以把所有服务的配置集中管理,提供统一的界面和 API 来进行配置的增删改查操作,提升了配置管理的效率和可维护性。比如,在一个包含多个微服务的项目中,数据库连接信息、缓存服务器地址等公共配置可以统一存放在 Nacos 中,方便统一修改和维护。
  • 版本控制:Nacos 配置中心支持配置的版本管理,你能够查看配置的历史版本,回滚到之前的某个版本。这在配置修改出现问题时非常有用,可以快速恢复到正常状态。
  • 多环境配置:在不同的环境(如开发、测试、生产)中,应用程序的配置可能存在差异。Nacos 配置中心支持多环境配置管理,你可以为每个环境创建独立的配置集,并且可以设置配置的继承关系,减少配置的重复编写。

 二、nacos配置中心的使用

1.版本选择

  • springBoot : 2.6.13
  • springCloud : 2021.0.5
  • springCloudAlibaba : 2021.0.5.0
  • nacos : 2.2.0

2.pom.xml依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--配置中心的maven依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.2.0</version>
        </dependency>
    </dependencies>

 3.bootstrap.yaml配置

server:
  port: 9001
spring:
  application:
    #项目名称
    name: cloud-provider
  cloud:
    nacos:
      discovery: #服务发现配置
        #nacos地址
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
      config: #注册中心配置
        #nacos地址
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        file-extension: yaml
  • nacos作为配置中心时的配置必须声明在bootstrap.yaml中,其比application.yaml有更高的优先级,会在项目执行前将nacos的配置拉取到本地,然后才会读取application.yaml运行项目

4.Nacos控制台新建配置中心 

Data ID 的命名格式:

        Data ID 是配置集的唯一标识,一个应用可以包含多个配置集,每个配置集都需要被一个有意义的名称标识。那么 Data ID 怎么取值呢?格式通俗一点就是 “前缀-环境-扩展名”,如下所示:

${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

① prefix:前缀,默认是 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。

# 若不指定,默认采用应用名的方案
spring:

        application:

                name=cloud-provider
# 手动指定配置的dataID前缀标识
 spring:

        cloud:

                nacos:

                        config:

                                prefix=cloud-provider


② active:配置运行环境,即为当前环境对应的 profile。

注意:当 spring.profiles.active 为空时,对应的连接符 ”-“ 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}


③ file-exetension:配置文件的类型,默认是 properties,也可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前支持的类型有 TEXT、JSON、XML、YAML、HTML、Properties

# 指定配置文件类型为yaml文件
spring:

        cloud:

                nacos:

                        config:

                                file-extension=yaml


④ 最终配置:

        经过前面三个步骤,我们最终在nacos配置中心的控制台新增配置文件就是:cloud-provider.yaml

5.编写测试类

package com.dhp;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author dhp
 * @create 2025-04-03 13:38
 */

@RefreshScope  //配置发布之后,动态刷新配置
@RestController
@RequestMapping("/user")
public class ProviderController {
    // 使用@Value()导入配置
    @Value("${user.id}")
    private String id;
    @Value("${user.name}")
    private String name;
    @Value("${user.age}")
    private String age;


    @GetMapping("/getConfig")
    public String getConfig() {
        return "我是provider,已成功获取nacos配置中心的数据:(id:" + id + ",name:" + name + ",age:" + age +")";
    }
}

6.测试

1.访问http://localhost:9001/user/getConfig,查看是否获取到了配置中心的数据

2.修改配置中心数据

再次访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值