探索Spring Cloud Config:构建高可用的配置中心

news2024/11/26 13:57:38

目录

  • 认识Spring Cloud Config
  • Config Server读取配置文件
  • 步骤1:
    • (1)创建config-server项目
    • (2)在config-server中开启Config Server功能
    • (3)在config-server配置文件进行相关配置
    • (4)在config-server中创建配置文件
  • 步骤2:搭建Config Client
    • (1)创建config-client项目,导入依赖
    • (2)在config-client配置文件进行相关配置
    • (3)在config-client中添加方法
  • 步骤3:测试运行
  • 从Git仓库读取配置文件
    • 步骤1:创建Git远程仓库并创建配置文件
      • (1)百度搜索“码云”,打开Git官网并注册登录
      • (2)登录成功后,创建仓库
      • (3)创建仓库成功后,在仓库中新建yml文件,输入配置内容提交,然后点击加号,新建文件夹
    • 步骤2:修改Config Server的配置文件
    • 步骤3:测试运行
    • bootstrap.yml与application.yml的区别
  • 搭建高可用Config Server
    • 步骤1:创建Eureka Server
    • 步骤3:改造Config Client项目
    • 步骤4:搭建Config Server集群
    • 步骤5:测试运行

认识Spring Cloud Config

概述:Spring Cloud Config为Spring应用提供了便捷的配置管理解决方案,并且可以与其他编程语言编写的应用程序协同工作。

Spring Cloud Config通过配置服务器(即Config Server)和配置客户端(即Config
Client)为分布式系统提供外部配置支持。

Config Server作为一个独立的微服务,负责从Git等存储库加载配置并向需要它的微服务公开这些配置信息。

该方案支持环境隔离功能,能够实现多环境的代码共享以及针对特定环境的配置管理需求。

所有环境配置数据由中央服务器统一维护,并通过Git进行版本控制。

为了保护敏感信息的安全,它提供了加密与解密机制,并可通过@EnableConfigServer注解轻松集成到Spring Boot应用中。

此外,这种集中管理方式确保了配置信息的一致性和安全性,同时简化了跨环境部署的复杂性。


Config Client -> Config Server ->git Repo

Config Server读取配置文件

从本地仓库读取配置文件

步骤:
1.搭建config-server

2.搭建config-client

3.测试运行

步骤1:

创建父工程config-1,在其中搭建Config Server

(1)创建config-server项目

导入依赖

使用Spring Initializr方式创建一个名称为config-server的Spring Boot项目,将Artifact命名为config-server,添加Config Server、Test依赖。其中Config Server依赖如下:

<dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-config-server</artifactId>
     <version>2.0.0.RELEASE</version>
</dependency>

(2)在config-server中开启Config Server功能

在程序的启动类ConfigServerApplication添加@EnableConfigServer注解,开启Config Server功能。
在这里插入图片描述

(3)在config-server配置文件进行相关配置

在项目的配置文件application.yml中进行相关配置,包括指定服务名、端口号、本地读取配置以及读取路径。
在这里插入图片描述

(4)在config-server中创建配置文件

在项目的resource目录下建一个 bushuo 文件夹,用于存放本地配置文件。在 bushuo目录下,新建一个config-client-dev.yml文件,用作后续将要创建的config-client工程的dev开发环境的配置文件。在config-client-dev.yml配置文件中,配置端口号和自定义变量。
在这里插入图片描述

步骤2:搭建Config Client

(1)创建config-client项目,导入依赖

使用Spring Initializr方式创建一个名称为config-client的Spring Boot项目,将Artifact命名为config-client,添加Config、Web和Test的起步依赖。其中Config依赖如下:

 <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.0.0.RELEASE</version>

        </dependency>

在这里插入图片描述

(2)在config-client配置文件进行相关配置

在resources文件下新建bootstrap.yml文件。
在这里插入图片描述

(3)在config-client中添加方法

为了更直观的看到配置文件config-client-dev.yml被读取,创建controller包下的ConfigController类,添加一个hi()方法进行测试。
在这里插入图片描述

步骤3:测试运行

先启动config-server项目,再启动config-client项目,观察config-client控制台日志。

使用浏览器访问config-client的请求方法:http://localhost:8002/hi。

