1. 简介
在微服务中,每个功能模块其实都可以拆分成一个单独的服务实例,如果项目够大,必然会有很多服务单元,每个服务单元都有一份配置文件需要维护,这显得不太好维护,而且不方便协作开发。为了使服务实例的配置文件统一管理化,Spring Cloud Config提供了一套解决方案,建立一个配置服务中心,每个服务单元从config server中获取具体的配置文件,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。为了保证系统的稳定,配置服务端config server可以进行集群部署,即使某一个实例,因为某种原因不能提供服务,也还有其他的实例保证服务的继续进行。
2. 集群服务的配置现状
在微服务系统中,每个微服务不仅仅只有代码,还需要连接其他资源,例如数据库配置或功能性的开关等等。但随着微服务系统的不断迭代,整个微服务系统可能会成为一个网状结构,整个时候需要考虑整个微服务系统的扩展性、伸缩性、耦合性等等。其中一个很重要的环节就是配置管理问题。
常见的配置类型 | 服务配置 | 数据库配置 |
MQ队列配置 | ||
Redis缓存配置 | ||
各类开关 | 功能开关 | |
业务开关 | ||
服务开关 | ||
业务配置 | 模块A | |
模块B | ||
模块C |
3. 常用配置管理方案的缺点
- 硬编码 – 需要修改代码、繁琐、风险大
- 写在properties里面 – 在集群环境下需要替换和重启
- 写在XML配置文件中,一般和应用一起打包 – 需要重新打包/替换、重启
4. 配置中心的作用
springcloud config 解决了微服务配置的中心化、版本控制、平台独立、语言独立等问题。具有以下特性:
- 提供服务端和客户端支持(springcloud config server 和 springcloud config client)
- 集中式管理分布式环境下的应用配置
- 基于spring环境,无缝与spring应用集成
- 可用于任何语言开发的程序
- 默认实现基于Git仓库,便于进行版本管理