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

目录

  • 认识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-anothercloud:config:uri: http://localhost:8001fail-fast: trueprofiles: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.mzph.cn/bicheng/57208.shtml

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

相关文章

Axure复选框全选反选取消高级交互

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;复选框全选反选取消制作 主要内容&#xff1a;点击复选框&#xff0c;实现列表数据项全选选中、反选和取消选中效果 应用场景&#xff1a;多项选定…

【MySQL 保姆级教学】表的增删改查(上)

表的增删改查 1. 创建一个表 CREATE2 插入数据 INSERT INTO2.1 语法2.2 插入单行数据全列插入2.3 插入多行数据指定列插入2.4 同步更新 ON DUPLICATE KEY UPDATE2.4.1 引入2.4.2 同步更新2.4.3 查看被影响的行 2.5. 替换 REPLACE INTO 3. Retrieve&#xff08;查询SELECT&#…

有道在线翻译+4款新星,翻译从此无障碍,你get了吗?

现在全世界都连在一起了&#xff0c;说话不一样的问题再也不是啥大事。不管是搞研究、谈生意还是平时过日子&#xff0c;翻译软件都成了我们离不开的帮手。今儿&#xff0c;我们特激动地告诉大家&#xff0c;有道在线翻译和三个新伙伴一起&#xff0c;给Windows系统做了个超牛的…

9.校园二手网站系统( Springboot 和 thymeleaf(html)开源框架)

目录 1.系统的受众说明 2.系统需求分析 2.2.1用户功能模块 2.2.2二手交易功能需求 2.2.3需求发布功能需求 2.3.1操作流程 2.3.2添加信息流程 2.3.3删除信息流程 2.4 系统E-R图 3.系统概要设计 3.1系统的整体架构 3.2 数据库表 4.系统实现 4.1用户功能模块 4.2 二…

程序员们辛苦啦!1024程序员节,今天,我们不一样!

一、程序员节来历 程序员节&#xff08;Programmers Day&#xff09;是一年中专门为程序员和计算机科学工作者所设立的节日&#xff0c;通常是在每年的第256天庆祝。256这个数字在编程中具有特别的意义&#xff0c;因为它是2的8次方&#xff0c;代表着一个字节可以表示的所有可…

如何借助前端表格控件助力企业实现财务数字化转型

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 前言 在当今快速变化的经济环境中&#xff0c;记账软件对个人和企业的重要性愈发突出。对于个人而言&#xff0c;它可以帮助用户实时掌握财务状况&#xff0c;促进合理消费和有效储蓄&…

Java项目-基于Springboot的高校党务系统项目(源码+说明).zip

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

【SoC_Design】USB基本知识

目录 USB物理接口 USB3.0物理层支持dp-alt的usb type-c接口 拓扑结构层次结构 USB物理接口 USB2.0 两线&#xff1a;D、D- USB3 六线&#xff1a;D、D-、SSTX、SSTX-、SSRX、SSRX- USB3 2lane 十线&#xff1a; D、D-、&#xff08;SSTX、SSTX-、SSRX、SSRX-&#xff09;x2USB2…

CSS文本基础知识

1、文本缩进 属性名&#xff1a;text-indent 属性值&#xff1a;数值px&#xff1b; 数字em&#xff08;推荐&#xff1a;1em当前标签的字号大小&#xff09; 例&#xff1a;代码&#xff1a; 结果: 2、文本对齐方式 作用&#xff1a;控制内容水平方式 属性名&#xff1a…

公众号变现及生财内参项目建议

一、核心内容 &#xff08;一&#xff09;公众号变现分享 从业者王薄荷介绍公众号常规盈利思路为推文广告和品牌广告&#xff0c;公众号能外链的地方有菜单栏和阅读原文&#xff0c;虽菜单栏点击率低但有商业价值。以小说为例&#xff0c;主要盈利方式是小黄文截止在高潮部分…

HTB:Knife[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are open on Knife? 2.What version of PHP is running on the webserver? 并没有我们需要的信息&#xff0c;接着使用浏览器访问靶机80端口 尝试使用ffuf对靶机Web进行一下目录FUZZ 使用curl访问该文件获取HTTP头…

聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项

目录 一、IOC容器的刷新环节快速回顾 二、postProcessBeanFactory源码展示分析 &#xff08;一&#xff09;模版方法postProcessBeanFactory &#xff08;二&#xff09;AnnotationConfigServletWebServerApplicationContext 调用父类的 postProcessBeanFactory 包扫描 …

React综合指南(二)

https://activity.csdn.net/creatActivity?id10787 #1024程序员节&#xff5c;征文# 21、 React中的状态是什么&#xff1f;它是如何使用的&#xff1f;&#xff1f; 状态是 React 组件的核心&#xff0c;是数据的来源&#xff0c;必须尽可能简单。基本上状态是确定组件呈现…

rk3568 android11 单独烧写内核。

问题: 我现在 遇到一个问题,如果我单独 烧写boot.img 的话,就会进入 recovery 的模式。 如下图: 问题说明: 如果我烧写的 Update.img 是可以启动的。那么我再烧写一个 编译 update.img 顺带编译出来的 boot.img 是可以正常启动的。 问题出在 , 如果我 重新编译一遍 ,使…

在Oxygen编辑器中支持数学公式

在编写文档时&#xff0c;经常需要插入公式。虽然将公式作为图片插入到文档中是可以的&#xff0c;但这会使后续的修改变得非常不便。目前&#xff0c;MathML (Mathematical Markup Language) 和 LaTeX 是两种常用的数学公式描述语言&#xff0c;它们各自具有不同的特点和适用场…

第二十九篇:图解TCP三次握手,一次说透,TCP系列四

⼀开始&#xff0c;客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端⼝&#xff0c;处于 LISTEN 状态。 接下来这部分内容的介绍将影响你能不能彻底理解了TCP的三次握手。 一、划重点&#xff1a;只有服务端启动了端口监听&#xff0c;客户端TCP握手才能建立连接&…

关于jmeter设置为中文问题之后无法保存设置的若干问题

1、jemeter如何设置中文模式 Options--->Choose Language--->Chinese(Simplifies), 如此设置后就可显示中文模式(缺点&#xff1a;下次打开还是英文)&#xff1b;如下图所示&#xff1a; 操作完成之后&#xff1a; 但是下次重启之后依旧是英文&#xff1b; 2、在jmeter.…

TRIZ理论在医疗电子研发中的应用

TRIZ&#xff0c;全称“Theory of Inventive Problem Solving”&#xff08;发明问题解决理论&#xff09;&#xff0c;是一种系统化、逻辑严谨的创新方法论。它通过对大量发明案例的深入分析和总结&#xff0c;提炼出一套行之有效的创新原理和解决方案&#xff0c;旨在帮助人们…

【Word原件测试资料合集】软件系统功能测试方案,软件测试方案(整体方案),软件测试文档-测试计划模版(功能与性能),软件测试流程

一、 前言 &#xff08;一&#xff09; 背景 &#xff08;二&#xff09; 目的 &#xff08;三&#xff09; 测试目标 &#xff08;四&#xff09; 适用范围与读者对象 &#xff08;五&#xff09; 术语与缩写 二、 软件测试实施流程 &#xff08;一&#xff09; 测试工作总体流…

【java】thymeleaf模板怎么给JS赋值

【java】thymeleaf模板怎么给JS赋值 我们知道如果被标签绑定值是: <h3 th:text="${name}"></h3