观察输出结果。

在这里插入图片描述

从Git仓库读取配置文件

步骤:

1.创建Git远程仓库并创建配置文件
2.修改Config Server的配置文件
3.测试运行

步骤1:创建Git远程仓库并创建配置文件

在远程Git仓库创建一个名称为hello的公开仓库,然后在公开库中创建一个和config-client-dev.yml相同的文件。

(1)百度搜索“码云”,打开Git官网并注册登录

gitee

(2)登录成功后,创建仓库

在这里插入图片描述
新建仓库内容如下:

在这里插入图片描述

(3)创建仓库成功后,在仓库中新建yml文件,输入配置内容提交,然后点击加号,新建文件夹

在这里插入图片描述
在这里插入图片描述
往下翻,点击提交

步骤2:修改Config Server的配置文件

在这里插入图片描述
点击“克隆”按钮复制uri地址,修改username与password的值为登录Git的用户名和密码。
在这里插入图片描述

修改Config Server的配置文件application.yml。配置服务名、端口号、远程Git仓库的地址、文件夹地址、用户名、密码、分支名等。
在这里插入图片描述

步骤3:测试运行

重启config-server和config-client,观察config-client控制台日志。

使用浏览器访问http://localhost:8002/hi。
在这里插入图片描述

bootstrap.yml与application.yml的区别

加载顺序:若application.yml 和bootstrap.yml 在同一目录下:bootstrap.yml 先加载 application.yml后加载
配置区别:bootstrap.yml 和 application.yml 都可以用来配置参数。
bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootstrap.yml 被加载,则内容不会被覆盖。
application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
属性覆盖问题:application.yml 的内容标签与 bootstrap 的标签一致,application 也不会覆盖 bootstrap,而 application.yml 里面的内容可以动态替换


注意
git的配置文件与项目name一致
思考:

为新的config客户端config-client-another,在Git中添加配置文件,运行测试。

(1)创建config-client-another项目,导入依赖

其中Config依赖如下:

 <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.0.0.RELEASE</version>

        </dependency>

(2)在resources 新建bootstrap.yml文件
在这里插入图片描述

spring:
  application:
    name: config-client-another
  cloud:
    config:
      uri: http://localhost:8001
      fail-fast: true
  profiles:
    active: dev

(3)添加方法:创建controller包,configcontroller,添加方法hello1,进行测试

package com.bushuo.configclientanother.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class configcontroller {
    @Value( "${hello1}" )
    String hello1;
    @RequestMapping(value = "/hello1")
    public String hello1(){
        return hello1;
    }
}

在这里插入图片描述
(4)在git中在hello下创建config-client-another-dev.yml
在这里插入图片描述
(5)运行测试
在这里插入图片描述

搭建高可用Config Server

服务实例很多时,所有的服务实例需要同时从配置中心Config Server读取配置文件,这时可以考虑将配置中心Config Server做成一个集群化的微服务,从而达到高可用。将Config Server和Config Client注册在Eureka Server.

步骤:
1.创建Eureka Server

2.改造Config Server项目

3.改造Config Client项目

4.搭建Config Server集群

5.测试运行

步骤1:创建Eureka Server

步骤1:创建项目,引入依赖

1)
使用Spring Initializr方式创建一个名称为eureka-server的Spring Boot项目,将Artifact命名为eureka-server,在pom.xml文件中添加Eureka Server依赖。

方便测试效果,新建一个eureka-server项目作为Config Server的注册中心,将eureka-server端口号设置为7001。

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bushuo</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>

                spring-cloud-starter-netflix-eureka-server

            </artifactId>

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

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

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-dependencies</artifactId>

                <version>Finchley.SR2</version> 

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
与springboot一致 2.0.6.RELEASE 的springcloud的依赖 Finchley.SR2 ---

2):添加Eureka的相关配置

在全局配置文件application.yml中添加Eureka的相关配置信息。
在这里插入图片描述

3):在项目启动类添加@EnableEurekaServer注解

在项目启动类EurekaServerApplication上添加@EnableEurekaServer注解开启Eureka Server功能。
在这里插入图片描述
4)测试运行 http://localhost:7001
在这里插入图片描述
步骤2:改造Config Server项目

