Spring Cloud Config 分布式配置中心

分布式配置中心应用场景

往往,我们使⽤配置⽂件管理⼀些配置信息,⽐如application.yml.

单体应用架构,配置信息的管理、维护并不会显得特别麻烦,⼿动操作就可以,因为就⼀个⼯程;

微服务架构,因为我们的分布式集群环境中可能有很多个微服务,我们不可能⼀个⼀个去修改配置然后重启⽣效,在⼀定场景下我们还需要在运⾏期间动态调整配置信息,⽐如:根据各个微服务的负载情况,动态调整数据源连接池⼤⼩,我们希望配置内容发⽣变化的时候,微服务可以⾃动更新。

场景总结如下:

  1. 集中配置管理,⼀个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的(⼀次修改、到处⽣效)
  2. 不同环境不同配置,⽐如数据源配置在不同环境(开发dev,测试test,⽣产prod)中是不同的
  3. 运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小等配置修改后可⾃动更新
  4. 如配置内容发⽣变化,微服务可以⾃动更新配置那么,我们就需要对配置⽂件进⾏集中式管理,这也是分布式配置中心的作用。

Config简介

Spring Cloud Config是⼀个分布式配置管理⽅案,包含了 Server端和 Client端两个部分。
在这里插入图片描述

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

Config配置自动更新

在微服务架构中,我们可以结合消息总线(Bus)实现分布式配置的⾃动更新(Spring Cloud Config+Spring Cloud Bus)。

消息总线Bus

所谓消息总线Bus,即我们经常会使⽤MQ消息代理构建⼀个共⽤的Topic,通过这个Topic连接各个微服务实例,MQ⼴播的消息会被所有在注册中⼼的微服务实例监听和消费。换⾔之就是通过⼀个主题连接各个微服务,打通脉络。

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

Spring Cloud Config+Spring Cloud Bus 实现自动刷新

MQ消息代理,我们还选择使⽤RabbitMQ,ConfigServer和ConfigClient都添加都消息总线的⽀持以及与RabbitMq的连接信息。

<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
#微服务暴露端⼝
management:
 endpoints:
 web:
 exposure:
 include: bus-refresh

#建议暴露所有的端⼝
management:
 endpoints:
 web:
 exposure:
 include: "*"

重启各个服务,更改配置之后,向配置中⼼服务端发送post请求http://localhost:9003/actuator/bus-refresh,各个客户端配置即可⾃动刷新在⼴播模式下实现了⼀次请求,处处更新。

如果我只想定向更新呢?在发起刷新请求的时候http://localhost:9006/actuator/bus-refresh/lagou-serviceresume:8081。即为最后⾯跟上要定向刷新的实例的 服务名:端⼝号即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值