Cloudflare 优化 Workers KV 实现40倍性能提升
来源: InfoQ - 架构
Cloudflare最近重新设计了Workers KV,采用了一种混合存储架构",该架构根据大小特征在分布式数据库和对象存储之间自动路由对象,同时操作双存储后端。这一改进将他们的全球键值存储的p99读取延迟从200毫秒降低到5毫秒以下,同时处理数千亿的键值对。
Cloudflare进行这次架构重构是为了应对2025年6月12日的中断事件",当时谷歌云平台经历了全球服务中断",影响了Workers KV。今年早些时候,Cloudflare从双后端设置改为只使用GCP,以降低操作复杂性。然而,持续两个多小时的GCP中断事件,展示了外部依赖对关键边缘基础设施造成的风险。
新系统通过基于大小的路由,将Cloudflare自己的分布式数据库与R2"对象存储结合起来。小对象,占Workers KV流量的大多数,中位数大小为288字节,存储在Cloudflare的分布式数据库中,这个分布式数据库与R2和持久对象"使用的分布式数据库相同。大于可配置阈值的对象会自动路由到R2对象存储。
Cloudflare工程师解释说,“对于以小于1KB对象为主的工作负载,在这种规模下,数据库存储比传统的对象存储更有效、成本更低。”路由决策通过KV Storage Proxy(KVSP)透明地发生,它为数据库集群提供HTTP接口,同时管理连接、认证和分片路由。

Workers KV的修订架构(来源")
为了采用改进的双供应商能力,Cloudflare采用了复杂的一致性机制。系统同时向两个后端写入,当第一个后端确认持久性时返回成功。失败的写入操作通过写入时错误处理、读取时不一致性检测和后台爬虫不断扫描数据分歧等进行后台协调。此外,每个键值对都包括使用Cloudflare Time Services"的高精度时间戳,以确定独立存储提供商之间的正确顺序。
在最初向内部客户推出服务时,Cloudflare发现它无意中恢复了“自读-自写”(read-your-own-write",RYOW)一致性,这是一种属性,即从同一存在点立即跟随写入的读取返回更新的值,而不是过时的数据。
为了解决这个问题,工程师开发了一个“对抗性测试框架,旨在通过从世界各地的几个位置快速交错读取和写入到一组小键,从而最大限度地击中一致性边缘情况的可能性。”这种测试方法使他们能够测量和修复RYOW违规行为,同时保持性能特征,使Workers对高读负载有效。
架构上的变化带来了显著的性能改进,同时增加了冗余。从新的Cloudflare后端读取的内部p99延迟降低到5毫秒以下,而第三方对象存储提供商的p99延迟为200毫秒。这些改进“在欧洲尤为明显,我们的新存储后端就位于那里,但好处远远超出了地理局部性本身所能解释的范围。”

KVSP p99延迟(来源")

第三方冷读取p99延迟(来源")
Workers KV"是Cloudflare的最终一致性键值存储,在全球范围内跨其边缘网络运行。该服务最初于2018年推出",为配置数据、会话信息和需要立即在全球范围内可用的静态资产提供快速、分布式的存储"。公司将Workers KV用于各种应用程序,包括处理数十亿HTTP请求的大规模重定向、API网关实现、A/B测试配置、用户认证系统,以及基于地理位置或设备类型的动态内容个性化。
原文链接: