一 概述
应用服务处理实现系统功能,还需要连接资源和其他应用,经常有很多需要在外部配置的数据用于调整应用的行为,如切换不同的数据库,设置功能开关等。随着微服务数据量的不断增加,需要系统具备可伸缩和可扩展性,除此之外就是能够管理相当多的服务实例的配置数据。
在应用的开发阶段,配置信息由各个服务自治管理,但是到了生产环境之后会给运维带来很大的麻烦,特别是微服务的规模比较大,配置的更新更为麻烦。
二 配置中心的不同实现
- 硬编码,缺点是需要修改代码,风险大。
- 放在xml等配置文件中,和应用一起打包,缺点就是更新需要重新打包和重启。
- 文件系统,缺点就是依赖操作系统等。
- 读取系统的环境变量,缺点就是由大量的配置需要人工设置到环境变量中,不便于管理,且依赖于平台。
- 云端存储,缺点就是与其他应用耦合。
分布式配置中心有多种开源的组件,如携程开源的Apollo,百度的Disconf,淘宝的Diamond等。
三 分布式配置中心Spring Cloud Config
Spring Cloud中提供了分布式配置中心Spring Cloud Config,为外部配置提供了客户端和服务器端的支持。基于Config服务器,就可以集中管理各种环境下的各种应用的配置信息。
客户端和服务器端与Spring中的Enviroment和PropertySource该奶奶相匹配,所以这不仅仅适用于所有的Spring应用,而且对于任意语言的应用都适用。
一个应用可以有多个环境,从开发到测试,再到生产环境,开发者可以管理这些不同环境下的配置,而且能够确保应用在环境迁移后有完整的配置能够正常运行。
Config服务端默认的存储实现是Git,者能够和容易地支持配置环境的标签版本,二且各种工具方便地管理这些配置内容。
四 Spring Cloud Config的特性
- 提供配置的服务器端和客户端支持。
- 集中管理分布式环境下的应用配置。
- 基于Spring环境,可以无缝地与Spring应用集成。
- 可用于任何语言开发的程序,为其管理与提供配置信息。
- 默认实现基于Git仓库,可以进行版本管理。