Spring Cloud Config简介
在分布式系统中,由于服务数量多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。
Spring cloud config组件的两个角色:config server和config client。
1、config server:是一个可横向扩展,集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。
2、config client:config client是config server的客户端,用于操作存储在config server中的配置内容。微服务在启动时会请求config server 获取配置文件的内容,请求到后再启动容器。
Spring Cloud Config的作用:
其实就是一个 集中配置中心。把所有服务的配置文件都放在一个代码管理平台上,通过该服务去读取对应服务所需要的配置文件。
配置服务端
1、将微服务的各个配置文件提交到Git仓库
可以选择将配置文件提交到Github或者Gitee(码云),由于Github的服务器在国外,访问速度比较慢,这里选择将配置文件上传到Gitee(码云)上。
点击 + 号,新建仓库:
2、添加创建仓库的相关信息如下,即可创建成功。
仓库成功创建后显示如下:
3、将项目的配置文件上传到码云,点击文件,选择上传文件即可。将文件拖拽过来也可以。
注意:配置文件上传之前最好重命名,配置文件命名规则:{application}-{profile}.yml 或{application}-{profile}.properties。其中application为应用名称,profile指的是开发环境(用于区分开发环境,测试环境,生产环境等)。
4、复制git地址备用
创建 配置中心微服务
1、创建Maven工程模块,配置中心微服务tensquare-config,pom.xml引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
注意:父工程中已经指定了spring cloud版本为Finchley.SR2,所以在创建配置中心微服务tensquare-config时,未指定版本号。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、创建启动类 ConfigApplication。启动类添加@EnableConfigServer 表示开启配置服务。
3、编写配置文件application.yml文件。其中uri 地址即为上面复制的git仓库的地址。
server:
port: 12000
spring:
application:
name: tensquare-config
cloud:
config:
server:
git:
uri: https://gitee.com/No1_sophia/tensquare_dev.git
4、浏览器测试一下配置中心是否创建成功。浏览器地址栏输入:http://localhost:12000/base-dev.yml 可以看到内容,证明成功了。
配置客户端
1、取项目中的其中一个工程来配置一下,以tensquare-base工程为例,首先第一步添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2、需要添加bootstrap.yml文件 来关联配置中心:
spring:
cloud:
config:
name: base
profile: dev
label: master
uri: http://127.0.0.1:12000
由于配置文件已经上传到gitee(码云)上了,所以可以将tensquare-base工程下的application.yml 配置文件删除了。(其中tensquare-base工程的application.yml文件重命名为base-dev.yml上传到码云)
3、测试:启动工程tensquare-eureka,tensquare-config,tensquare-base,打开tensquare-base的swagger地址测试接口是否能正常请求。若可以正常请求并返回正确数据则证明没有问题。
补充说明:整个项目的完整结构如下: