在线上环境中,有时候我们希望系统中的某些配置参数在修改后,可以立即生效而不用重新启动服务。由上一节我们知道,我们可以把配置文件统一放到配置服务中进行管理,这一节我们在配置中心中整合spring cloud bus并结合git 的webhook实现配置的自动刷新。
整合spring cloud bus后我们可以获取到一些新的端点:
POST /bus/refresh: 用于刷新配置
POST /bus/refresh?destination=spring.application.name:port 刷新具体的某个微服务,port和前面的name可以使用通配符 *
需求
实现系统中的配置的自动刷新
实现步骤(在上一节代码的基础上)
1、安装 erlang 和 rabbitmq, 需要注意 rabbitmq不同的版本需要不同的erlang的版本,参考链接 https://www.rabbitmq.com/which-erlang.html
2、config server 和 config client 端同时引入以下依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
3、需要动态刷新配置的地方加上 @RefreshScope 注解
此处是从配置中心获取 msg 这个字段的值,记住这个controller 的访问路径,下方演示需要用到
@RestController @RefreshScope public class PrintMsgController { @Value("${msg}") private String msg; /** * 打印msg消息 * * @return */ @GetMapping("print/msg") public String print() { return msg; } }
4、找到 git 的远程仓库,配置 webhook,这里以 github为例
5、配置中心和配置客户端的代码 配置文件和上节差不多,唯一不同的是加入了 rabittmq 的配置
spring: rabbitmq: host: localhost port: 5672 username: guest password: guest
运行结果
解释:
1、演示 config server 的代码
2、演示 config client 的代码
3、服务注册中心上各个服务注册的情况
4、演示 webhook的配置(webhook配置的地址需要是外网可以访问的,我上方的例子是使用了一个内网穿透工具)
5、更新 git 仓库上的配置,看各个客户端是否都更新
6、取消webhook,然后开效果
7、在 chrome 浏览器中演示如何只更新某个具体的微服务或使用通配符更新
完整代码
配置动态刷新完整代码:https://gitee.com/huan1993/spring-cloud-parent/tree/master/config/config-bus-webhook
相关推荐
在 Spring Cloud Config/Bus 中,Bus 是一个事件总线,负责传输配置事件。在 Bus 中,事件是通过 AMQP 协议传输的。Bus 事件可以是配置文件的变化、添加或删除等。 五、结论 本文对 Spring Cloud Config/Bus 的...
Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新 spring cloud bus能管理和传播分布式系统间的消息,就像分布式执行器,可用于广播状态更改、时间推送等,也可以当做微服务间的通信通道 spring ...
- 可以使用Spring Cloud Bus配合配置服务器,实现在多个实例间同步配置更改。 6. **故障恢复与高可用**: - 为提高Config Server的可用性,可以部署多实例并通过负载均衡器分发请求。 - 使用Git的多分支策略,...
Spring Cloud Config 是...总的来说,Spring Cloud Config 和 Bus 提供了一套完整的解决方案,实现了微服务架构中的配置管理和动态更新。通过集成 RabbitMQ,保证了配置变更的可靠传播,提高了系统的灵活性和可维护性。
Spring Cloud Config 和 Spring Cloud Bus AMQP 的结合使用为解决这一问题提供了一种优雅的解决方案。让我们深入探讨这两个组件以及它们如何协同工作来实现配置的动态更新。 Spring Cloud Config 是一个用于微服务...
1. 事件传播:Spring Cloud Bus可以连接Config Server和各个服务实例,当配置发生变更时,通过消息总线将更新广播到所有客户端,实现了配置的实时同步。 六、实战应用 1. 示例应用:在实际开发中,我们可以为每个...
- 配置动态刷新:通过集成Spring Cloud Bus,使得Config Server的配置更改能够实时推送到所有相关的Config Client,实现配置的动态刷新,无需重启服务。 5. **具体操作步骤**: - 创建Git仓库,存放配置文件。 -...
Spring Cloud Config + Spring Cloud Bus + kafka实现配置中心 SpringCloud微服务远程调用组件Feign的使用 springcloud-circuitbreaker.zip springcloud-config.zipspringcloud-config-oracle.zip springcloud-...
Spring Cloud Config Client是Spring Cloud生态系统中的一个组件,它允许微服务应用从远程配置服务器获取配置信息,实现配置的集中管理和动态更新。这个组件是服务配置中心的重要组成部分,它极大地简化了分布式系统...
Spring Cloud Config结合Bus实现了配置信息的动态刷新功能,无需重启每个微服务实例,即可完成配置更新。 总结来说,Spring Cloud Config提供了集中化的外部配置管理,而Spring Cloud Bus则扩展了Spring Cloud ...
除了基本的配置管理,Spring Cloud Config 还可以与其他Spring Cloud组件结合使用,如Eureka(服务发现)、Spring Cloud Bus(用于广播配置变化)等,实现更复杂的服务治理功能。 综上所述,Spring Cloud Config 是...
Spring Cloud Config是Spring Cloud提供的一个解决分布式系统配置管理的解决方案。它包括服务端和客户端两个部分,服务端提供了一个集中的配置管理点,支持将配置文件存储在Git、SVN等版本控制系统中,并能够支持...
Spring Cloud Config是Spring Cloud全家桶中的一个组件,它主要用于实现分布式系统中的配置管理。在微服务架构下,系统通常被拆分成许多个小的微服务,每个服务都有自己的配置文件。当配置文件频繁更改或不同服务...
它通常与 Spring Cloud Config 结合使用,实现在运行时的配置更新。 7. **Ribbon**: Ribbon 是一个客户端负载均衡器,它提供了丰富的客户端配置选项,如连接超时、重试、连接池等。在 Spring Cloud 中,Ribbon 通常...
### 动态配置管理:Spring Cloud Bus实现配置更新广播 #### 一、Spring Cloud Bus简介 在微服务架构中,随着服务数量的增长,管理每个服务的配置变得愈发复杂。为了解决这一问题,Spring Cloud Bus 提供了一种动态...
Spring Cloud Config是配置管理工具,它支持配置服务的集中化管理和动态刷新,使得开发者可以在不重启应用的情况下更新配置。另外,Spring Cloud Bus可以将配置变更实时推送到所有关联的服务,进一步提高了配置管理...
SpringCloud Config 是一个分布式系统配置管理工具,它允许在分布式系统的不同组件之间集中管理和动态更新配置。本项目是一个个人实现的 SpringCloud Config 的演示示例,旨在帮助理解其工作原理和使用方法。以下是...
SpringCloud Config 分布式配置中心 SpringCloud Bus 消息总线 SpringCloud Stream 消息驱动 SpringCloud Sleuth 分布式请求链路跟踪 SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置...
- **与其他Spring Cloud组件结合**:如与Spring Cloud Bus配合,可以实现配置的广播更新。 - **自定义配置源**:除了Git,也可以选择其他存储系统作为配置源,如数据库。 通过以上介绍,我们可以看出Spring Cloud...
【Spring Cloud Config与Bus实现分布式配置中心】 在现代微服务架构中,分布式配置中心成为必不可少的组件,它允许开发者在不重启服务的情况下实时更新配置,提高运维效率。Spring Cloud Config结合Bus工具,提供了...