美文网首页
Spring Cloud 统一配置中心(Spring Cloud

Spring Cloud 统一配置中心(Spring Cloud

作者: Pts | 来源:发表于2019-05-22 22:59 被阅读0次

    一、简介

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。
    随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错。配置中心便是解决此类问题的灵丹妙药。
    市面上开源的配置中心有很多,BAT每家都出过,360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache的Apache Commons Configuration、owner、cfg4j等等。

    二、配置中心提供的核心功能

    1.提供服务端和客户端支持
    2.集中管理各环境的配置文件
    3.配置文件修改之后,可以快速的生效
    4.可以进行版本管理
    5.支持大的并发查询
    6.支持各种语言

    Spring Cloud Config可以完美的支持以上所有的需求。

    Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用
    Spring cloud使用git或svn存放配置文件,默认情况下使用git,我们以git为例。
    首先在github上面创建了一个文件夹 config-files用来存放配置文件,为了模拟生产环境,我们创建以下三个配置文件:

    // 开发环境
    mengma-config-dev.yml
    // 测试环境
    mengma-config-test.yml
    // 生产环境
    mengma-config-pro.yml
    

    每个配置文件中都写一个属性 hello ,属性值分别是 mengma.....dev / mengma.....test / mengma.....pro 。

    下面我们开始配置config server 端

    config server 端代码编写

    • 新建项目,引入依赖,只需要引入 config -server 就可以 ,不需要引入 eureka-client ,web

    config-server

    • 配置配置文件
    server:
      port: 8778
    spring:
      application:
        name: config-server
      cloud:
        config:
          server:
            git:
              uri: https://github.com/***    #  配置git仓库的地址
              search-paths: config-files  # git仓库地址下的相对地址,可以配置多个,用,分割。
              username:  ***                                            # git仓库的账号
              password:   ****                                           # git仓库的密码
    
    • 启动类添加注解
    @SpringBootApplication
    // 声明为 config server 端
    @EnableConfigServer
    public class ConfigServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApplication.class, args);
        }
    }
    
    • 测试config server 是否生效

    首先我们先要测试server端是否可以读取到github上面的配置信息,直接访问:http://localhost:8778/mengma-config/dev

    返回信息如下:

    {
        "name": "mengma-config", 
        "profiles": [
            "dev"
        ], 
        "label": null, 
        "version": null, 
        "state": null, 
        "propertySources": [
            {
                "name": "https://github.com/****/config-files/mengma-config-dev.yml", 
                "source": {
                    "hello": "mengma.....dev"
                }
            }
        ]
    }
    

    上述的返回的信息包含了配置文件的位置、版本、配置文件的名称以及配置文件中的具体内容,说明server端已经成功获取了git仓库的配置信息。

    如果直接查看配置文件中的配置信息可访问:http://localhost:8778/mengma-config-dev.yml
    返回:

    hello: mengma.....dev update、
    

    说明 server 端会自动读取最新提交的内容。

    仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

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

    以config-server-dev.yml为例子,它的 application 是 config-server,profile是dev,client会根据填写的参数来选择读取对应的配置。

    以config-server-dev.yml为例子,它的application是config-server,profile是dev。client会根据填写的参数来选择读取对应的配置。

    相关文章

      网友评论

          本文标题:Spring Cloud 统一配置中心(Spring Cloud

          本文链接:https://www.haomeiwen.com/subject/xwbwcqtx.html