Cloudflareは最近、対象となるキャッシュコンテンツ(主にHTML、JSON、CSS、JavaScriptなどの非圧縮テキスト)を、ディスクに保存する前にZstandardを使用して圧縮する「Cache Transcoding」と呼ばれるプロトタイプを説明しました。ハイパースケーラーは、このアプローチによりペタバイト規模の追加の有効キャッシュ容量が提供される可能性があると見積もっていますが、さらに広範なテストがまだ必要です。

この記事によると、コンテンツはキャッシュに入るときに一度圧縮され、提供されるときに解凍されるため、必要な追加処理は比較的少ないとのことです。圧縮により、対象となるコンテンツのサイズが約 2.8 倍に縮小され、既存のサーバーにより多くのデータを保存できるようになり、データセンター間で転送されるデータ量が削減されました。

これを実現するために、Cloudflareは、Facebookがリアルタイム使用のために開発した可逆圧縮アルゴリズムであるZstandardと、RustベースのプロキシフレームワークであるPingoraを利用しています。アーシ・パテルはこう書いている。

CPU をわずかに増やすと、Cloudflare にペタバイトの有効キャッシュ容量が与えられ、データセンター間で転送されるデータが削減されます。エンコードコストは、アセットがキャッシュに入るときに一度だけ支払われます。資産が再利用されるたびに、ストレージと帯域幅の節約が継続されます。

Cloudflareキャッシュのトランスコーディングは、圧縮可能なテキストを含み、正しく返され、少なくとも4 KiBである非圧縮応答のみを圧縮します。範囲リクエスト、事前圧縮またはバイナリ コンテンツ、サイズが不明な応答を除外します。このしきい値は、対象となるデータの約 1% だけを犠牲にしながら、多くの小さなオブジェクトの処理を回避します。このしきい値と Zstandard 圧縮レベルは両方とも、CPU とストレージのトレードオフに基づいて調整できます。パテルは次のように付け加えます。

トランスコーディングは、すべてを圧縮することを意味するわけではありません。画像、ビデオ、フォントは通常、すでに圧縮されています。私たちのトラフィック サンプルでは、​​このメディア セグメントはリクエストの 21.4% を占めましたが、バイト数の 63.3% を占めていました。再度圧縮すると、無駄に CPU が消費されてしまいます。

Cloudflareによると、HTML、JSON、CSS、JavaScriptなどの圧縮可能なテキストがリクエストの67.3%、バイト数の22.3%を占めています。このコンテンツのうち、約 71% は圧縮されていない状態で到着し、効果的に圧縮できました。

Cloudflareキャッシュのトランスコーディング

出典: Cloudflareブログ

一部の専門家はエンコード/デコード手法における「トランスコーディング」という言葉の使用に疑問を抱いていますが、Hacker News では圧縮オプションについて議論する専門家もいます。 Cloudflareは当初、トランスコーディングを人気のあるコンテンツに限定することを検討していたため、ユーザーは メイユルC 書く:

奇妙なことに、デコード中の CPU 時間を節約することが目的であれば、代わりにコールド コンテンツを圧縮したでしょう。

ユーザー コードインカオス 代わりにこう尋ねてください。

これが間隔リクエストにどのような影響を与えるかについては混乱しています。圧縮を行わない場合は、キャッシュされたファイル全体の関連部分を読み取ることで簡単に満たすことができます。しかし、それらは現在どのように扱われているのでしょうか?

ローカル キャッシュおよびキャッシュ層間の転送に対する圧縮の影響を測定するために、階層化キャッシュを使用した場合と使用しないテストが実行されました。プロトタイプはまだ開発中であり、さまざまな圧縮レベル、コンテンツ タイプ、オブジェクト サイズ、キャッシュ シナリオでさらなるテストが計画されています。





Source link