云端缓存存储痛点与创新需求
随着云服务和CDN流量的爆炸式增长,存储成本大幅攀升,尤其是RAM和硬盘价格的上涨给缓存容量带来严峻挑战。Cloudflare基于此背景提出“缓存转码”(Cache Transcoding)方案,采用高效的无损压缩技术,力求在不牺牲性能的前提下,显著提升存储效率和跨数据中心带宽利用。
Zstandard:高效压缩的技术选择
Zstandard(简称zstd)由Facebook开发,2016年开源,是一种兼顾压缩率和速度的无损压缩算法。Cloudflare经过测试发现,zstd能以比Brotli快42%的速度,产生几乎相同大小的压缩文件,同时比gzip生成的文件小11.3%。这种速度与大小的平衡,使zstd成为缓存中转码的理想压缩工具。
具体压缩等级采用的是zstd的3级,这一设置确保了绝大部分压缩效益,同时CPU占用不会成为缓存性能瓶颈。
仅对可压缩文本执行转码:精细筛选提升效率
并非所有缓存内容都适合二次压缩。例如,图片、视频及字体等媒体文件通常已经经过压缩,这类数据占请求数量约21.4%,却占据63.3%的字节量。对它们再次进行转码只会浪费CPU资源,收益甚微。
相反,文本内容(HTML、JSON、CSS、JavaScript)占请求总数的67.3%,占字节量的22.3%,而这些内容中约71%未经原生压缩,非常适合zstd压缩,且平均能减小2.8倍。Cloudflare策略是:针对Content-Encoding未设置,Content-Type为文本类,且内容长度至少4 KiB的数据进行转码,以达到最大收益和最低成本的平衡。
Cache Transcoding具体工作流程
1. 缓存未命中阶段:当缓存代理判断请求数据不在本地缓存时,向源站发起请求,得到完整的未压缩响应。
2. 写入磁盘前的转码:使用zstd对合规的文本响应进行压缩存储。缓存元信息中标记该数据已压缩并保留原始长度。
3. 跨数据中心转发:借助Cloudflare的分层缓存(Tiered Cache),缓存间传输保持压缩形态,节省带宽。
4. 缓存命中阶段:缓存层读取压缩数据后,解压还原内容,再返回给终端用户;压缩和解压过程CPU开销有限且仅在必要时发生。
这种设计使得编码消耗仅需在缓存写入时支付一次,而存储和带宽节省则是永久性的,配合分层缓存优化带宽使用率,极大提升缓存容量与效率。
实践测试与未来展望
Cloudflare采用超过百万次请求规模的真实测试,验证了转码效果。测试中两个约200 KB大小的测试对象,压缩比例达到近2.8倍,CPU开销只增加几个百分点,对缓存性能影响极小。
未来,Cloudflare计划探索更高zstd级别、调优适用内容范围、支持预压缩响应及跳过部分解码,进一步提升性能和适用性。
---
通过Zstandard压缩技术引入的Cache Transcoding,Cloudflare不仅显著降低硬件压力,也优化了多中心缓存的带宽分配与容量利用,为云端缓存技术树立了新标杆。这一实践对广大云服务商及网络加速方案具有重要借鉴意义。