SpringCloud 配置中心【Nacos_Config】

这篇具有很好参考价值的文章主要介绍了SpringCloud 配置中心【Nacos_Config】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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】

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

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

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

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

SpringCloud 配置中心【Nacos_Config】

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

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

SpringCloud 配置中心【Nacos_Config】

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

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

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】 

SpringCloud 配置中心【Nacos_Config】 

  • 添加完成的结构 

SpringCloud 配置中心【Nacos_Config】 

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

SpringCloud 配置中心【Nacos_Config】 

SpringCloud 配置中心【Nacos_Config】 

  • 添加完成的结构 

SpringCloud 配置中心【Nacos_Config】 

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

SpringCloud 配置中心【Nacos_Config】 

SpringCloud 配置中心【Nacos_Config】 

4. 新建子模块【config_client】

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

    4.1 父模块pom文件依赖结构

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jmh</groupId>
  <artifactId>springcloud01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--pom代表这个是个父工程-->
  <packaging>pom</packaging>

  <!--指向儿子-->
  <modules>
    <module>nacos_provider</module>
    <module>nacos_consumer</module>
    <module>nacos_commons</module>
    <module>config_client</module>
  </modules>

  <name>springcloud01 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!--提供版本-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring-boot.version>2.4.1</spring-boot.version>
    <spring-cloud.version>2020.0.0</spring-cloud.version>
    <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
  </properties>

  <!--提供依赖-->
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--注册与发现-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--远程通信-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!--负载均衡-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-loadbalancer</artifactId>
    </dependency>
    <!--对象赋值依赖-->
    <dependency>
      <groupId>ma.glasnost.orika</groupId>
      <artifactId>orika-core</artifactId>
      <version>1.4.6</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
    <!--子模块nacos_commons依赖-->
    <dependency>
      <groupId>com.jmh</groupId>
      <artifactId>nacos_commons</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!--配置中心-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
  </dependencies>

  <!--提供依赖版本-->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring-cloud-alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>


</project>

    4.2 子模块pom文件结构

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jmh</groupId>
    <artifactId>config_client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config_client</name>
    <description>Demo project for Spring Boot</description>

    <!--指向父亲-->
    <parent>
        <artifactId>springcloud01</artifactId>
        <groupId>com.jmh</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

    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两种格式的配置文件。

SpringCloud 配置中心【Nacos_Config】 

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

SpringCloud 配置中心【Nacos_Config】

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

SpringCloud 配置中心【Nacos_Config】

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】

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

 SpringCloud 配置中心【Nacos_Config】

       4.6.3 切换命名空间

  • 复制命名空间步骤 

SpringCloud 配置中心【Nacos_Config】 文章来源地址https://www.toymoban.com/news/detail-429079.html

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

到了这里,关于SpringCloud 配置中心【Nacos_Config】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nacos服务注册和配置中心(Config,Eureka,Bus)1

            Spring Cloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案, Spring Cloud Alibaba可以集成Zuul、Gateway等网关组件,也可集成R

    2024年02月16日
    浏览(28)
  • Nacos服务注册和配置中心(Config,Eureka,Bus)2

            Nacos领域模型,Namespace命名空间、Group分组、集群这些都是为了进行归类管理,把服务和配置文件进行归类,归类之后就可以实现一定的效果,比如隔离。对于服务来说,不同命名空间中的服务不能够互相访问调用         Namespace:命名空间,对不同的环境进行

    2024年02月16日
    浏览(44)
  • springcloud整合nacos配置中心

    前言 在当今快速发展的云原生应用开发环境中,配置中心的重要性不言而喻。 Nacos作为一个开源的动态服务发现、配置管理和服务管理平台,为开发者提供了一种简单而强大的方式来管理应用程序的配置信息。 而Spring Boot作为一个快速构建应用程序的框架,与Nacos的结合可以

    2024年02月08日
    浏览(40)
  • SpringCloud-搭建Nacos配置中心

    Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个分布式服务注册、配置管理,以及服务健康管理平台。在微服务架构中,配置管理是至关重要的一环,Nacos 提供了可靠、动态的配置管理功能,为分布式系统的配置中心提供了便捷的解决方案。 Nacos的主要功能图:

    2024年02月20日
    浏览(40)
  • 【SpringCloud config分布式配置中心】—— 每天一点小知识

    ·                                                                         💧 S p r i n g C l o u d c o n f i g 分布式配置中心 color{#FF1493}{SpringCloud config分布式配置中心} Sp r in g Cl o u d co n f i g 分布式配置中心 💧           🌷 仰望天空,妳

    2024年02月11日
    浏览(26)
  • SpringCloud之Nacos配置中心解读

    目录 基本介绍  概述 动态配置服务 多配置格式编辑器  微服务拉取配置流程 Data ID @RefreshScope 配置共享的优先级 实战使用 简单的共享配置 开发环境的共享配置 环境隔离-命名空间Namespace 业务隔离-Group分组 概述 Nacos除了可以做注册中心,同样可以做配置管理来使用。 所谓

    2024年02月03日
    浏览(46)
  • SpringCloud Alibaba 之 Config配置中心,Redis分布式锁详解

    目录 1.服务配置中心 1.1 服务配置中心介绍  1.2 Nacos Config 实践 1.2.1 Nacos config 入门案例  1.2.2  Nacos 配置动态刷新 1.2.3 配置共享 1.2.4 nacos 几个概念   2.分布式锁 2.1 分布式锁介绍  2.2 Redisson  2.2.1 Redisson 实践  2.2.2 Redisson 原理   首先我们来看一下,微服务架构下关于配置文件

    2024年02月04日
    浏览(29)
  • springboot整合Nacos配置中心报错create config service error!properties=Nacos

    描述:最近在整合谷粒商城项目的过程中发现一个问题, create config service error!properties=NacosConfigProperties{serverAddr=\\\'null\\\', encode=\\\'null\\\', group=\\\'DEFAULT_GROUP\\\', prefix=\\\'null\\\', fileExtension=\\\'properties\\\', timeout=3000, endpoint=\\\'null\\\', namespace=\\\'null\\\', accessKey=\\\'null\\\', secretKey=\\\'null\\\', contextPath=\\\'null\\\', clusterName=\\\'null\\\'

    2024年02月14日
    浏览(25)
  • 注册中心/配置管理 —— SpringCloud Alibaba Nacos

    Nacos 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生的应用程序 Nacos 的关键特性包括以下几项: 服务发现和服务健康监测:服务提供者使用原生 SDK、OpenAPI 等注册服务后,服务消费者可以使用 HTTPAPI 查找和发现服务。Nacos 提供对服务的实时健康检查

    2024年02月14日
    浏览(42)
  • SpringCloud + Gateway(网关) + Nacos(注册中心+配置中心)+ Dubbo(内部服务调用)

    Apache Dubbo是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力 1、协议支持方面 Feign更加优雅简单。Feign是通过REST API实现的远程调用,基于Http传输协议,服务提供者需要对外暴露Http接口供消费者调用,服务粒度是http接口级的。通过短连接的方式进行通信,

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包