【SpringCloud系列】SpringCloudConfig配置中心

news/2024/4/25 17:39:28/文章来源:https://blog.csdn.net/qq_38516524/article/details/129197429

前言

我们在开发过程中总是会有各种各样的配置,比较如数据库连接配置,Mybatis配置等等各种组件的配置,这些配置都放在yml中,如果想要变更这些配置,需要修改yml文件,然后重新部署项目才能生效,同时,一些比较敏感的信息比如生产环境数据库密码也会暴露在开发中,这会导致不小的隐患,此时,就需要一个配置中心的组件来帮助我们更好的管理项目配置文件

配置中心可以让我们将配置放在远程进行管理,由管理人员配置好相关信息后,本地只需要从远程获取配置即可,同时也可以在修改完配置后产即生效,不需要重新部署项目

目前可以实现配置中心的组件还是比较多的,有SpringCloudConfig、Nacos、Apollo等,本文介绍的是SpringCloudConfig

SpringCloudConfig简介

Spring Cloud Config是最早的配置中心,是由Spring Cloud 团队开发的项目

Spring Cloud Config 包含以下两个部分:

  • Config Server:也被称为分布式配置中心,它是一个独立运行的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密信息和解密信息的访问接口。
  • Config Client:指的是微服务架构中的各个微服务,它们通过 Config Server 对配置进行管理,并从 Config Sever 中获取和加载配置信息。

Spring Cloud Config 默认使用 Git 存储配置信息,所以修改配置文件的时候可以根据版本进行控制,可以回流到不同的版本
在这里插入图片描述
简单使用流程:
1、管理员将配置文件提交到git仓库
2、部署一个服务端的微服务,用于从git仓库获取配置文件
3、客户端调用服务端的接口获取对应的配置

SpringCloudConfig使用

创建配置文件仓库

在github(gitee或gitlab)中创建配置文件的仓库并上传配置文件application-dev.yml

搭建服务端

在父模块下新建一个模块并导入以下依赖

<!--配置中心服务器依赖-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId>
</dependency>

在启动类上使用 @EnableConfigServer 注解开启 Spring Cloud Config 配置中心功能

在resource文件夹下新建applicartion.yml配置文件并加入以下配置

server:port: 8880
spring:application:name: spring-cloud-config-server # 服务名cloud:config:server:git:uri: XXXX.git # git地址search-paths:- XXX # 配置文件路径label: master #读取分支

启动服务端微服务
SpringCloudConfig已经封装好了接口,直接调用即可获取到配置文件
总共分为三个接口

接口使用示例
/{application}-{profile}.{suffix}/config-dev.yml
/{application}/{profile}[/{label}]/config/dev/master
/{label}/{application}-{profile}.{suffix}/master/config-dev.yml

参数说明:
{application}:配置文件的名称
{profile}:环境名
{label}:Git 分支名,默认是 master 分支
{suffix}:配置文件的后缀

我们访问http://localhost:8880/application-dev.yml即可获取到配置文件的信息

搭建客户端

在父模块下同样创建一个微服务并导入以下依赖

 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>

在resource文件夹下创建bootstrap.yml配置文件

这里一定要是bootstrap.yml如果是application.yml会读取不到配置,因为这两个配置文件级别不一样,bootstrap.yml是系统级的配置文件,而application.yml是用户级的配置文件

spring:application:name: spring-cloud-config-client # 服务名cloud:config:label: master # 分支name: application # 配置文件名profile: dev  # 配置文件后缀uri: http://localhost:8880 # SpringCloudConfig服务端地址

这样一来,我们就搭建好了SpringCloudConfig了

但是,这时如果我们改了git仓库中的配置,客户端是不会自动更新的,必须要重启客户端配置才会更新

如果想要实现自动更新,可以在客户端使用actuator进行实时监控,缺点是每个客户端都需要配置actuator,可以使用SpringCloudBus实现,原理为当配置文件发生变更时,运维人员调用服务端的post接口/actuator/refresh,些时服务端会将请求转发给SpringCloudBus,SpringCloudBus会向所有客户端通知拉取最新配置

总结

