Spring Cloud Config 是什么?
Spring Cloud Config 是什么?
回答重点
Spring Cloud Config 为分布式系统外部化配置提供了服务端以及客户端的支持,简单来说就是一个配置中心,其主要包括以下两个部分的内容:Config Server(Config 服务端)和 Config Client(Config 客户端)。
Config Server 是一个可横向扩展,并且集中式配置的服务器,主要用于集中管理服务各种环境下的配置,然后默认使用 Git 进行存储配置的内容,因此可以很方便地实现配置的版本控制。
Config Client 是 Config Server 的客户端,主要用于操作存储在 Config Server 中的配置信息。
Spring Cloud Config 的架构如下图所示:

扩展知识
核心功能
- 集中化配置管理:Spring Cloud Config 提供了一个Config Server,开发者可以将所有服务的配置文件存放在一个版本控制系统(如 Git、SVN)中。Config Server 从这些存储库中读取配置,并将其提供给各个客户端。
- 多环境支持:支持对不同环境的配置进行管理(如开发、测试、生产环境)。开发者可以为每个环境设置不同的配置文件,Config Server 根据客户端请求的 profile(如
dev、prod)返回对应的配置。 - 动态刷新:结合 Spring Cloud Bus 和消息中间件(如 RabbitMQ、Kafka),Spring Cloud Config 可以实现配置的动态刷新。当配置文件发生变化时,Config Server 可以向所有客户端发送刷新通知,客户端接收到通知后重新加载配置,无需重启服务。
- 版本控制和回滚:Spring Cloud Config 支持使用 Git 等版本控制系统进行配置管理。通过版本控制系统,开发者可以对配置的历史版本进行回滚,保障配置的安全性和可追溯性。
Config Server 的工作流程
工作流程:
- 配置拉取:Config Client 启动时,根据自身的
application name和profile向 Config Server 请求对应的配置。 - 配置加载:Config Server 返回的配置将加载到客户端的 Spring Environment 中,作为应用的外部配置使用。
- 动态刷新:若使用 Spring Cloud Bus,当配置变更时,Config Server 会广播一个更新通知给所有客户端,客户端接收到通知后重新拉取并加载配置。
动态刷新实现机制
- Spring Cloud Bus:通过 Spring Cloud Bus,可以将配置更新事件发布到消息中间件(如 RabbitMQ 或 Kafka),Config Client 通过监听这些事件来实现配置的动态刷新。
- @RefreshScope 注解:在 Spring Cloud Config 中,使用
@RefreshScope注解可以让某个 Bean 的配置动态刷新。当配置发生变更并且客户端接收到刷新事件时,标注了@RefreshScope的 Bean 会重新加载最新的配置。 - /actuator/refresh:如果不使用 Spring Cloud Bus,也可以通过手动触发刷新。Spring Boot Actuator 提供了
/actuator/refresh端点,客户端调用这个端点后可以刷新其自身的配置。
Spring Cloud Config 与 Nacos 的对比
配置存储:
- Spring Cloud Config:主要依赖于 Git 或 SVN 等版本控制系统进行配置的集中管理,适合对配置变更历史有严格要求的场景。
- Nacos:是一种集成了服务发现和配置管理的工具,支持在 UI 上进行配置管理,并且支持动态更新和多租户管理,更加灵活。
动态刷新机制:
- Spring Cloud Config:依赖 Spring Cloud Bus 或手动调用刷新端点。
- Nacos:通过长轮询(2.x 改为长连接)机制实现动态更新,配置变更后客户端可以自动拉取最新配置。
适用场景:
- Spring Cloud Config 更适合版本控制和配置变更追溯场景。
- Nacos 更适合大规模微服务场景下的动态配置管理和服务治理。
Comments