目录


Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config

Spring Cloud Config(二):基于Git搭建配置中心

Spring Cloud Config(三):基于JDBC搭建配置中心

Spring Cloud Config(四):配置信息动态刷新

Spring Cloud Config(五):配置中心服务端Config Server源码解析

Spring Cloud Config(六):配置中心客户端Client源码解析

Spring Cloud Config(七):配置中心自定义扩展

Spring Cloud Config(八):Client 端覆盖Server端配置属性

Spring Cloud Config(九):Config Server 端配置文件安全保护

Spring Cloud Config(十):快速响应失败和重试机制


1、Spring Cloud Config 定义

Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system. With the Config Server you have a central place to manage external properties for applications across all environments. The concepts on both client and server map identically to the Spring Environment and PropertySource abstractions, so they fit very well with Spring applications, but can be used with any application running in any language. As an application moves through the deployment pipeline from dev to test and into production you can manage the configuration between those environments and be certain that applications have everything they need to run when they migrate. The default implementation of the server storage backend uses git so it easily supports labelled versions of configuration environments, as well as being accessible to a wide range of tooling for managing the content. It is easy to add alternative implementations and plug them in with Spring configuration.

Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。 使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念与Spring Environment和PropertySource抽象相同,因此它们非常适合Spring应用程序,但可以与任何语言运行的任何应用程序一起使用。当应用程序通过部署管道从开发到测试并进入生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。他默认的服务器存储后端实现使用git,因此它可以轻松支持配置环境的标签版本,并且可以访问各种用于管理内容的工具。 基于spring配置可以很方便的实现扩展。

2、为什么选择 Spring Cloud Config

那么有人可能会问了,业界关于分布式配置中心有多种开源的组件,如携程开源的 Apollo、 百度的 Disconf、淘宝的 Diamond 等,已经不少了,为啥还会诞生Spring Cloud Config呢?

应用服务除了实现系统功能,还需要连接资源和其它应用,经常需要调整服务的配置来改变应用的行为,如切换不同数据库,设置功能开关等。随着微服务数量的不断增加,需要系统具备可伸缩性和可扩展性,除此之外就是需要管理服务实例的配置数据。在开发阶段配置信息由各个服务自己管理,但是到了生产环境会给运维带来很多不便。因此系统需要建立一个统一的配置管理中心,常见配置中心的实现方法有:

  • 硬编码,缺点就是需要修改代码

  • 放在xml等配置文件中和应用一起打包,缺点就是配置修改需要重新打包和重启

  • 放在文件系统中,缺点就是依赖操作系统

  • 配置到系统环境变量,缺点是需要大量的配置工作,不方便管理

个人看来,Spring Cloud Config 在以下几方面还是有比较明显的优势,所以可能是为什么要再造一个轮子的原因吧:

1、基于应用、环境、版本三个维度管理

应用(application)

每个配置都是属于某一个应用的

环境(profile)

每个配置都是区分环境的,如dev, test, prod等

版本(label)

这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理

Spring Cloud Config提供版本的支持,也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持。

2、多种存储方式

基于Git存储,一方面程序员非常熟悉,另一方面在部署上会非常简单,而且借助于Git天生就能非常好的支持版本,同时它还支持其它的存储如本地文件、SVN、jdbc等

3、Spring无缝集成

它无缝支持Spring里面Environment和PropertySource的接口

所以对于已有的Spring应用程序的迁移成本非常低,在配置获取的接口上是完全一致的

3、Spring Cloud Config 简介

上图简要描述了一个普通Spring Cloud Config应用的场景。其中主要有以下几个组件:

  • Config Client

Client很好理解,就是使用了Spring Cloud Config的应用

Spring Cloud Config提供了基于Spring的客户端,应用只要在代码中引入Spring Cloud Config Client的jar包即可工作

  • Config Server

Config Server是需要独立部署的一个web应用,它负责把git上的配置返回给客户端

  • Remote Git Repository

远程Git仓库,一般而言,我们会把配置放在一个远程仓库,通过git客户端来管理配置

  • Local Git Repostiory

