SpringCloud Config简介、Config Server及Client的使用

SpringCloud Config简介

SpringCloud Config是SpringCloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密 / 解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。SpringCloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。由于SpringCloud Config实现的配置中心默认采用Git来存储配置信息,所以使用SpringCloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便的管理和访问配置内容,当然它也提供了对其他存储方式的支持,比如:GIT仓库、SVN 仓库、本地化文件系统,其架构如下图:

SpringCloud Config简介、Config Server及Client的使用_第1张图片

Config Server端主要和Git/SVN服务器打交道,获取放在Git/SVN里的配置信息通俗点说,SpringCloud Config就是用来统一配置管理维护微服务工程中所有配置文件,包括方便切换环境配置,以及修改配置无需动代码,省心省力等

如果用上SpringCloud Bus,能实现无需重启,自动感知配置变化以及应用新配置:

SpringCloud Config简介、Config Server及Client的使用_第2张图片

Config Server的基本使用

根据前面SpringCloud Config架构图,首先要搞个configServer来联通远程GIT仓库,读取远程配置;这里的GIT仓库,一般选用GitHub,或者码云 这里用GitHub进行演示:

先登录GitHub建个仓库microservice-config,然后Git下载到本地;上传一个配置文件到git仓库:

SpringCloud Config简介、Config Server及Client的使用_第3张图片

注:

application.yml文件要使用utf-8编码,否则会出现乱码、解析等各种问题

新建git仓库时要将类型选为public,如果选private,会造成config server无法访问到

然后新建一个microservice-config-server-4001模块,在pom里加入依赖:



    org.springframework.cloud
    spring-cloud-config-server

完整pom如下:



    4.0.0
    
        com.ue
        microservice
        1.0-SNAPSHOT
    
    microservice-config-server-4001

    
        
        
            org.springframework
            springloaded
        
        
            org.springframework.boot
            spring-boot-devtools
        
        
        
            org.springframework.cloud
            spring-cloud-config-server
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

在启动类加上@EnableConfigServer注解:

SpringCloud Config简介、Config Server及Client的使用_第4张图片

然后找到仓库的Http地址进行copy:

SpringCloud Config简介、Config Server及Client的使用_第5张图片

microservice-config-server-4001项目的application.yml配置下(主要是要配置一个git请求地址):

server:
  port: 4001

spring:
  application:
    name: microservice-config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/java-LJ/microservice-config.git

然后在本地hosts文件加个本地域名映射:

127.0.0.1  configserver.test.com

然后只启动这个项目,访问http://configserver.test.com:4001/application-xxx.yml可以读取到配置文件,结果如下:

SpringCloud Config简介、Config Server及Client的使用_第6张图片

至于请求路径,是有匹配规则的:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

以springcloud-config-dev.yml为例,它的application是springcloud-config,profile是dev,label是分支的意思,如果只有一个主分支,那可以不写,因为默认会访问master分支,client会根据填写的参数来选择读取对应的配置

Config Client的基本使用

根据前面的springcloud config原理图,还需要建立client端调用server端,最终才能实现client端获取远程git配置信息;为了后面演示方便,再提交两个配置文件到远程git库:

SpringCloud Config简介、Config Server及Client的使用_第7张图片

然后新建一个microservice-config-client-5001模块,在pom里加下依赖:


    org.springframework.cloud
    spring-cloud-starter-config


    org.springframework.boot
    spring-boot-starter-tomcat


    org.springframework.boot
    spring-boot-starter-web

因为项目启动的时候,就要调用server config端获取配置信息,所以这里需要一个bootstrap.yml配置文件(该文件的优先级比application.yml要高):

SpringCloud Config简介、Config Server及Client的使用_第8张图片

spring:
  application:
    name: application-dev
  cloud:
    config:
      name: crm
      uri: http://configserver.test.com:4001
      profile: test
      label: master
      fail-fast: true

application.yml如下:

server:
  port: 5001
  context-path: /

然后再搞一个ConfigClientController类测试显示端口:

package com.ue.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {
 
    @Value("${port}")
    private String port;
 
    @GetMapping("/getPort")
    public String getPort() {
        return "测试访问的yml文件的端口是:【" + port + "】";
    }

}

最后在本地hosts加配置:


127.0.0.1  client-config.test.com

然后启动config server4001项目跟config client5001项目,用浏览器访问http://client-config.test.com:5001/getPort即可获取远程端口配置信息,如下:

SpringCloud Config简介、Config Server及Client的使用_第9张图片

SpringCloud Config简介、Config Server及Client的使用_第10张图片

你可能感兴趣的:(微服务框架)