1、什么是spring cloud config
spring-cloud-config 简单来讲就是spring-cloud实现的分布式配置中心.spring-cloud-config分为服务与客户两端。
spring-cloud-config 使用git或者svn 甚至是本地的文件系统作为配置文件的仓库。
spring-cloud-config 用application,profile,label 三个维度来实现分布式配置管理和发布.
- application : 使用spring-cloud-config服务的客户端名称,每个配置都是属于某一个应用的
- profile : 每个配置都是区分环境的,如dev, test, prod等
- lable : 就是对同一份配置的不同版本管理。 如果使用的是git作为配置管理的仓库,label可以是分支名,tag的名称。也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持。
2、使用spring cloud config的原因
- 基于应用、环境、版本三个维度管理,主要是版本的支持。
- 配置存储支持Git、SVN。开发人员都比较熟悉,不需要额外的学习成本。无论SVN或GIT都支持版本和权限管理。
- 和Spring无缝集成。对所有spring应用程序迁移成本非常低,在配置的获取上完全一致。
- 可用于任何语言开发的程序(客户端)。
- 提供服务端和客户端支持。
- 集中式管理分布式环境下的应用配置。
3、spring cloud config server
- 拉取配置时更新 GIT或SVN 仓库副本,保证是最新结果.
- 支持数据结构丰富,yml, json, properties 等。
- 配合 eureke 可实现服务发现,配合 cloud bus 可实现配置推送更新。
- 配置存储基于GIT或SVN仓库,可进行版本管理。
- 简单可靠,可以实时查看配置文件的最新数据。
- HTTP服务具有以下格式的资源:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
4、spring cloud config client
- 应用启动后,获取配置文件的顺序:config server>本地。
- 配置更新
- GIT或SVN提交更改配置文件。
- 手动refresh或 cloud bus 可实现配置推送更新或重启config client,config client感知到配置更改。
- Config Client从Config Server获取到最新的配置,把最新的配置更新到环境中,并且更新已经注入的值。
- 调用远程配置的类需要标记@RefreshScope,保证同步更新配置。