为什么要使用统一配置中心
对于Spring Boot应用,我们可以将配置内容写入application.yml,设置多个profile,也可以用多个application-{profile}.properties文件配置,并在启动时指定spring.profiles.active={profile}来加载不同环境下的配置。 但在微服务下:
- 集中管理:成百上千(可能没这么多)个微服务需要集中管理配置,否则维护困难、容易出错;
- 运行期动态调整:某些参数需要在应用运行时动态调整(如连接池大小、熔断阈值等),并且调整时不停止服务;
- 自动更新配置:微服务能够在配置发生变化是自动更新配置。
统一配置中心对比
Spring Cloud Config最大的优势是Spring无缝集成,Spring应用程序的迁移成本非常低,在配置获取的接口上是完全一致 结合SpringBoot可使你的项目有更加统一的标准(包括依赖版本和约束规范),避免了应为集成不同开软件源造成的依赖版本冲突。 支持任何语言的任何应用。它也能为你支持对应用开发环境、测试环境、生产环境的配置、切换、迁移。默认的配置实现通过git实现,同时非常容易的支持其他的扩展。
缺点:配置实时刷新需要集成spring cloud bus, 配置管理后台需集成spring admin
Spring Cloud Config 简介
Spring Cloud Config分为Config Server和Config Client两部分,为分布式系统外部化配置提供了支持。 Spring Cloud Config非常适合Spring应用程序,也能与其他编程语言编写的应用组合使用。 微服务在启动时,通过Config Client请求Config Server以获取配置内容,同时会缓存这些内容。
怎么使用Spring Cloud Config
- 高可用
Cofing Server 配置集群
-
配置刷新(手动刷新/局部刷新)
-
手动刷新: Spring Cloud Config 中使用 Refresh 要在微服务运行期间动态刷新配置,可以通过调用/bus/refresh实现
-
局部刷新: 某些场景下(例如灰度发布),我们可能只想刷新部分微服务的配置,此时可通过/bus/refresh端点的destination参数来定位要刷新的应用程序。 例如:/bus/refresh?destination=customers:9000 ,这样消息总线上的微服务实例就会根据destination参数的值来判断是否需要要刷新。其中,customers:9000 指的是各个微服务的ApplicationContext ID。 destination参数也可以用来定位特定的微服务。例如:/bus/refresh?destination=customers:** ,这样就可以触发customers微服务所有实例的配置刷新。
-
自动刷新
- 提交代码触发post请求给bus/refresh
- server端接收到请求并发送给Spring Cloud Bus
- Spring Cloud bus接到消息并通知给其它客户端
- 其它客户端接收到通知,请求Server端获取最新配置
- 全部客户端均获取到最新的配置
本文探讨了在微服务架构下使用Spring Cloud Config作为统一配置中心的必要性,包括集中管理配置、运行期动态调整及自动更新配置等功能。Spring Cloud Config不仅支持Spring应用程序的无缝集成,还适用于多种语言和环境,通过git实现配置管理,易于扩展。





167万+

被折叠的 条评论
为什么被折叠?