Config Server接到来自客户端的配置获取请求后,会先把远程仓库的配置clone到本地的临时目录,然后从临时目录读取配置并返回

4、总结

Spring Cloud Config 项目

  • 提供 服务端 和 客户端 支持

  • 集中式 管理分布式环境下的应用配置

  • 基于 Spring 环境,无缝 与 Spring 应用集成

  • 可用于 任何 语言开发的程序

  • 默认实现基于 git 仓库,可以进行 版本管理

  • 可替换 自定义实现

Spring Cloud Config Server 作为配置中心服务端

  • 拉取配置时更新 git 仓库副本,保证是最新结果

  • 支持数据结构丰富,yml, json, properties 等

  • 配合 eureke 可实现服务发现,配合 cloud bus 可实现配置推送更新

  • 配置存储基于 git 仓库,可进行版本管理

  • 简单可靠,有丰富的配套方案

Spring Cloud Config Client 默认客户端实现

SpringBoot 项目不需要改动任何代码,加入一个启动配置文件指明使用 ConfigServer 上哪个配置文件即可

Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config的更多相关文章

  1. SpringCloud(6)分布式配置中心Spring Cloud Config

    1.Spring Cloud Config 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组 ...

  2. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...

  3. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...

  4. 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...

  5. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)

    在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...

  6. 【SpringCloud】第六篇: 分布式配置中心(Spring Cloud Config)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  7. 一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)

    上一章节,我们讲解了服务网关zuul,本章节我们从git和本地两种存储配置信息的方式来讲解springcloud的分布式配置中心-Spring Cloud Config. 一.Spring Cloud ...

  8. Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务

    上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便 ...

  9. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配 ...

随机推荐

  1. Effective Java 读书笔记(二):对象通用方法

    1 重写equals方法时请遵守通用约定 (1)无需覆盖equals方法的情况 要求独一无二 不要求逻辑相等 超类已经覆盖equals方法,对其子类也适用 一个类是私有的或者是包私有(可以重写后抛出异 ...

  2. mysql cmd命令行 创建数据库 表 基础语句

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  3. VBA决策(十)

    决策允许程序员控制脚本或其中一个部分的执行流程.执行由一个或多个条件语句控制.以下是在大多数编程语言中找到的典型决策结构的一般形式. VBA提供了以下类型的决策声明. 点击以下链接来查看它们的详细信息 ...

  4. oracle学习笔记:update一整列 关联更新

    普通的 update 都是根据条件来对部分列的内容进行修改,用法如下: update temp_cwh_table set name = 'xxx' where id = 1; 假设现在有2张表:A. ...

  5. JS错误信息类型

    1.SyntaxError 语法错误 ①变量名不规范 // 变量名不规范 var 1 = 1; 未被捕获的语法错误,这个错误是js机制自动抛出来的 意外的数字 // 下面两个是同一种情况 var 1a ...

  6. 串口工具kermit(ubuntu)

    安装 # sudo apt-get install ckermit 配置 kermit启动时,会首先查找~/.kermrc,然后再遍历/etc/kermit/kermrc # vi /etc/kerm ...

  7. sql创建临时表并且插入数据

    if OBJECT_ID('tempdb..#temp') is not null drop table #temp select * into #temp from ( --select * fro ...

  8. 使用jMeter对基于SAP ID service进行Authentication的Restful API进行并发测试

    这篇文章本来Jerry只在SAP社区上写了英文版的,可以通过点击文末的"阅读原文"获得.后来有两位做Marketing Cloud开发的德国同事,写邮件询问关于文章的更多细节,声称 ...

  9. 解决spring-boot-maven-plugin插件打包,springboot启动时报找不到主main问题

    一:遇到的问题及解决方法 最近在搭建一个新项目时,使用spring-boot-maven-plugin插件打包,springboot项目在发布后启动时遇到找不到主main问题. 遇到这个问题当时感觉本 ...

  10. Bind Mounts and File System Mount Order

         When you use the bind option of the mount command, you must be sure that the file systems are m ...