Spring Cloud Config

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持,可以方便的对微服务各个环境下的配置进行集中式管理。Spring Cloud Config分为Config Server和Config Client两部分。Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config Server的接口来读取配置文件。

前言

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

在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。

在spring cloud config 组件中,分两个角色,一是config server,二是config client。

  • Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。

  • Config Client是Config Server的客户端,用于操作存储在Config Server中的配置内容。

微服务在启动时会请求Config Server获取配置文件的内容,请求到后再启动容器。

简介

1、Spring Cloud Config 项目

  • 提供 服务端 和 客户端 支持
  • 集中式 管理分布式环境下的应用配置
  • 基于 Spring 环境,无缝 与 Spring 应用集成
  • 可用于 任何 语言开发的程序
  • 默认实现基于 git 仓库,可以进行 版本管理
  • 可替换 自定义实现

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

  • 拉取配置时更新 git 仓库副本,保证是最新结果
  • 支持数据结构丰富,yml, json, properties 等
  • 配合 eureke 可实现服务发现,配合 cloud bus 可实现配置推送更新
  • 配置存储基于 git 仓库,可进行版本管理
  • 简单可靠,有丰富的配套方案

3、Spring Cloud Config Client 默认客户端实现

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

应用场景

往往,我们使⽤配置⽂件管理⼀些配置信息,⽐如application.yml

单体应⽤架构,配置信息的管理、维护并不会显得特别麻烦,⼿动操作就可以,因 为就⼀个⼯程;

微服务架构,因为我们的分布式集群环境中可能有很多个微服务,我们不可能⼀个⼀个去修改配置然后重启⽣效,在⼀定场景下我们还需要在运⾏期间动态调整配置信息,⽐如:根据各个微服务的负载情况,动态调整数据源连接池⼤⼩,我们希望配置内容发⽣变化的时候,微服务可以⾃动更新。

场景总结如下:

  • 集中配置管理,⼀个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的(⼀次修改、到处⽣效)
  • 不同环境不同配置,⽐如数据源配置在不同环境(开发dev,测试test,⽣产prod)中是不同的
  • 运⾏期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池⼤⼩等配置修改后可⾃动更新
  • 如配置内容发⽣变化,微服务可以⾃动更新配置那么,我们就需要对配置⽂件进⾏集中式管理,这也是分布式配置中⼼的作⽤。