(1)Config Server作为服务器,需要在工程中的pom.xml配置文件中加入Eureka Client依赖。


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
    \
        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

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

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

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-dependencies</artifactId>

                <version>Finchley.SR2</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

(2)在项目的启动类ConfigServerApplication添加@EnableEurekaClient和 @EnableConfigServer注解,开启Eureka Server和Config Server功能。

在这里插入图片描述

(3)修改配置文件application.yml文件,为Config Server指定服务注册的地址等信息。

步骤3:改造Config Client项目

(1)在pom文件中加入Eureka Client起步依赖。在项目启动类上添加@EnableEurekaClient注解启动Eureka Client功能。
在这里插入图片描述
在配置文件bootstrap.yml加入指定服务注册地址等相关配置,配置如下:
在这里插入图片描述

步骤4:搭建Config Server集群

搭建高可用的Config Server服务只需要将Config Server多实例部署,使用Spring Initializr方式创建一个名称为config-server2的Config Server项目,设置端口号为8003,服务名也为config-server,其他配置信息和搭建过程与config-server项目一致。

步骤5:测试运行

使用浏览器访问http://localhost:7001。

在这里插入图片描述
访问config-client的请求方法:http://localhost:8002/hi。观察输入结果。

在这里插入图片描述

停掉config-server服务,再次访问请求,观察还能否正常访问?
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解 Transformer:构建先进 NLP 模型的关键技术

目录 一、Transformer 为何如此重要&#xff1f;二、Transformer 的核心组成部分1. 注意力机制2. 位置编码3. 前馈神经网络 三、Transformer 的训练方法1. 无监督预训练2. 有监督微调 四、Transformer 的应用场景五、总结与展望 在自然语言处理&#xff08;NLP&#xff09;的领…

【JAVA-数据结构】二叉树

这篇是二叉树相关内容。 1. 树型结构 1.1 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。朝把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶下的。它具有以…

外卖点餐系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;外卖员管理&#xff0c;餐厅管理&#xff0c;用户管理&#xff0c;菜品分类管理&#xff0c;菜品信息管理&#xff0c;外卖订单管理&#xff0c;订单配送管理 微信端账号功能包括&#xff1a;系统首页…

