开发者学堂课程【微服务框架 Spring Cloud 快速入门:SpringCloud Config 分布式配置中心】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9370
SpringCloud Config分布式配置中心
微服务器概述中有以下概念:
就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architecturalstyle)
但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP 的 RESTful APl)。
每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
先回到工程中可以看到左边一列都是用分布式去开发的一个个微服务,同时一个端口号对应着一个服务,各个微服务管自己的职责之内的事情。
但是每个微服务器还都自带了一个 application.yml,众多的微服务器与自带的 yml 加起来就会对运维师产生巨大的压力。
分布式系统面临的——配置问题
微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。
由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。
SpringCloud 提供了 ConfigServer 来解决这个问题,我们每一个微服务自己带着一个 application.yml,上百个配置文件的管理
什么是 SpringCloud Config。
SpringCloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
Config Server 在其中就一个分布式配置中心,与Eureka是一样的性质。
它既有server端也有客户端。第一,自己就是一个微服务,起着承上启下的作用,其中的 ClientA、B 和 C 统一交给它进行管理之后再和Git发生反应,把我们的配置信息由远程的 GitHub 库下载到本地,然后由 Config Server 这个微服务去和外界的 GitHub沟通。
Config Server 作为一个远程的配置信息入口获得了最新的信息,然后再让 A,B 和 C 三个微服务器获得。
简单可以理解为右边黄色部分远程配置的变更和信息发布通知就好比班主任,Config server 就是班长,每个同学就是一个个微服务。
比如说今天是否要加课,延长晚自习,就会由班里选出班长去班主任协商接受最终通知。
SpringCloud Corifi 分为服务端和客户端两部分。
服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获驭配置信息,加密/解密信息等访问接口。
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用 git 来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过 git 客户端工具来方便的管理和访问配置内容。
作用:
①集中管理配置文件
②不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
③运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
④当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置
⑤将配置信息以 REST 接口的形式暴露
与 GitHub 整合配置
由于 SpringCloud Config 默认使用 Git 来存储配置文件(也有其它方式,比如支持SVN和本地文件),但最推荐的还是 Git,而且使用的是 http/https 访问的形式