【SpringCloud系列】SpringCloudConfig配置中心

news2024/10/2 14:28:50

前言

我们在开发过程中总是会有各种各样的配置,比较如数据库连接配置,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.coloradmin.cn/o/369797.html

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

相关文章

springboot+vue软件bug项目测试过程管理系统

config&#xff1a;主要用来存储配置文件&#xff0c;以及其他不怎么动用的信息 controller&#xff1a;项目的主要控制文件 dao: 主要用来操作数据库 entity: 实体&#xff0c;用来放与数据库表里对应的实体类&#xff0c;表中的字段对应类中的属性值&#xff0c;并…

Redis 主从复制-服务器搭建【薪火相传/哨兵模式】

Redis 安装参考文章&#xff1a;Centos7 安装并启动 Redis-6.2.6 注意&#xff1a;本篇文章操作&#xff0c;不能在 静态IP地址 下操作&#xff0c;必须是 动态IP地址&#xff0c;否则最后主从服务器配置不成功&#xff01; 管道符查看所有redis进程&#xff1a;ps -ef|grep re…

调式源码解决 seata 报错 can not get cluster name 问题

最近在使用Spring Cloud整合分布式事务seata,项目启动之后&#xff0c;控制台一直报错&#xff1a; can not get cluster name in registry config service.vgroupMapping.nacos-provide-order-seata-service-group, please make sure registry config correct can not get cl…

问题排查:使用mysql_options连接ob_mysql出现中文乱码

问题背景 用户反馈&#xff0c;在使用ob_mysql的场景下&#xff0c;前端页面、日志都出现中文展示为乱码 复现问题 排查过程 通过mysql命令行连接到mysql后通过设置编码格式&#xff0c;执行简单查询语句 验证结论&#xff1a; 如果使用set names gbk能命令行查询显示中文…

【JDK8新特性之Stream流-并行的Stream流以及案例实操】

一.JDK8新特性之Stream流-并行的Stream流以及案例实操 二. 并行的Stream流 2.1 串行的Stream流 我们前面使用的Stream流都是串行&#xff0c;也就是在一个线程上面执行。 /*** 串行流*/Testpublic void test01(){long count Stream.of(1, 2, 3, 4, 5, 6).filter(s -> {S…

Linux内核段页式内存管理技术

一、概述 1.虚拟地址空间 内存是通过指针寻址的&#xff0c;因而CPU的字长决定了CPU所能管理的地址空间的大小&#xff0c;该地址空间就被称为虚拟地址空间&#xff0c;因此32位CPU的虚拟地址空间大小为4G&#xff0c;这和实际的物理内存数量无关。 Linux内核将虚拟地址空间分…

Calendar计算两个时间之间相差几个月

目录说明说明 计算两个时间之间相差几个月&#xff1a; public int getMonth(String startDt, String endDt) { int month 0;try {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar satrt Calendar.getInstance();Calendar end Cal…

有限差分法求解不可压NS方程

网上关于有限差分法解NS方程的程序实现不尽完备&#xff0c;这里是一些补充注解 现有的优秀资料 理论向 【1】如何从物理意义上理解NS方程&#xff1f; - 知乎 【2】NS方程数值解法&#xff1a;投影法的简单应用 - 知乎 【3】[计算流体力学] NS 方程的速度压力法差分格式_…

股票量化交易SQL特征工程入门

虽然现在各种量化教程和自助平台铺天盖地&#xff0c;但是对于新人来说入门最重要的事情就是挖掘特征。 对于传统的学习路径第一步是学习Python或者某一门编程语言&#xff0c;虽说Python入门容易上手快&#xff0c;但是要在实际应用中对股票数据进行分析&#xff0c;并挖掘有…

【数据库】第一章 绪论

第一章 绪论 1.1 数据库系统概述 数据库课程的学习内容 数据库的4个基本概念&#xff1a; 数据&#xff1a;描述事物的符号记录称为数据。 数据的含义成为数据的语义&#xff0c;数据与其语义是不可分割的。 数据库&#xff1a;数据库是长期存储在计算机内、有组织、可共享的…

Netty核心组件ChannelPipeline事件handler源码解析

源码解析目标 当请求进来&#xff0c;ChannelPipeline如何协调内部这些Handler通过源码梳理ChannelPipeline 与ChannelHandlerContext中的read&#xff0c;fireChannelRead等方法的不同 inbound源码解析 在 Netty启动流程源码剖析 文中我们已经知道&#xff0c;启动后&#…

公司项目vue cli2升级到vue cli3

背景&#xff1a;公司项目历时时间较长&#xff0c;通过长时间的迭代&#xff0c;目前项目文件较多&#xff08;src目录下有2217个文件&#xff09;&#xff0c;系统庞大&#xff0c; 之前通过vue cli2脚手架构建的项目框架&#xff0c;在本地开发时已经明显感觉到吃力&#xf…

Win10+vs2019配置与运行RenderMatch(踩坑记录)

Win10vs2019配置与运行RenderMatch RenderMatch旨在解决aerial images 和ground images 匹配问题&#xff0c;其思路可参考原论文 “Leveraging Photogrammetric Mesh Models for Aerial-Ground Feature Point Matching Toward Integrated 3D Reconstruction” 1.源码下载 G…

【2023new】OAK相机如何将Yolov5转换成blob格式?

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

机械革命极光Pro电脑开启出现英文代码无法启动怎么办?

机械革命极光Pro电脑开启出现英文代码无法启动怎么办&#xff1f;有的小伙伴在使用机械革命极光Pro电脑的时候&#xff0c;正常开启电脑却无法进入到桌面中&#xff0c;而是显示一些英文错误提示。遇到这个问题是我们的系统故障了&#xff0c;可以通过U盘重装系统的方法来进行问…

logback 自定义日志输出到数据库

项目日志格式 Spring Boot 的默认日志输出类似于以下示例&#xff1a; 2021-12-14 22:40:14.159 INFO 20132 --- [ main] com.kuangstudy.SpringbootApplication : Started SpringbootApplication in 2.466 seconds (JVM running for 3.617)输出以下项目&…

SpringBoot 整合 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议

续上一篇 Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议 前提&#xff1a;此篇文章是对上一篇文章的实战和项目中相关配置的使用&#xff0c;我这边针对 MongoDB 原有基础上做了增强&#xff0c;简化了 MongoDB 配置 SSL / TLS 协议上的支…

Android Studio引入JNI第三方库

一、前言 JNI作为Java与native沟通的桥梁&#xff0c;项目开发中难免要使用到&#xff1b;而我们除了自己开发JNI之外&#xff0c;有时候还要在Android Studio引入别人开源的C第三方库&#xff0c;并在jni层实现第三方库的调用。 二、流程 1.导入头文件和实现文件 将第三方…

Linux内核进程地址空间与进程内存布局

一&#xff0c;进程空间分布概述 对于一个进程&#xff0c;其空间分布如下图所示&#xff1a; 程序段(Text):程序代码在内存中的映射&#xff0c;存放函数体的二进制代码。初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据。未初始化过的数据(BSS):在程序运行初未…

九龙证券|券商春季策略扎堆来袭 风格切换成焦点

2月以来&#xff0c;国泰君安、中信建投、国金证券等10余家券商组织相继发布2023年春季战略。综合来看&#xff0c;组织对A股持达观预期&#xff0c;未来两三个月A股商场或迎来重要切换。风格上&#xff0c;“中心财物&#xff0c;生长接力”或许成为上半年装备主线&#xff0c…