CloudflareのインターンがZstandardとPingoraでキャッシュ保存をペタバイト単位で節約する方法を試作

We could save petabytes of cache storage with Zstandard and Pingora

CloudflareのインターンがZstandardとPingoraでキャッシュ保存をペタバイト単位で節約する方法を試作

Cloudflareは、キャッシュに保存する前にZstandard(zstd)で圧縮する「Cache Transcoding」というシステムを試作しました。Pingoraプロキシに実装されたこのシステムは、CPU使用率をわずかに増やす代わりに、キャッシュの実効容量を大幅に拡大し、データセンター間の転送量を削減します。対象となるテキスト資産は平均で約3分の1のサイズに縮小され、推定でペタバイト規模のキャッシュ容量を節約できる可能性があります。画像や動画など既に圧縮済みのメディアは対象外で、4KiB以上の圧縮可能なテキストのみが対象です。

圧縮コストは資産がキャッシュに入るときに一度だけ支払われ、ストレージと帯域幅の節約はその資産が再利用されるたびに続きます。
  1. r3trohack3r

    少し関連する話ですが、私は数年前に同様のアプローチでnpmレジストリのディスク使用量を90%以上削減しました。パッケージのほとんどのバージョンは似ているので、最初にデルタエンコードしてから圧縮できます。デルタは小さく、元のソースファイルと一緒にコレクションとして圧縮するとよく圧縮されます。

    別のユースケースでは、圧縮する前に、ローリングハッシュを使用してファイルを決定的に分割しました。次にチャンクを圧縮し、CIDファイルシステムに保存しました。その結果、大部分が類似したファイルは圧縮チャンクを共有します。

    私たちが持っているコンピュータを大幅に効率的に使うためにできることはたくさんありますが、エンジニアはしばしばハードウェアよりもコストがかかります。最近のサプライチェーンの制約により、その計算は変わりつつあります!

  2. thinkindie

    オリジンが非圧縮ファイルを提供しているのに、クライアントが圧縮をサポートしているなら、圧縮して提供しないのはなぜですか?

  3. CodesInChaos

    これがレンジリクエストにどのように影響するのか混乱しています。圧縮がない場合、キャッシュされた完全なファイルの関連部分を読み取ることで簡単に満たせます。しかし、現在はどのように処理されるのでしょうか?記事は「レンジリクエストは変更されない」と主張していますが、キャッシュが非圧縮データを保存しなくなった場合、それがどのように可能なのかわかりません。

この日のほかの記事

2026-09-02