💡 原文英文,约3600词,阅读约需13分钟。
📝

内容提要

Quicksilver是Cloudflare开发的关键值存储系统,旨在实现全球快速复制和低延迟访问。随着业务增长,存储所有数据在每台服务器上变得低效,因此引入了新的服务器角色:完整数据副本和缓存代理。此设计(Quicksilver v1.5)提高了存储效率,减少了磁盘空间使用,同时保持了请求延迟。

🎯

关键要点

  • Quicksilver是Cloudflare开发的关键值存储系统,旨在实现全球快速复制和低延迟访问。
  • Quicksilver v1最初设计为全球配置分发系统,但随着业务增长,存储所有数据在每台服务器上变得低效。
  • 引入了新的服务器角色:完整数据副本和缓存代理,以提高存储效率和减少磁盘空间使用。
  • Quicksilver v1.5设计通过在每个数据中心部署少量副本和多个代理来优化存储。
  • Cloudflare的架构包括核心数据中心和多个小型数据中心,存储能力因节点类型而异。
  • 每台服务器托管10个Quicksilver实例,分别用于不同的Cloudflare服务。
  • 通过引入代理和副本的角色分配,Quicksilver v1.5实现了高达50%的磁盘空间使用减少。
  • 在评估代理和副本设计的有效性时,发现大数据中心的20%键空间被使用,小数据中心仅为1%。
  • Quicksilver采用持久缓存,使用RocksDB存储缓存键,以降低内存使用和解决冷缓存问题。
  • Quicksilver保持顺序一致性,确保在异步复制中不会出现非单调读取的问题。
  • 实现多版本并发控制(MVCC)以跟踪不同时间点的键值变化,确保数据一致性。
  • 滑动窗口方法用于处理代理领先于副本的情况,保持最近更新的本地缓存。
  • 负查找问题通过在代理层直接识别不存在的键来解决,避免了对副本的请求。
  • 引入网络Oracle作为发现机制,动态管理数据中心和服务的查找,提升了系统的自愈能力。
  • Quicksilver v1.5在节省磁盘空间的同时,保持了请求延迟的稳定性,代理的延迟有时甚至比副本更快。
➡️

继续阅读