微服务架构实战学习笔记 第七章 Spring Cloud Netflix Config与配置中心

配置管理需求在任何类型的系统中都存在,而且伴随着业务复杂度的提升和技术框架的演变,系统对配置信息的管理方式也会踢出越来越高的要求。

Spring Cloud Config 分部署配置中是Spring家族研发的高可用、分布式配置中心。以下是添配置中心后的系统架构图

一、分布式配置中心方案

1、配置中心与微服务架构

每一个微服务系统都对应有一个配置中心。核心组件是中央仓库和Config服务器。

中央仓库:配置中心的所有配置信息都存放在一个中央仓库中。

Config服务器:Config服务器封装对中央仓库的相关操作,本身也是作为独立的服务存在。Config服务需要提供一种通知机制,确保配置信息发生变化的时候能够通知各个微服务,以便各个微服务技术更新本地服务中的配置数据,可以是轮询、也可以是监听机制。

2、配置信息的分类

微服务架构中配置信息有如下分类:

可按照配置的来源划分:源代码文件、数据库、远程存储媒介等。

按配置的适用环境划分:可分为开发环境、测试环境、预发布环境、生产环境等。

按配置的集成阶段划分:可分为编译时、打包时和运行时。

按照配置加载的方式划分:单次加载型配置、动态加载型配置。

3、配置中心的实现需求

基于配置信息的内容和分类,构建一个配置中心需要满足4个核心需求:

(1)安全性:非开发环境下应用配置保密性,避免关键信息发生泄漏

(2)隔离性:不同部署环境下应用配置的隔离性,比如非生产环境的配置不能用于生产环境。

(3)一致性:同一部署环境下的服务应用配置的一致性,即所有服务使用同一份配置信息。

(4)易管理性:分布式环境下应用配置的可管理性,即提供远程管理配置的能力

集中式配置中心示例图

二、配置中心实现工具

基于配置中心的时间需求,业界存在一批典型的分布式配置中心实现工具:

Etcd:是一个轻量级分布式键-值对数据库,基于Raft协议提供了集群环境的服务发现和人注册机制。在功能上实现了数据变更监视、目录监听、分布式锁原子操作等特性并通过这些特性来管理节点状态。

consul:是google开源的一个使用go语言开发的服务发现和配置管理中心服务。内置了服务注册和发现框架、分布式一致性协议实现、健康检查、键值对存储、多数据中心方案等诸多特性。在内部实现上,Consul使用了一种称之为SWIM的协议完成分布式环境下的数据计算。

Zookeeper:是同一种分布式协调工具,目前在分布式配置、分布式集群管理、leader选举等领域应用非常广泛。

Disconf:是由百度开源的一个分部署配置管理工具,与Spring框架有很好的集成,在使用上也提供了友好的web管理界面,从实现机制上讲,Disconf把配置信息存储在MySQL中,基于Zookeeper提供监听机制实现数据的实时推送。

Diamond:由阿里巴巴提供,同样把配置数据存储在MySQL中,但在获取数据时不是使用推送,而是每个一段时间进行全部数据拉取,实现过程比较简单。值支持键值对结果的数据。

只要具备数据发布和订阅功能,就能实现分布式配置中心。

三、构建配置中心服务器

1、想要构建Config服务器,需要咱Maven中引入:spring-cluod-config-server 和spring-cloud-starter-config。

在启动类上加上@ConfigServerApplication注解,同时自身也是一个服务需要在Eureka注册,需要加上@EnableEurekaClinet注解。

2、实现基于本地文件系统的配置方案

Spring Config对配置文件的命名做了约束,使用label和profile概念指定配置信息的版本及运行环境,其中label标识配置的版本控制信息,而profile中的Dev、prod、test分别标识开发、生产、测试环境。支持properties和yml文件格式。

3、实现基于Git的配置方案

Spring Cloud Config 支持配置信息放在配置服务器本地文件系统中,也支持放在远程仓库中。

四、使用配置服务

1、访问配置项

初始化客户端需要引入spring-cloud-config-client  

2、通过@Value注解注入配置信息

3、整合数据访问功能

五、配置数据的安全性

实现Config服务器的用户认证,需要添加相应的安全配置项,引入spring-boot-starter-security同时添加配置,而在各个微服务中需要配置安全中的用户和密码才能进行访问。

六、Spring Cloud Config 特性

1、Spring Cloud Config 对比 Zookeeper

配置中心在实现上需要满足高效获取、实时感知、分布式访问等多个要求。

1.分布式协调机制通过一定的方法,确保配置信息在分布式环境中的各个节点中得到实时、一致的管理。

Spring Cloud Config 基本架构

区别在于:配置的存储方式不同、配置的管理方式不同、配置变化的通知机制不同

2、Spring Cloud Config 高可用

配置中心作为整个微服务的架构运行基础服务,需要确保其可用性。

传统模式是所有的Config服务器统一指向同一个Git仓库,这样所有的配置内容就通过基于git的共享文件系统进行维护。

服务模式:

Spring Cloud Config 服务本身也是一个微服务,跟其他服务一样,也可以注册到Eureka上,让其他服务提供者或消费者通过注册中心进行服务发现和获取。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值