Java项目实战II基于Java+Spring Boot+MySQL的智能物流管理系统 (源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着电子商…

人、机不同的学习机理

在人机协同的过程中&#xff0c;断点&#xff08;或称为障碍点&#xff09;是指可能导致人机合作效率下降、决策失误或任务失败的关键环节。以下是一些常见的断点及其影响&#xff1a;人类和机器之间的信息传递不畅&#xff0c;可能导致误解或遗漏关键信息&#xff0c;技术术语…

YOLO11改进|注意力机制篇|引入三重注意力机制Triplet Attention

目录 一、【Triplet Attention】注意力机制1.1【Triplet Attention】注意力介绍1.2【Triplet Attention】核心代码 二、添加【Triplet Attention】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【Triplet Attention】注意力机…

ARM嵌入式学习--第二天

-指令流水线 -基础知识 1.流水线技术通过多个功能部件并行工作来缩短程序执行时间&#xff0c;提高处理器的效率和吞吐率 2.增加流水线级数&#xff0c;可以简化流水线的各级逻辑&#xff0c;进一步提高了处理器的性能 3.以三级流水线分析&#xff1a; pc代表程序计数器&#x…

Graph Contrastive Learning 图对比学习GCL

Preamble GCL主要任务&#xff1a;学习一个编码器&#xff0c;可以编码出结构和结点特征信息&#xff0c;得到一个低维的表达 早期大部分GNN模型都是有监督的训练 自监督学习主要分成两种&#xff1a;生成式&#xff08;用已有信息去预测自己的其他信息&#xff09; and 对…

C++学习笔记----9、发现继承的技巧(一)---- 使用继承构建类(1)

在前面的章节中&#xff0c;你学到了继承关系是一种真实世界对象以层次存在的模式。在编程世界中&#xff0c;当需要写一个类基于其构建&#xff0c;或进行细微的修改的另一个类时&#xff0c;那种模式就有了关系。完成这个目标的一个方式是拷贝一个类的代码粘贴到另一个类中。…

一个月学会Java 第14天 内部类

Day14 内部类 类有外边的public class&#xff0c;然后还有一个文件多个的class&#xff0c;但是有没有想过&#xff0c;class可以作为成员也就是类内部的类&#xff0c;甚至作为方法内部的属性也就是类内部的方法的内部出现。除了这两个&#xff0c; 还有直接对着上节课讲的抽…

GeoScene Pro教程(008):GeoScenePro数据查询和检索

文章目录 1、工具分类2、数据常用工具2.1 加载数据2.2 查询需求2.2.1 按照属性查询查询1:人口大于300万的城市有哪些查询2:自治州有哪些查询3:城市名字中带有“荆”的有哪些补充2.2.2 按照位置查询需求2:导出湖北省境内的铁路数据需求3:武汉市共有多少条铁路2.2.3 空间连接…

48 Redis

48 Redis 前言 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 redis会周期性的把更新的数据写入磁盘或者把修改操…

RTSP与ONVIF协议的区别及其在EasyCVR视频汇聚平台中的应用

在视频监控和物联网设备领域&#xff0c;RTSP&#xff08;Real Time Streaming Protocol&#xff09;和ONVIF&#xff08;Open Network Video Interface Forum&#xff09;是两个重要的协议&#xff0c;它们各自在视频流的传输和控制上发挥着不同的作用&#xff0c;并在实际应用…

网络安全之XXE攻击

0x01 什么是 XXE 个人认为&#xff0c;XXE 可以归结为一句话&#xff1a;构造恶意 DTD 介绍 XXE 之前&#xff0c;我先来说一下普通的 XML 注入&#xff0c;这个的利用面比较狭窄&#xff0c;如果有的话应该也是逻辑漏洞。 既然能插入 XML 代码&#xff0c;那我们肯定不能善罢…

基于Nodemcu的手机控制小车

基于Nodemcu的手机控制小车 一、项目说明二、项目材料三、代码与电路设计四、轮子和车体五、电路连接六、使用方法 一、项目说明 嗨&#xff0c;机器人项目制造者们&#xff01;在这个项目中&#xff0c;我制作了这辆简单但快速的遥控车&#xff0c;它可以通过智能手机控制&am…

gaussdb 主备版本8 SQL参考 学习

SQL参考 1 数据类型 1.1 货币类型 1.1.1 货币类型存储带有固定小数精度的货币金额。 1.2 布尔类型 1.2.1 true&#xff1a;真 1.2.2 false&#xff1a;假 1.2.3 null&#xff1a;未知&#xff08;unknown&#xff09; 1.3 日期/时间类型 1.3.1 DATE 输出格式&#xff1a;仅支…

MySQL-06.DDL-表结构操作-创建

一.DDL(表操作) create database db01;use db01;create table tb_user(id int comment ID&#xff0c;唯一标识,username varchar(20) comment 用户名,name varchar(10) comment 姓名,age int comment 年龄,gender char(1) comment 性别 ) comment 用户表; 此时并没有限制ID为…

圈子系统APP小程序H5该如何设置IM?

搭建圈子系统的常见问题,以及圈子论坛系统的功能特点 社交圈子论坛系统的概念 圈子小程序源码 多客圈子系统 圈子是什么软件 跟进圈一个系统的软件 为圈子系统APP小程序H5设置IM&#xff08;即时通讯&#xff09;&#xff0c;需要遵循一系列步骤来确保通讯功能的稳定、安全和高…

企业架构之从理论指南到实践指导企业数字化转型

理论与实践结合的数字化转型之道 在当今的全球化经济中&#xff0c;企业面临着前所未有的数字化转型压力。数字化转型不仅是技术的更新换代&#xff0c;更是业务、组织、文化和战略的系统性重塑。对于企业来说&#xff0c;如何将理论转换为有效的实践路径&#xff0c;是推动数…

STM32 通用同步/异步收发器

目录 串行通信基础 串行异步通信数据格式 USART介绍 USART的主要特性 USART的功能 USART的通信时序 USART的中断 串行通信基础 在串行通信中&#xff0c;参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数据信号&#xff0c;按一定的约定规则被接…