微服务架构与应用技术架构

Apollo架构简聊

2018-08-10  本文已影响78人  青芒v5

Apollo是一个分布式配置管理中心。是由携程团队开发,官方文档更为详尽,本文主要是自己看后的一些总结,需要学习的小伙伴可以移步 Apollo官方指南,因为官方写的更好。

为什么需要配置管理中心?

在分布式环境下,需要集中配置,统一管理,修改配置后需要进行配置分发,还需要关心配置的生效时间等等。这些只是功能性的,还有服务方面,如何容灾等等。

Apollo的优势

1.简单易用的配置化界面
2.可以隔离环境(开发、测试、预发、线上)、隔离集群
3.操作人权限管控
4.配置多版本,方便回退,配置历史版本查阅
5.配置修改实时生效
等等

Apollo的架构

Apollo架构

配置发布后的实时推送设计

用户在Portal发布配置后的链路如下


AdminService和ConfigService

AdminService通知ConfigService没有通过消息机制,apollo为了尽可能少的外部依赖,通过数据库存储来变相实现推送通知。

ConfigService 如何通知Client

NotificationControllerV2得到配置发布的消息后,如何通知client呢?

client和ConfigSerivce是通过HTTP Long Polling实现的长连接,准确的叫长轮询,所以下面的步骤是一个不断轮询的过程:

  1. 客户端会发起一个Http请求到Config Service的notifications/v2接口
  2. NotificationControllerV2不会立即返回结果,而是通过Spring DeferredResult把请求挂起
  3. 如果在60秒内没有该客户端关心的配置发布,那么会返回Http状态码304给客户端,接着发起下一次轮询
  4. 如果有该客户端关心的配置发布,NotificationControllerV2会调用DeferredResult的setResult方法,传入有配置变化的namespace信息,同时该请求会立即返回。
  5. 客户端从返回的结果中获取到配置变化的namespace后,会立即请求Config Service获取该namespace的最新配置

Client To Proxy 的交互

上一篇 下一篇

猜你喜欢

热点阅读