Spring Cloud Config 实现配置中心,看这一篇就够了

2023-11-07

Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Config 依然适用于 Spring Cloud 项目,通过简单的配置即可实现功能。

配置文件是我们再熟悉不过的了,尤其是 Spring Boot 项目,除了引入相应的 maven 包之外,剩下的工作就是完善配置文件了,例如 mysql、redis 、security 相关的配置。除了项目运行的基础配置之外,还有一些配置是与我们业务有关系的,比如说七牛存储、短信相关、邮件相关,或者一些业务上的开关。

对于一些简单的项目来说,我们一般都是直接把相关配置放在单独的配置文件中,以 properties 或者 yml 的格式出现,更省事儿的方式是直接放到 application.properties 或 application.yml 中。但是这样的方式有个明显的问题,那就是,当修改了配置之后,必须重启服务,否则配置无法生效。

目前有一些用的比较多的开源的配置中心,比如携程的 Apollo、蚂蚁金服的 disconf 等,对比 Spring Cloud Config,这些配置中心功能更加强大。有兴趣的可以拿来试一试。

接下来,我们开始在 Spring Boot 项目中集成 Spring Cloud Config,并以 github 作为配置存储。除了 git 外,还可以用数据库、svn、本地文件等作为存储。主要从以下三块来说一下 Config 的使用。

1.基础版的配置中心(不集成 Eureka);

2.结合 Eureka 版的配置中心;

3.实现配置的自动刷新;

实现最简单的配置中心

最简单的配置中心,就是启动一个服务作为服务方,之后各个需要获取配置的服务作为客户端来这个服务方获取配置。

先在 github 中建立配置文件

我创建的仓库地址为:配置中心仓库

目录结构如下:

273364-20190725084302799-353615966.png

配置文件的内容大致如下,用于区分,略有不同。

data:
  env: config-eureka-dev
  user:
    username: eureka-client-user
    password: 1291029102

注意文件的名称不是乱起的,例如上面的 config-single-client-dev.yml 和 config-single-client-prod.yml 这两个是同一个项目的不同版本,项目名称为 config-single-client, 一个对应开发版,一个对应正式版。config-eureka-client-dev.yml 和 config-eureka-client-prod.yml 则是另外一个项目的,项目的名称就是 config-eureka-client 。

创建配置中心服务端

1、新建 Spring Boot 项目,引入 config-server 和 starter-web

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

<!-- spring cloud config 服务端包 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

2、配置 config 相关的配置项

bootstrap.yml 文件

spring:
  application:
    name: config-single-server  # 应用名称
  cloud:
     config:
        server:
          git:
            uri: https://github.com/huzhicheng/config-only-a-demo #配置文件所在仓库
            username: github 登录账号
            password: github 登录密码
            default-label: master #配置文件分支
            search-paths: config  #配置文件所在根目录

application.yml

server:
  port: 3301

3、在 Application 启动类上增加相关注解 @EnableConfigServer

@SpringBootApplication
@EnableConfigServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动服务,接下来测试一下。

Spring Cloud Config 有它的一套访问规则,我们通过这套规则在浏览器上直接访问就可以。

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

{application} 就是应用名称,对应到配置文件上来,就是配置文件的名称部分,例如我上面创建的配置文件。

{profile} 就是配置文件的版本,我们的项目有开发版本、测试环境版本、生产环境版本,对应到配置文件上来就是以 application-{profile}.yml 加以区分,例如application-dev.yml、application-sit.yml、application-prod.yml。

{label} 表示 git 分支,默认是 master 分支,如果项目是以分支做区分也是可以的,那就可以通过不同的 label 来控制访问不同的配置文件了。

上面的 5 条规则中,我们只看前三条,因为我这里的配置文件都是 yml 格式的。根据这三条规则,我们可以通过以下地址查看配置文件内容:

http://localhost:3301/config-single-client/dev/master

http://localhost:3301/config-single-client/prod

http://localhost:3301/config-single-client-dev.yml

http://localhost:3301/config-single-client-prod.yml

http://localhost:3301/master/config-single-clien

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud Config 实现配置中心,看这一篇就够了 的相关文章

