Cloudflare 这次用 Zstandard 搞出的 Cache
现在的硬件成本,不管是 RAM 还是 HDD,涨得都让人头疼。Cloudflare 的思路非常直接:既然存储贵,那就把存进缓存的东西压一下。他们通过在 Pingora 架构里集成 Zstandard (zstd) 算法,搞了一套“缓存转码”机制。简单来说,当一个响应进入缓存时,先用 zstd 压一遍再落盘;当数据在不同数据中心之间通过 Tiered Cache 传输,或者最终要发给用户时,再实时解压。
在实际落地时,他们选用了
下一篇
手画架构图真的会让人崩溃 →
我仔细看了下他们测试的数据,这个收益率确实很惊人:
- 压缩效果: 在他们的测试语料里,符合条件的资产平均能缩减到原始磁盘占用大小的 1/3。
- 性能对比: 相比于 Brotli,zstd 的压缩速度快了 42%,且文件大小几乎持平;相比 gzip,在同等速度下,zstd 生成的文件能小 11.3%。
- 策略选择: 他们没打算“全量压缩”。像视频、图片、字体这类本身就自带压缩格式的媒体文件(占流量 63.3%),压了也是白费 CPU;他们盯上的是 HTML、JSON、CSS 和 JS 这些文本类资产,这部分虽然请求数占 67.3%,但流量占比才 22.3%,且其中约 71% 是未压缩的,这才是最值得压的对象。
在实际落地时,他们选用了
zstd level 3。这是一个很聪明的折中点,既能拿到大部分压缩红利,又不至于让缓存写入(Cache Fill)变成 CPU 瓶颈。这个逻辑逻辑其实很硬核:编码(Encoding)的过程虽然比较费劲,但对于一个热点资源来说,它是“一次性成本”——只在进入缓存时算一次;而存储节省和带宽节省,却是随着资源被重复使用的次数不断累积的。通过这种方式,原本有限的硬件设备能存下更多的内容,提高了缓存密度,也减少了因为空间不足导致的频繁剔除(Eviction)。
免费 AI 工具箱 · 全部完全免费
