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的作用:
其实就是一个 集中配置中心。把所有服务的配置文件都放在一个代码管理平台上,通过该服务去读取对应服务所需要的配置文件。

Spring Cloud之分布式配置中心组件Config_Spring Cloud

配置服务端

1、将微服务的各个配置文件提交到Git仓库

可以选择将配置文件提交到Github或者Gitee(码云),由于Github的服务器在国外,访问速度比较慢,这里选择将配置文件上传到Gitee(码云)上。

点击 + 号,新建仓库:
Spring Cloud之分布式配置中心组件Config_Spring Cloud_022、添加创建仓库的相关信息如下,即可创建成功。
Spring Cloud之分布式配置中心组件Config_Spring Cloud_03
仓库成功创建后显示如下:
Spring Cloud之分布式配置中心组件Config_Spring Cloud_04
3、将项目的配置文件上传到码云,点击文件,选择上传文件即可。将文件拖拽过来也可以。

注意:配置文件上传之前最好重命名,配置文件命名规则:{application}-{profile}.yml 或{application}-{profile}.properties。其中application为应用名称,profile指的是开发环境(用于区分开发环境,测试环境,生产环境等)。

Spring Cloud之分布式配置中心组件Config_Spring Cloud_05Spring Cloud之分布式配置中心组件Config_Spring Cloud_064、复制git地址备用
Spring Cloud之分布式配置中心组件Config_Spring Cloud_07

创建 配置中心微服务

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 表示开启配置服务。
Spring Cloud之分布式配置中心组件Config_Spring Cloud_083、编写配置文件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 可以看到内容,证明成功了。
Spring Cloud之分布式配置中心组件Config_Spring Cloud_09

配置客户端

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地址测试接口是否能正常请求。若可以正常请求并返回正确数据则证明没有问题。

Spring Cloud之分布式配置中心组件Config_Spring Cloud_10

补充说明:整个项目的完整结构如下:
Spring Cloud之分布式配置中心组件Config_Spring Cloud_11