《微服务架构实战》读书笔记 5-4 分布式配置中心和消息总线

一、分布式配置中心

分布式系统中人为配置操作缺点:

  1. 运维工作量巨大(临时需要调整配置参数)
  2. 出错概率加大

Spring Cloud 解决方案:提供外化和中心化配置。

Spring Cloud 提供了两种方式的外部配置:
  • Spring Cloud Config: 通过本地文件系统,Git/SVN仓库来管理配置文件,可以满足基本外化需求,不能精细的管理配置。
  • Spring Cloud Zookeeper Config:通过Zookeeper分级命名空间来存储配置项数据,并且支持基础上下文和profile命名空间,另外zookeeper可以实时监听节点变化和通知机制,应为首选。
Spring Cloud Config

Spring Cloud团队创建,用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分。

  • 服务端:分布式配置中心,一个独立的微服务应用,用来连接配置仓库,并未客户端提供获取配置信息、加密/解密信息等访问接口;
  • 客户端:微服务架构中的各个微服务应用或基础设22施,通过指定的配置中心来管理应用资源与业务相关的配置内容,在启动时从配置中心获取和加载配置信息。

Spring cloud Config 实现对服务端和客户端中环境变量和属性配置的抽象映射,既适用于Spring 构建的应用程序,还可以在其他任何语言运行的应用程序中使用。其默认采用Git来存储管理配置信息。

分布式配置中心的架构图如下(此处应为Spring Cloud Config):

                                                            图 1 分布式配置中心

其中:

  • Config Client: 提供基于spring的客户端,用用在代码中引入为Spring Cloud Config Client的jar包即可
  • Config Server: 需要独立部署的web应用,功能是把SVN/Git上的配置返回给客户端
  • SVN/Git仓库,配置存储在远程仓库,通过SVN/Git客户端来管理配置

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

在线上环境,一般使用配置中心集群来达到高可用的效果,在应用配置更改时,也希望能够自动更新到应用中。

二、消息总线简介

Spring Cloud Bus将spring的事件处理机制和消息中间件消息的发送和接收整合起来,可以轻松地将分布式应用中连接有消息中间件的多个服务节点链接起来,实现消息互通

spring cloud通过轻量消息***连接各个分布的点。

核心思想:通过分布式的启动器对Spring boot应用进行扩展,可以用来建立一个多个应用之间的通信频道。Spring Cloud 本身实现了消息总线机制。

小例子:利用spring cloud bus做配置更新:

  1. 提交配置更新的代码出发post请求给bus/refresh.
  2. Server 端接收请求并发送给Spring Cloud Bus
  3. Spring Cloud Bus 接收到消息并通知给其他客户端
  4. 其他客户端接收到通知,请求Server端获取最新的配置,从而全部客户端都获取到最新的配置。

Spring Cloud Bus需要依赖一种MQ(RabbitMQ,Kafka),可以理解为Spring Cloud Bus起到的是消息传递的作用,有配置更新,服务端回去通知Spring Cloud Bus,由Spring Cloud Bus通知客户端,然后客户端向Server请求最新配置。

#笔记##读书笔记#
全部评论
受益匪浅
点赞
送花
回复
分享
发布于 2018-12-01 11:25

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务