Apollo原理

Posted toov5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apollo原理相关的知识,希望对你有一定的参考价值。

https://github.com/ctripcorp/apollo/wiki/Apollo%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83%E8%AE%BE%E8%AE%A1

 

提交就是 提交给客户端 刷新最新值到缓存

 

技术分享图片

 

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

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

 

以上是关于Apollo原理的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Apollo 无法在 Xcode 中构建 - 只能有一个名为 ...的片段?

从 Apollo 缓存中读取特定类型的所有片段

使用 Apollo 客户端的片段组合:约定和样板

Apollo 客户端片段不嵌入数据

Apollo 可以从缓存中读取部分片段吗?

将 GraphQL 片段与 Apollo Hooks 一起使用时出错