随机推荐

  • 智能指针使用陷阱

    智能指针使用陷阱 1 不能把一个原生指针交给多个智能指针管理 int x new int 10 unique ptr
  • android同步目录,如何使用FolderSync在安卓手机上同步文件夹到坚果云?

    FolderSync 是一款Android 端的文件同步工具 可以将手机中的文件自动同步到云端空间或者PC端 支持包括 FTP WebDAV Dropbox Amazon S3 FTP FTPS SFTP WebDAV等 可以使用WebDA
  • 几种图像的分割方法汇总

    图像分割指的是将原图像按照灰度 纹理 颜色 形状等划分成不同的区域 因此 在同一个区域间 呈现出具备一些相同的特点 而在不同的区域间 分割出的各个图像会有一定的差别 1 基于阈值的分割方法 基于阈值的分割方法是按照原图像的灰度特征划分出一个
  • k8s——kubectl

    目录 一 k8s管理操作方法 二 陈述式资源管理方法 1 基本信息查看 1 1 查看k8s版本信息 1 2 查看资源对象简写 1 3 查看集群信息 1 4 配置kubectl自动补全 1 5 node节点查看日志 2 基本信息查看 2 1
  • 大数据高频面试题【目录】

    大数据高频面试题 目录 小标题既超链接 点击可直接跳转 手写代码 Linux Shell Hadoop Flume Kafka Hive HBase Sqoop Scala Spark 项目中的常见问题 JavaSE Redis MySQL
  • LM393 电压比较器及其典型电路介绍

    这几天都在看一些开源项目 好多代码都没有什么注释 看烦了 看看小芯片吧 LM393 主要用途 限幅器 脉冲发生器 方波发生器 延时发生器 数字逻辑门电路 多频振荡器等等 引脚分布图 等效电路图 同相端电压大于反向端电压时 输出高电平 同相端
  • 【python】使用matplotlib绘制柱状图

    在制作图标时需要绘制柱状图 下面对其进行了绘制 主要就是使用matplotlib的bar函数 bar函数官方API为 matplotlib pyplot bar 下面是从一篇论文中随意截取的一段话 进行后续的绘制图像 import matp
  • 服务器故障排查方法总结

    服务器故障排查方法总结 问题描述 查找步骤 1 查找top检查服务器负载是否有问题 2 在服务器中查看网站的访问记录 3 这个时候先对数据库进行重启 对apache进行重启 4 查找数据库错误日志 问题描述 每当出现网站访问不了的时候 估计
  • Java list修改某个元素值的方法

    修改list中下标为index对象的值 set index element 增添 add index element
  • 在Android上修改读取IMEI码的方法

    我们知道 如果是移动设备 厂家都提供了IMEI码写入及读出的方法 但由于我们的是非移动设备 可是我们也需要写入IMEI码 供第三方的软件读取 如正版地图等 我们找到frameworks base telephony java android
  • selenium 隐式等待如何使用_selenium 中使用等待的三种方法

    现在很多的 web 网站使用 AJAX 技术 当页面加载到浏览器 这个页面的很多元素显示出来的可能不一致 如果一个元素还未加载出来 在定位的时候 就会抛出异常 ElementNotVisibleException 这个时候就要使用等待方法解
  • 【转】latex常见错误对照表

    原文链接 http www cs utexas edu witchel errorclasses html Latex Error Classes Ambiguous Errors This is a list of error class
  • 【低功耗蓝牙】① 蓝牙广播数据格式分析

    摘要 本文章主要讲解了蓝牙的发展史 蓝牙信号 蓝牙广播数据的格式 最后使用ESP32芯片MicroPython固件给出了蓝牙广播的具体代码 是蓝牙初学者很好的参考资料 也可以参考下我在B站的蓝牙视频教程 ESP32教程 第二章 低功耗蓝牙B
  • 创建多个线程、数据共享问题分析与案例代码

    创建多个线程 数据共享问题分析与案例代码 创建和等待多个线程 在实际的工作中 可能要创建的线程不止一个 也许有多个 所以 这里展示一下创建多个线程的一种写法 大家可以举一反三 在lesson4 cpp的上面位置 书写线程入口函数 mypri
  • Python框架区别是什么?比较常用的框架有哪些?

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 众所周知 Python开发框架大大减少了开发者不必要的重复劳动 提高了项目开发效率的同时 还使得创建的程序更加稳定
  • webpack原理

    1 webpack核心概念 entry 一个可执行模块或库的入口文件 chunk 多个文件组成的一个代码块 例如把一个可执行模块和它所有依赖的模块组合和一个 chunk 这体现了webpack的打包机制 loader 文件转换器 例如把es
  • 海康网络摄像机与电脑交互,有网络和无网络两种方式读取URL视频流,以及无网络情况下配置IP地址

    目录 1 准备工具 2 通过WiFi的接口连接 3 无网络情况下进行交互 4 海康官方软件 5 RTSP视频流 a RTSP b 视频流 c rtsp流地址 1 准备工具 电脑 台式或笔记本 网线 普通网线即可 POE海康网络摄像机 不需要
  • Nerf如何制作自己的llff数据集

    Nerf三维重建使用Pycharm运行自己的数据集 20230427更新 Nerf代码讲解 从零简单复现论文代码 Nerf环境配置教程 你好 这里是 出门吃三碗饭 本人 本文章接下来将介绍自己制作Nerf数据集 让你自己动手渲染第一个三维模
  • PyCharm 代码调试教程

    目录 一 图文教程 二 调试相关的快捷键 调试的过程分为三步 第一步 在你想要调试的地方 打上断点 第二步 使用调试模式来运行这个 python 程序 第三步 使用各种手段开始代码调试 一 图文教程 1 首先第一步和第二步 我用下面这张图表
  • Spring Cloud Config 实现配置中心,看这一篇就够了

    Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心 虽然后来又发布了 Consul 可以代替配置中心功能 但是 Config 依然适用于 Spring Cloud 项目 通过简单的配置即可实现功能 配