【Spring Cloud】关于Nacos配置管理的详解介绍
作者:mmseoamin日期:2024-01-19

【Spring Cloud】关于Nacos配置管理的详解介绍,第1张

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

【Spring Cloud】关于Nacos配置管理的详解介绍,请添加图片描述,第2张

目录

🌟前言

✨Nacos案例实操

🍃依赖导入

🍃文件配置

🍃Nacos创建配置

🍃读取配置信息

🍃 配置热更新

✨多环境配置 

✨环境隔离


🌟前言

Nacos(Naming and Configuration Service)是一个用于服务发现、配置管理和动态DNS的开源平台。它提供了一种简单而强大的方式来管理微服务架构中的配置信息,并且能够通过服务注册与发现来实现服务间的通信。

当我们的项目服务多起来的时候配置文件是必不可少的,但有些配置文件又是重复的,那么我们如果将它进行统一管理呢?那就可以用到我们的Nacos,不但有服务注册中心还有配置管理何乐而不为?话不多说直接上手。

✨Nacos案例实操

🍃依赖导入


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

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

    org.springframework.cloud
    spring-cloud-starter-bootstrap

🍃文件配置

SpringBoot 默认支持 properties 和 YAML 两种格式的配置文件。
  • bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
  • application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
    注意:bootstrap.yml 先于 application.yml 加载
    spring:
      application:
        # 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定
        data-id: 
    # 跟服务名相同的data-id的配置文件,称之为默认的配置文件
    # 除了默认的配置文件,其他配置文件必须写上后缀
    name: xx
    cloud:
      nacos:
        discovery:
          # Nacos服务发现的地址
          server-addr: 127.0.0.1:8848
        config:
          # Nacos配置中心的配置前缀,用于指定配置文件的命名空间
          prefix: ${spring.application.name}
          
          # 指定Nacos配置中心地址
          server-addr: 127.0.0.1:8848
          
          # 使用的Nacos配置集的dataId的文件拓展名,同时也是Nacos配置集的配置格式,默认为properties
          file-extension: yaml
          
          # 使用的Nacos的命名空间,默认为null
          namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff
          
          # 使用的Nacos配置分组,默认为DEFAULT_GROUP
          group: DEFAULT_GROUP
          
          # 是否自动刷新配置,默认为false。使用@RefreshScope实现配置实时更新
          refresh: true
      shared-configs:
        # 共享配置集1
        - data-id: shared-dataId-01.yaml
          group: DEFAULT_GROUP
          refresh: true
        # 共享配置集2
        - data-id: shared-dataId-02.yaml
          group: DEFAULT_GROUP
          refresh: true
      # 要导入的其他配置文件的data-id,多个之间使用逗号分隔
      shared-dataids: a.yml,b.yml
      # 可刷新的配置文件的data-id,多个之间使用逗号分隔
      refreshable-dataids: a.yml,b.yml
    

    这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据
    ${spring.application.name}和${spring.cloud.nacos.config.file-extension}作为文件Data ID,来读取nacos的配置。 

    🍃Nacos创建配置

    通过localhost:8848/nacos访问我们的Nacos为其添加配置文件(配置文件中的值要与这里相符)

    【Spring Cloud】关于Nacos配置管理的详解介绍,第3张

    【Spring Cloud】关于Nacos配置管理的详解介绍,第4张

    注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

    🍃读取配置信息

    在生产服务中的ConfigController中添加业务逻辑,读取conf对象的相关配置

    @RestController
    @Slf4j
    //实现配置实时更新
    @RefreshScope
    public class ConfigController {
        //读取Nacos的配置文件信息
        @Value("${email.account}")
        private  String account;
        @Value("${email.password}")
        private  String password;
        @RequestMapping("/getConfig")
        public String getConfig() {
            log.info("account:{},password{}",account,password);
            return "🍗";
        }
    }

    在页面访问http://localhost:8081/getConfig,可以看到效果

    【Spring Cloud】关于Nacos配置管理的详解介绍,第5张

     

    🍃 配置热更新

    修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。

    局部方式: 使用@RefreshScope注解标注在使用配置信息的类上
    全局方式: 先使用@ConfigurationProperties注解将配置读取读取到一个对象上,然后在需要使用配置的类中注入配置对象

     

    ✨多环境配置 

    先去命名空间创建几个环境

    【Spring Cloud】关于Nacos配置管理的详解介绍,第6张

    添加dev环境配置:在nacos中添加一个produce.yaml配置

    【Spring Cloud】关于Nacos配置管理的详解介绍,第7张

    添加test环境配置:在nacos中添加一个produce.yaml配置

    【Spring Cloud】关于Nacos配置管理的详解介绍,第8张

    指定环境配置

    在bootstrap.yaml文件,添加要读取的环境项,内容如下: 

    【Spring Cloud】关于Nacos配置管理的详解介绍,第9张

    ✨环境隔离

    nacos config 支持 Namespace Group Data Id 来定位一个配置集(配置文件),可以通过不同的组合实现配置集的隔离。

    • 不同环境不同配置:例如数据源在不同的环境(开发,测试,生产)是不同的可以通过配置中心
    • 运行期间可以动态调整。例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀值,并且调整时不停止微服务(配置修改后可以自动更新)

    【Spring Cloud】关于Nacos配置管理的详解介绍,第10张

    【Spring Cloud】关于Nacos配置管理的详解介绍,第11张

    需要在指定的命名空间(环境)中创建配置信息

    【Spring Cloud】关于Nacos配置管理的详解介绍,第12张

    读取配置信息 

    spring:
      application:
        name: produce
      #profiles:
        #active: dev # 指定环境
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 # nacos 配置中心地址
          config:
            server-addr: ${spring.cloud.nacos.discovery.server-addr} # nacos 配置中心地址
            prefix: ${spring.application.name} #文件名
            file-extension: yaml  # 文件扩展名
            group: CONFIG_GROUP