SpringCloudConfig在自动更新配置方面做的还是不够方便,在这方面,Nacos和Apollo都是十分优秀的组件,尤其是Nacos更是同时支持服务注册中心,同时更新频率较高,是现阶段配置中心和服务注册与发现的不错选择


👍 欢迎前往博客主页查看更多内容

👍 如果觉得不错,期待您的点赞、收藏、评论、关注

👍 ​ 如有错误欢迎指正!

👍 ​ Gitee地址:https://gitee.com/ralphchen/ralph-cloud

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

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

相关文章

后端接收格式为x-www-form-urlencoded的数据

1.x-www-form-urlencoded是什么&#xff1f; x-www-form-urlencoded纸面翻译即所谓url格式的编码&#xff0c;是post的默认Content-Type&#xff0c;其实就是一种编码格式&#xff0c;类似json也是一种编码传输格式。form表单中使用 form的enctype属性为编码方式&#xff0…

GoFrame工程目录设计介绍

GoFrame框架针对业务项目的目录设计&#xff0c;主体的思想来源于三层架构&#xff0c;但在具体实现中&#xff0c;对其进行了一定的改进和细化使其更符合工程实践和时代进步。 一.工程目录结构 GoFrame业务项目基本目录结构如下&#xff1a; 二.目录结构解释 对外接口 对…

AWS攻略——使用中转网关(Transit Gateway)连接不同区域(Region)VPC

