使用Spring Cloud Config搭建配置中心
笔者的微服务项目中需要使用一个统一的管理分布式系统的配置中心,之前试用过Disconf。实际使用发现,Disconf可以很好地满足项目的需求,同时提供了一个友好的图形化界面供操作。但是,其服务器端使用了Nginx, Tomcat, MySQL, Zookeeper和Nginx,安装部署起来比较复杂;客户端也引入了不少的Jar包,可能引起版本冲突。因此,笔者也在留意是否有其它的可选方案。最近接触到Spring Cloud Config,认为也是一个搭建配置中心不错的选择,在此和大家分享一下试用的经验,供大家参考。
文章中的样例代码可以在https://git.oschina.net/gongxusheng/spring-config-demo下载。
本案例共有三个项目,分别是:
- my-sample-config: 简单项目,用于管理配置文件
- my-config-server: Spring Cloud Config Server即服务器项目
- my-config-client: Spring Cloud Config Client即客户端项目
配置文件的管理
Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存储库可以很好地支持版本管理,Spring默认配置是使用Git存储库。在本案例中将使用OSChina提供的Git服务存储配置文件。为了能让Config客户端准确的找到配置文件,在管理配置文件项目my-sample-config中放置配置文件时,需要了解application, profile和label的概念:
- {application}映射到Config客户端的spring.application.name属性
- {profile}映射到Config客户端的spring.profiles.active属性,可以用来区分环境
- {label}映射到Git服务器的commit id, 分支名称或者tag,默认值为master
例如在本案例中,计划将客户端my-config-client的spring.application.name设置为my-client,则上传一个文件名为my-client.yml配置文件;另外计划在uat环境上做不同的配置,则再上传一个文件名为my-client-uat.yml配置文件
Spring Cloud Config服务器的配置
使用Spring Starter Project快速创