SpringCloud 配置中心【Nacos_Config】

目录

1. SpringCloud Config

2. Nacos_Config

3. 使用 Nacos Config 添加/配置 外部配置文件

3.1 添加/配置命名空间

3.2 添加/配置 外部配置文件

3.3 外部文件克隆到其他空间

4. 新建子模块【config_client】

4.1 父模块pom文件依赖结构

         4.2 子模块pom文件结构

4.3 配置子模块 bootstrap.yml文件

4.4 配置子模块启动类

4.5 编写controller接口测试

4.6 启动项目测试接口

4.6.1 Nacos_config外部配置文件数据  

4.6.2 测试接口获取到的nacos_config外部配置文件数据 

4.6.3 切换命名空间


前言

  了解SpringCloud 基础使用与Nacos 请查阅下篇文章

  SpringCloud 使用与Nacos_JoneClassMate的博客-CSDN博客

  了解SpringCloud 远程通信 请查阅下篇文章 

  SpringCloud 远程调用_JoneClassMate的博客-CSDN博客


1. SpringCloud Config

SpringCloud 配置中心【Nacos_Config】_第1张图片

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大 量的服务。

由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。 Spring Cloud 提供了 ConfigServer来解决这个问题.

Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服 务应用的所有环境提供了一个中心化的外部配置。

SpringCloud Config 分为服务端和客户端两部分。 

SpringCloud 配置中心【Nacos_Config】_第2张图片

服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置 信息,加密/解密 信息等访问接口。

客户端则是通过制定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心 获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并 且可以通过git客户端工具来方便的管理和访问配置内容。

SpringCloud 配置中心【Nacos_Config】_第3张图片

 一个使用微服务架构的应用系统可能会包括成百上千个微服务,配置各部相同,需求各不相同:

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

2. Nacos_Config

Spring Cloud Alibaba Nacos Config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布 式系统中的外部化配置提供服务器端和客户端支持。

使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外 部属性配置。

Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象

在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生 产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。 

3. 使用 Nacos Config 添加/配置 外部配置文件

     3.1 添加/配置命名空间

SpringCloud 配置中心【Nacos_Config】_第4张图片 

SpringCloud 配置中心【Nacos_Config】_第5张图片 

  • 添加完成的结构 

SpringCloud 配置中心【Nacos_Config】_第6张图片 

     3.2 添加/配置 外部配置文件

SpringCloud 配置中心【Nacos_Config】_第7张图片 

SpringCloud 配置中心【Nacos_Config】_第8张图片 

  • 添加完成的结构 

SpringCloud 配置中心【Nacos_Config】_第9张图片 

      3.3 外部文件克隆到其他空间

SpringCloud 配置中心【Nacos_Config】_第10张图片 

SpringCloud 配置中心【Nacos_Config】_第11张图片 

4. 新建子模块【config_client】

  • 因为小编是在父模块里面一个子模块里面完成的配置 也可以在单个模块里面完成

    4.1 父模块pom文件依赖结构





  4.0.0
  com.jmh
  springcloud01
  1.0-SNAPSHOT
  
  pom

  
  
    nacos_provider
    nacos_consumer
    nacos_commons
    config_client
  

  springcloud01 Maven Webapp
  
  http://www.example.com

  
  
    UTF-8
    1.7
    1.7
    2.4.1
    2020.0.0
    2021.1
  

  
  
    
      org.springframework.boot
      spring-boot-starter-test
    
    
      org.springframework.boot
      spring-boot-starter-web
    
    
    
      com.alibaba.cloud
      spring-cloud-starter-alibaba-nacos-discovery
    
    
    
      org.springframework.cloud
      spring-cloud-starter-openfeign
    
    
    
      org.springframework.cloud
      spring-cloud-loadbalancer
    
    
    
      ma.glasnost.orika
      orika-core
      1.4.6
    
    
      org.projectlombok
      lombok
    
    
    
      com.jmh
      nacos_commons
      0.0.1-SNAPSHOT
    
    
    
      com.alibaba.cloud
      spring-cloud-starter-alibaba-nacos-config
    
    
      org.springframework.cloud
      spring-cloud-starter-bootstrap
    
  

  
  
    
      
        org.springframework.boot
        spring-boot-dependencies
        ${spring-boot.version}
        pom
        import
      
      
        org.springframework.cloud
        spring-cloud-dependencies
        ${spring-cloud.version}
        pom
        import
      
      
        com.alibaba.cloud
        spring-cloud-alibaba-dependencies
        ${spring-cloud-alibaba.version}
        pom
        import
      
    
  



    4.2 子模块pom文件结构



    4.0.0
    com.jmh
    config_client
    0.0.1-SNAPSHOT
    config_client
    Demo project for Spring Boot

    
    
        springcloud01
        com.jmh
        1.0-SNAPSHOT
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    


    4.3 配置子模块 bootstrap.yml文件

