专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Spring Cloud Config 分布式配置中⼼

一、 分布式配置中⼼应⽤场景

1、 集中配置管理,⼀个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的(⼀次修改、到处⽣效)
2、 不同环境不同配置,⽐如数据源配置在不同环境(开发dev,测试test,⽣产prod)中是不同的
3、 运⾏期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池⼤⼩等配置修改后可⾃动更新
4、 如配置内容发⽣变化,微服务可以⾃动更新配置

那么,我们就需要对配置⽂件进⾏集中式管理,这也是分布式配置中⼼的作⽤。

二、Spring Cloud Config

1. Config 简介

86_1.png

  • Server 端:提供配置⽂件的存储、以接⼝的形式将配置⽂件的内容提供出去,通过使⽤@EnableConfigServer注解在 Spring boot 应⽤中⾮常简单的嵌⼊
  • Client 端:通过接⼝获取配置数据并初始化⾃⼰的应⽤

2. Config分布式配置应⽤

  • Config Server是集中式的配置服务,⽤于集中管理应⽤程序各个环境下的配置。 默认使⽤Git存储配置⽂件内容,也可以SVN。
  • 构建Config Server统⼀配置中⼼,引⼊依赖坐标(需要注册⾃⼰到Eureka)
  • 注解@EnableConfigServer开启配置中⼼服务器功能

86_2.png

  • 构建Client客户端

86_3.png

  • application.yml修改为bootstrap.yml配置⽂件,bootstrap.yml是系统级别的,优先级⽐application.yml⾼,应⽤启动时会检查这个配置⽂件,在这个 配置⽂件中指定配置中⼼的服务地址,会⾃动拉取所有应⽤配置并且启⽤。

86_4.png

三、Config配置⼿动刷新

不⽤重启微服务,只需要⼿动的做⼀些其他的操作(访问⼀个地址/refresh)刷新,之后再访问即可 此时,客户端取到了配置中⼼的值,但当我们修改GitHub上⾯的值时,服务端(Config Server)能实时获取最新的值,但客户端(Config Client)读的是缓存,⽆法实时获取最新值。Spring Cloud已 经为 我们解决了这个问题,那就是客户端使⽤post去触发refresh,获取最新数据。

  • Client客户端添加依赖springboot-starter-actuator
  • Client客户端bootstrap.yml中添加配置(暴露通信端点)

86_5.png

注意:⼿动刷新⽅式避免了服务重启(流程:Git改配置—>for循环脚本⼿动刷新每个微服务)

四、Config配置⾃动更新

实现⼀次通知处处⽣效,与zk原理相同,在微服务架构中,我们可以结合消息总线(Bus)实现分布式配置的⾃动更新(Spring Cloud Config+Spring Cloud Bus)

1. 消息总线Bus

Spring Cloud Bus(基于MQ的,⽀持RabbitMq/Kafka) 是Spring Cloud中的消息总线⽅案,Spring Cloud Config + Spring Cloud Bus 结合可以实现配置信息的⾃动更新。

86_6.png

2. Spring Cloud Config+Spring Cloud Bus 实现⾃动刷新

  • Config Server服务端添加消息总线⽀持
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

  • ConfigServer添加配置
spring:
 rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

  • 微服务暴露端⼝ 重启各个服务,更改配置之后,向配置中⼼服务端发送post请求 http://localhost:9003/actuator/bus-refresh, 各个客户端配置即可⾃动刷新, 在⼴播模式下实现了⼀次请求,处处更新,如果我只想定向更新呢? 在发起刷新请求的时候http://localhost:9006/actuator/bus-refresh/lagou-service-resume:8081 即为最后⾯跟上要定向刷新的实例的 服务名:端⼝号即可

文章永久链接:https://tech.souyunku.com/29252

未经允许不得转载:搜云库技术团队 » Spring Cloud Config 分布式配置中⼼

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们