1.Spring Cloud Config是一个统一管理微服务配置的一个组件,具有集中管理、不同环境不同配置、运行期间动态调整配置参数、自动刷新等功能。

1、集中管理
我们的微服务集群里可能有成百上千的微服务,如果我们分散的来管理每一个微服务的配置,会很繁琐,例如数据源如果变化了,每一个微服务的每一个实例的配置都要进行修改,工作量很大。那么如果我们将所有的微服务的配置,统一管理在一个地方,只需要修改这个地方的配置,所有微服务的配置都会更新生效,这样会大大提高我们的工作效率。

2、不同环境不同配置
一般我们开发项目的时候,都会有开发环境、测试环境、预生产环境、生产环境等多种环境下的应用,每种环境下的应用配置是不一样的。这个时候我们使用集中配置,可以根据不同情况,切换不同配置打包发布。

3、运行期间动态调整配置
有时候我们的服务在运行期间,需要调整一些配置参数,但是又不想要停机(例如动态调大数据源的并发数),此时使用Spring Cloud Config就可以实现配置动态调整。

4、自动刷新
使用Spring Cloud Config动态调整配置后,不需要重启应用,会自动刷新应用的配置参数,使用新的配置

2.Spring Cloud Config为分布式系统外部化配置提供了服务器端和客户端的支持,它包括Config Server和Config Client两部分。由于Config Server和Config Client都实现了对Spring Environment和PropertySource抽象的映射。

Config Server是一个可横向拓展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置内容(也可使用Subversion、本地文件系统或Vault存储配置),因此可以很方便地实现对配置的版本控制与内容审计。

Config Client是Config Server的客户端,用于操作存储在Config Server中的配置属性。

spring cloud config的优先级 spring cloud config作用_Server

1.每个微服务都会集成一个“Config Client”,

2.然后都通过“Config Server”获取相应环境(dev开发、stage预发布、prod生产)的配置。

3.然后Config Server再从后端存储中(上图为Git)拉取配置参数、属性。

简而言之:就是各个微服务通过Config客户端,向Config服务端发起读配置的请求,而Config服务端就是一个代理,它负责向后端存储,拉取客户端请求的配置,返回给客户端,达到配置集中在一个后端存储上的效果。

注:除了Spring Cloud Config,还有其它一些产品也实现了统一配置管理,例如百度的“disconf”,阿里的“diamond”,携程的“apollo”。