server:
  port: 8083

spring:
  application:
    # 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定data-id
    # 跟服务名相同的data-id的配置文件,称之为默认的配置文件
    # 除了默认的配置文件,其他配置文件必须写上后缀
    name: config-client
  cloud:
    nacos:
      #注册中心
      discovery:
        server-addr: 127.0.0.1:8848
        # username: nacos
        # password: nacos
      #配置中心
      config:
        prefix: ${spring.application.name}
        #指定nacos配置中心地址
        server-addr: 127.0.0.1:8848
        file-extension: yml # 使用的 nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
        #namespace: ee98175d-fa34-4bd1-a732-e15c5cb352d6  # 使用的 nacos 的命名空间,默认为 null
        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
        # 共享配置集数组
        shared-configs:
          - data-id: config-redis.yml
            group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
            refresh: true # 是否自动刷新配置,默认为 false

SpringBoot默认支持properties和YAML两种格式的配置文件。

 

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使 用来配置application.yml中使用到参数等

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用 的公共参数等。

bootstrap.yml 先于 application.yml 加载

    4.4 配置子模块启动类

package com.jmh.config_client;

import lombok.Data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@EnableDiscoveryClient
@SuppressWarnings("all")
public class ConfigClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }

    /*对象形式获取nacos配置文件里面的属性*/
    @Configuration
    @ConfigurationProperties(prefix = "email")
    @Data
    public class EmailProperties{
        private String host;
        private String port;
        private String username;
        private String userpwd;
    }

}

    4.5 编写controller接口测试

package com.jmh.config_client.controller;

import com.jmh.config_client.ConfigClientApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 蒋明辉
 * @data 2022/11/6 14:05
 */
@RestController
@RefreshScope
@SuppressWarnings("all")
public class TestController {

    /*属性形式获取nacos里面配置文件的属性*/
    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private String port;

    @Autowired
    private ConfigClientApplication.EmailProperties emailProperties;


    @RequestMapping("/run")
    public String email(){
        StringBuffer str=new StringBuffer();
        str.append("email:"+emailProperties);
        str.append("redis:"+host+",");
        str.append(port);
        return str.toString();
    }


}

 @RefreshScope 实现配置实时更新

    4.6 启动项目测试接口

  •  可测试接口获取到的外部配置文件的数据是否一致

       4.6.1 Nacos_config外部配置文件数据  

SpringCloud 配置中心【Nacos_Config】_第12张图片

       4.6.2 测试接口获取到的nacos_config外部配置文件数据 

 SpringCloud 配置中心【Nacos_Config】_第13张图片

       4.6.3 切换命名空间

  • 复制命名空间步骤 

SpringCloud 配置中心【Nacos_Config】_第14张图片 

  •  复制好的命名空间粘贴到子项目bootstrap.yml文件
  •  spring.cloud.nacos.config.namespace

你可能感兴趣的:(spring,cloud,java,spring)