Spring Cloud Config 四种模式一文尽收囊中

本文详细介绍了Spring Cloud Config的四种模式,包括手动刷新、Git+WebHook自动刷新、结合Eureka以及利用Spring Cloud Bus实现多端刷新。讨论了Spring Cloud Config解决传统配置痛点,如解耦配置、保护敏感信息等。通过示例展示了如何配置Spring Cloud Config Server和Client,以及如何设置WebHook和使用Eureka和RabbitMQ进行动态刷新。
摘要由CSDN通过智能技术生成

1、简介

传统配置的痛点:

  • 在以前的项目中,我们通过配置文件、操作系统变量、Java系统属性等方式配置Java项目;在spring boot爆火之后我们的配置信息都写在application.yml或application.properties文件中,这些配置文件随着项目的打包与应用一起发布;但是当我们需要修改配置文件中的配置信息的时候,需要更新配置文件重新构建、重新发布;如果配置信息配置在操作系统环境变量或者Java系统属性中则需要重启应用。
  • 配置文件中往往有一些敏感信息,比如数据库密码、Redis密码、加密秘钥等信息。这些信息如果直接配置在配置文件中,容易泄露。

针对这些问题,Spring Cloud早期发布了Spring Cloud Config进行集中式配置管理,成功解决了这些问题。

Spring Cloud Config分为Server端和Client端。其中Spring Cloud Config Server是Spring Cloud为指定应用中所有服务提供集中式配置的一个服务,借助Spring Cloud Config Server可以实现集中管理所有应用的配置,避免重复配置。

Spring Cloud Config带来了诸多好处:

  • 配置文件与应用解耦,可以在不重启应用的前提下随时更新发布、回滚配置文件
  • 不同的服务可以共享配置,这在微服务架构系统中非常有用,避免重复配置,大大降低了微服务配置的维护成本
  • 配置与应用隔离之后,敏感信息得到保护

Spring Cloud Config Server通过Git仓库给微服务提供配置属性架构图:

2、正文

正文通过Spring Boot项目展开对Spring Cloud Config的探讨。分别会有以下几个方面来展开:

  • Spring Cloud Config + Git手动刷新
  • Spring Cloud Config + Git + WebHook实现自动刷新
  • Spring Cloud Config + Eureka
  • Spring Cloud Bus多端刷新

注意整个项目的搭建是一步一步来的,重复的步骤不会重复出现。

2.1 Spring Cloud Config + 手动刷新

Spring Cloud Config Server

首先需要搭建Spring Cloud Config Server服务,Spring Cloud Config Server服务应该作为一个单独的应用运行和维护,所以我们单独为Spring Cloud Config Server启动一个服务。

依赖:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency>
复制代码

我这里选择的Spring Boot版本和Spring Cloud版本如下(版本如果不对应会出现异常,大家可以选择自己需要的对应版本):

<!--spring boot 版本 2.3.4.RELEASE-->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.4.RELEASE</version>
</parent>


<!--spring cloud 版本 Hoxton.RELEASE-->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>>Hoxton.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
复制代码

application.yml配置文件:

下面的配置文件中有几个点比较重要,配置错误将无法获取配置信息

a、default-label,配置文件所在分支,默认值为master

b、search-paths,配置文件所在根目录

c、uri ,仓库地址

## 服务名
spring:
  application:
    name: config-service
## config git相关配置    
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/leonplious/config-server-demo.git	# 仓库地址
          username: xxxx	# git 登录账户
          password: xxxx	# git 登录密码
          default-label: master      # 分支
          search-paths: userservice	 # 分支下根文件夹名	

## 服务端口
server:
  port: 28888
复制代码

编写启动类,启动类上需要添加@EnableConfigServer注解

@SpringBootApplication
@EnableConfigServer
public class Application {

    public static void main(String[] args) {
        SpringApp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值