由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略。即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就来介绍一下两种常用的配置策略。
第一种:多个项目公用一个Git仓库,用不同的目录区分项目(推荐)
主要的配置项如下:
spring.cloud.config.server.git.uri=https://github.com/wcc56893/config-repo.git
spring.cloud.config.server.git.search-paths=/{profile}
这种模式下不同的项目会对应到https://github.com/wcc56893/config-repo.git仓库下的不同目录,如果项目中spring.application.name=user-service,那么它的配置仓库会定位到https://github.com/wcc56893/config-repo.git仓库下的profile目录。配置文件按application-{profile}.properties的格式存储,{profile}代表环境名。
ps:profile就是用来区分环境的,development,test,production等。https://github.com/wcc56893/config-repo.git远程仓库下的目录结构就是development,test,production,在某个环境文件夹下又区分微服务项目,比如在test下又有很多项目的测试环境的配置文件,比如:application1-test.yml, application2-test.yml等。
优缺点分析:因为只使用一个Git库存储,所以当配置是由专人统一维护的时候比较方便。但是如果要做DevOps的话,权限控制上将变的非常的弱。
第二种:多个项目使用多个不同Git仓库
主要的配置项如下:
spring.cloud.config.server.git.uri=https://github.com/wcc56893/{application}.git
这种模式下不同的项目会对应的不同的Git仓库,如果项目中spring.application.name=user-service,那么它的配置仓库会定位到https://github.com/wcc56893/user-service.git仓库下的配置。配置文件按application-{profile}.properties的格式存储,{profile}代表环境名。
优缺点分析:由于一个项目就有一个对应的存储配置的Git仓库,所以这种模式对于DevOps的应用支持较好,如果使用Gitlab作为Git服务端的话,还有不错的界面和权限管理来方便项目所属者使用和维护。如果团队不是DevOps模式管理的话,专人管理就会遇到有N多Git仓库要维护的困境。