文章目录Peering方案Transit Gateway方案环境准备创建Transit Gateway Peering Connection接受邀请修改中转网关路由修改被邀请方中转网关路由修改邀请方中转网关路由测试修改Public子网路由知识点参考资料区别于 《AWS攻略——使用中转网关(Transit Gateway)连接同区域(Region…

记录--前端项目中运行 npm run xxx 的时候发生了什么?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 npm 是 node 捆绑的依赖管理器&#xff0c;常用程度可想而知。那么你每天都在 npm/yarn run 的命令到底是如何运行项目的呢&#xff1f; 前端项目中运行 npm run xxx 的时候发生了什么&#xff1f;大家…

LinkSLA智能运维技术派-Redis的监控

Redis是一个开源&#xff0c;内存存储的数据服务器&#xff0c;可用作数据库、高速缓存和消息队列代理等场景。 首先我们对内存进行监控&#xff0c;主要指标如下&#xff1a; - used_memory:使用内存 - used_memory_rss:从操作系统分配的内存 - mem_fragmentation_ratio:内…

Mac mini 外接移动硬盘无法写入或者无法显示的解决方法

文章目录1. 背景2. 让NTFS格式的移动硬盘正常读写方法3. 打开“启动安全性实用工具”4. 更改“安全启动”设置1. 背景 刚买mac min&#xff08;2023年2月3日&#xff09;不久&#xff0c;发现macOS的玩起来并不容易&#xff0c;勇习惯了windows系统的习惯&#xff0c;感觉 mac…

免去打包烦恼,自动构建你的GitHub Pages|玩转GitHub Pages三部曲(二)

本文讲述了如何利用 GitHub Actions 来自动构建 GitHub Pages 项目&#xff0c;免去繁琐的手动构建再提交过程&#xff0c;让你专注于写作。大家的点赞和互动是我更文的动力 /(ㄒoㄒ)/ 所以我决定发起一项活动&#xff0c;到三月三十一日统计&#xff0c;留言次数和赞赏次数最多…

selenium基本操作

爬虫与反爬虫之间的斗争爬虫&#xff1a;对某个网站数据或图片感兴趣&#xff0c;开始抓取网站信息&#xff1b;网站&#xff1a;请求次数频繁&#xff0c;并且访问ip固定&#xff0c;user_agent也是python&#xff0c;开始限制访问&#xff1b;爬虫&#xff1a;通过设置user_a…

ifconfig不显示ipv4地址,ifconfig eth0 192.168.5.9失败

ifconfig eth0 192.168.5.9设置ip地址后&#xff0c;通过ifconfig仍然没有ipv4地址&#xff1a; 一、 执行ifup eth0启动eth0: ifconfig、ifup、ifdown &#xff1a;这三个命令的用途都是启动网络接口&#xff0c;不过&#xff0c;ifup 与 ifdown 仅就 /etc/sysconfig/network-…

【数据存储】浮点型在内存中的存储

目录 一、存储现象 二、IEEE标准规范 1.存储 2.读取 三、举例验证 1.存储 2.读取 浮点型存储的标准是IEEE&#xff08;电气电子工程师学会&#xff09;754制定的。 一、存储现象 浮点数由于其有小数点的特殊性&#xff0c;有很多浮点数是不能精确存储的&#xff0c;如&#…

阅读HAL源码之重点总结

HAL封装中有如下特点&#xff08;自己总结的&#xff09;&#xff1a; 特定外设要设置的参数组成一个结构体&#xff1b; 特定外设所有寄存器组成一个结构体&#xff1b; 地址基本都是通过宏来定义的&#xff0c;定义了各外设的起始地址&#xff0c;也就是对应寄存器结构体的地…

优秀外贸业务员必备的业务技能

2023年的春天&#xff0c;可谓是外贸企业三年寒冬后的第一个春天。外贸行业离不开的就是优秀的外贸业务员&#xff0c;那么一个优秀的外贸业务员需要有哪些必备的技能呢&#xff1f;跟着我一起来看看吧&#xff01;一、电话开发客户能力首先&#xff0c;要知道&#xff0c;声音…

【unittest学习】unittest框架主要功能

1.认识unittest在 Python 中有诸多单元测试框架&#xff0c;如 doctest、unittest、pytest、nose 等&#xff0c;Python 2.1 及其以后的版本已经将 unittest 作为一个标准模块放入 Python 开发包中。2.认识单元测试不用单元测试框架能写单元测试吗&#xff1f;答案是肯定的。单…

华为OD机试题,用 Java 解【最小施肥机能效】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

无线通信时代的新技术----信标( Beacon)

随着IT技术的发展&#xff0c;无线通信技术也在不断发展。 现已根据预期用途开发了各种无线通信技术&#xff0c;例如 NFC、WIFI、Bluetooth和 RFID。 车辆内部结构的复杂化和数字化&#xff0c;车载通信网络技术的重要性也越来越高。 一个典型的例子是远程信息处理。 远程信息…

ESP32 Arduino EspNow点对点双向通讯

ESP32 Arduino EspNow点对点双向通讯✨本案例分别采用esp32和esp32C3之间点对点单播无线通讯方式。 &#x1f33f;esp32开发板 &#x1f33e;esp32c3开发板 &#x1f527;所需库(需要自行导入到Arduino IDE library文件夹中&#xff0c;无法在IDE 管理库界面搜索下载到该库)&am…

git cherry-pick could not apply fb2cde669...问题解决

最近多个分支修复bug&#xff0c;在使用git cherry-pick进行小功能合并时经常会出现类似could not apply fb2cde669...的错误。具体如下图&#xff1a;具体原因是cherry-pick指定的commit内容中和当前分支有冲突导致的。具体解决分以下步骤&#xff1a;1&#xff1a;首先使用gi…

京东前端二面必会vue面试题(持续更新中)

说一下Vue的生命周期 Vue 实例有⼀个完整的⽣命周期&#xff0c;也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程&#xff0c;称这是Vue的⽣命周期。 beforeCreate&#xff08;创建前&#xff09;&#xff1a;数据观测和初…

spring(六)--------spring的扫描机制

spring的扫描一般可以通过两种方式&#xff1a; 测试类&#xff1a; Component public class Scan_A {PostConstructpublic void init(){System.out.println("-----------Scan_A");}} 1&#xff09;、ComponentSscan注解 public class ComponentScanTest {public…

前端JS调用grpc服务(cpp)

参考文献&#xff1a;https://blog.csdn.net/qq_45634989/article/details/128151766依赖文件&#xff1a;protoc-v3-20.1.exe grpc_cpp_plugin.exe // 生成cpp中间文件protoc-gen-grpc-web.exe // 生成js中间文件grpcwebproxy-v0.13.0-win64 1.4.0.exe // 负责代理的端口映射新…