Apollo分布式配置中心

相较嫡系的SpringCloudConfig,为什么选择使用Ap

2019-04-12  本文已影响0人  初晨的笔记

目录

1、SpringCloudConfig和Apollo的对比

2、apollo的介绍

3、apollo架构设计原理

4、客户端通过apollo拉取配置的原理


1、SpringCloudConfig和Apollo的对比

SpringCloudConfig VS Apollo.jpg

如上图对比


2、apollo的介绍

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

Apollo支持4个维度管理Key-Value格式的配置:


3、apollo架构设计原理

overall-architecture.jpg

上图简要描述了Apollo的总体设计,我们可以从下往上看:


4、客户端通过apollo拉取配置的原理

client-architecture.jpg

上图简要描述了Apollo客户端的实现原理:

  1. 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。
  2. 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。
    • 这是一个fallback机制,为了防止推送机制失效导致配置不更新
    • 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
    • 定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟。
  3. 客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中
  4. 客户端会把从服务端获取到的配置在本地文件系统缓存一份
  5. 在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
  6. 应用程序从Apollo客户端获取最新的配置、订阅配置更新通知

配置更新推送实现

  1. 前面提到了Apollo客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。
  2. 长连接实际上我们是通过Http Long Polling实现的,具体而言:
  1. 考虑到会有数万客户端向服务端发起长连,在服务端我们使用了async servlet(Spring DeferredResult)来服务Http Long Polling请求。
上一篇下一篇

猜你喜欢

热点阅读