【SpringCloud系列】SpringCloudConfig配置中心

前言

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值