配置中心 Spring Cloud Config:整体的工作原理

举报
溜溜丽 发表于 2021/06/01 15:57:44 2021/06/01
【摘要】 配置中心 Spring Cloud Config:工作原理《配置中心 Spring Cloud Config 详解》系列文章更新,一起在技术的路上精进!本系列文章将会介绍Spring Cloud 中提供了分布式配置中心Spring Cloud Config。应用服务中除了实现系统功能的代码,还需要连接资源和其它应用,经常有很多需要在外部配置的数据去调整应用的行为,如切换不同的数据库,设置功...

配置中心 Spring Cloud Config:工作原理

《配置中心 Spring Cloud Config 详解》系列文章更新,一起在技术的路上精进!本系列文章将会介绍Spring Cloud 中提供了分布式配置中心Spring Cloud Config。应用服务中除了实现系统功能的代码,还需要连接资源和其它应用,经常有很多需要在外部配置的数据去调整应用的行为,如切换不同的数据库,设置功能开关等。随着微服务的不断增加,需要系统具备可伸缩和可扩展性,除此之外就是管理相当多的服务实例的配置数据。在应用的开发阶段由各个服务自治,但是到了生产环境之后会给运维带来很大的麻烦,特别是微服务的规模比较大,配置的更新更为麻烦。为此,系统需要建立一个统一的配置管理中心。

在前面的文章,我们介绍了 Spring Cloud Config 使用过程中服务端的实现,完整介绍了客户端和服务端实现的具体内容。本文将会介绍 Spring Cloud Config 工作原理,以此来了解 Spring Cloud Config 客户端和服务端交互的细节。

Spring Cloud Config 工作原理

通过上一篇文章的基础应用,我们可以知道配置中心包括如下元素:

  • 配置服务器:为配置客户端提供其对应的配置信息,配置信息的来源为配置仓库,启动时即拉取配置仓库的信息,缓存到本地仓库中。
  • 配置客户端:除了配置服务器之外的应用服务,启动时从配置服务器拉取其对应的配置信息。
  • 配置仓库:为配置服务器提供配置源信息,配置仓库的实现可以支持多种方式。

基于Config服务器,就可以集中管理各种环境下的各种应用的配置信息。客户端和服务端匹配到Spring中的Environment和PropertySource的概念,所以这不仅非常适用于所有的Spring应用,而且对于任意语言的应用都能够适用。一个应用可能有多个环境,从dev开发到test测试,再到生产环境,你可以管理这些不同环境下的配置,而且能够确保应用在环境迁移后有完整的配置能够正常运行。

配置中心的应用架构图如下:

图片.png

在部署环境之前,需要将相应的配置信息推送到配置仓库;先将配置服务器启动,启动之后,将配置信息拉取并同步至本地仓库;然后,配置服务器对外提供REST接口,其他所有的配置客户端启动时根据spring.cloud.config配置的{application}/{profile}/{label}信息去配置服务器拉取相应的配置。配置仓库支持多样的源,如Git、SVN、jdbc数据库和本地文件系统等。最后,其他应用启动,从配置服务器拉取配置。配置中心还支持动态刷新配置信息,不需要重启应用,通过spring-cloud-config-monitor监控模块,其中包含了/monitor刷新API,webhook调用该端点API,达到动态刷新的效果。

config-theory.png

总的来说,Spring Cloud Config具有如下特性:

  • 提供配置的服务端和客户端支持;
  • 集中式管理分布式环境下的应用配置;
  • 基于 Spring 环境,可以无缝与Spring应用集成;
  • 可用于任何语言开发的程序,为其管理与提供配置信息;
  • 默认实现基于git仓库,可以进行版本管理

下面我们分别来对配置服务器和客户端的主要功能进行源码解析。

小结

本文主要介绍了 Spring Cloud Config 服务端与客户端交互的基本过程,配置服务端是分布式应用配置的源,同时其自身也能实现高可用和高并发。接下来,我们将会具体剖析服务端和客户端的实现细节。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。