Cloudflare, yeni donanım eklemeden önbellek ağının gerçek kapasitesini artırmanın bir yolunu test ediyor. Bunun için Pingora tabanlı altyapı içinde bazı metin varlıkları Zstandard algoritmasıyla sıkıştırılıyor. Şirketin Cache Transcoding adını verdiği prototip, verilerin disklerde kapladığı alanı ve önbellek katmanları ile veri merkezleri arasında aktarılan veri miktarını azaltmayı amaçlıyor.
Uygun bir yanıt önbelleğe girdiğinde, diske yazılmadan önce verileri zstd kullanılarak sıkıştırılmış bir temsile dönüştürülüyor. Varlıklar önbellekte bulundukları süre boyunca ve Tiered Cache üzerinden aktarılırken bu biçimde kalıyor, ardından istemciye gönderilmeden önce açılıyor. Böylece dosyanın kendisi değişmiyor; Zstandard kayıpsız bir sıkıştırma algoritması olduğundan, açma işleminden sonra her bayt özgün hâline geri dönüyor.
Sınırlı işlem maliyetine karşılık büyük sonuç
İlk testlerde, uygun varlıkların diskteki boyutu ortalama olarak özgün boyutlarının yaklaşık üçte birine indi. Kontrollü test grubunda sıkıştırma oranı 2.834 kat oldu. Kodlama maliyeti bayt başına 4.31 nanosaniye veya saniyede yaklaşık 232 megabayt olarak ölçüldü ve önbellek doldurulurken yalnızca bir kez ödendi. Buna karşılık açma maliyeti bayt başına 1.56 nanosaniye veya saniyede yaklaşık 641 megabayt oldu ve her sunum işleminde ödendi.
Deneyde, yürütme hızı ile çıktı boyutu arasında denge sağladığı için Zstandard’ın üçüncü seviyesi kullanılıyor. Cloudflare’ın modeline göre, şirketin test ettiği trafik ve yeniden kullanım varsayımları kapsamında işlemci kullanımındaki artış birkaç yüzde puanında kaldı. Veri boyutunun küçültülmesi ayrıca her sunucunun daha fazla öğe tutmasını sağlıyor ve gereğinden fazla alan kaplaması nedeniyle yararlı içeriğin önbellekten çıkarılma olasılığını azaltıyor.
Cloudflare neden her şeyi sıkıştırmıyor?
Mekanizma tüm içerik türlerini hedeflemiyor. Görseller, videolar ve yazı tipleri genellikle zaten sıkıştırılmış durumda; bunlar trafik örneğinde isteklerin %21.4’ünü oluştururken toplam baytların %63.3’ünü temsil etti. Bu verileri yeniden sıkıştırmak, kayda değer bir tasarruf sağlamadan işlemci tüketebilir.
Buna karşılık HTML, JSON, CSS ve JavaScript isteklerin yaklaşık %67.3’ünü ve baytların %22.3’ünü oluşturdu. Bu metin yanıtlarının yaklaşık %71’i kaynaktan Content-Encoding olmadan geliyordu ve bu nedenle sıkıştırma için uygun adaylardı. Prototip, Content-Encoding belirtmeyen, sıkıştırılabilir bir metin içerik türüne sahip olan ve uzunluğu bilinen en az 4 KiB boyutundaki 200 OK yanıtlarıyla sınırlı.
Aralık istekleri, kaynak tarafından önceden sıkıştırılmış yanıtlar, kısmi aralık istekleri, uzunluğu bilinmeyen gövdeler ve ikili içerik değiştirilmeden bırakılıyor. Cloudflare, 4 KiB sınırının çok sayıda küçük isteği elediğini, ancak aksi takdirde uygun olacak baytların yalnızca yaklaşık %1’ini dışarıda bıraktığını tespit etti.
Mekanizma depolama katmanlarında nasıl çalışıyor?
Önbellekte tam bir kaçırma gerçekleştiğinde, üst seviye kaynaktan sıkıştırılmamış verileri alıyor, ardından verileri bir kez sıkıştırıp zstd biçiminde depoluyor. Bu sıkıştırılmış biçim alt seviyeye aktarılıyor; alt seviye veriyi saklıyor ve yalnızca istemciye yönelen istek yolunda açıyor. Öğe yalnızca üst seviyede bulunuyorsa, kaynağa yeniden başvurulmadan alt seviyeye taşınabiliyor.
Öğe alt seviyede bulunduğunda ağ aktarımına veya yeni bir kodlamaya gerek kalmıyor; zstd verileri diskten okunuyor, açılıyor ve yanıt yoluna aktarılıyor. Sistem, öğenin sıkıştırılmış biçimde depolandığını meta verilerinde kaydediyor ve depolama katmanları arasında taşınırken yeniden sıkıştırılmasını önlüyor.
certi.news değerlendirmesi: Deney gerçekte neyi kanıtlıyor?
Deney, verilerin doğrudan depolama katmanı içinde küçültülmesinin yalnızca önbellek doldurma sürecini iyileştirmekten daha büyük kümülatif bir etkiye sahip olabileceğini gösteriyor. Sıkıştırma maliyeti öğe sisteme girerken ödenirken, depolama ve bant genişliği tasarrufu öğe her yeniden kullanıldığında tekrarlanıyor. Bu durum, özellikle yerel kapasitenin tutulabilecek içerik miktarıyla, katmanlar arasındaki veri aktarımının ise dahili ağ tüketimiyle bağlantılı olduğu geniş ölçekli dağıtım ağı işletmecileri için önem taşıyor.
Ancak sonuçlar, 2.8 katlık oranın tüm internet içeriğini veya Cloudflare’ın tüm altyapısını temsil ettiği anlamına gelmiyor. Performans testi on önbellek sunucusu üzerinden bir milyondan fazla isteğe dayanıyordu; ancak boyutları yaklaşık 195 ve 272 KiB olan, belirgin biçimde sıkıştırılabilir iki örnek öğe kullanıldı. Şirket, bu oranın filonun tamamını temsil ettiğinin kabul edilebilmesi için daha geniş bir içerik türleri ve boyutları kümesine ihtiyaç olduğunu belirtiyor.
Cloudflare, daha yüksek zstd seviyelerini test etmeyi, içerik ve boyut kapsamını genişletmeyi, uygunluk koşullarını ayarlamayı ve aralık istekleri ile önceden sıkıştırılmış yanıtları incelemeyi planlıyor. Bu nedenle Cache Transcoding, mevcut makalede belirli koşullar altında başarılı bir prototip olarak kalıyor; Cloudflare trafiğinin tamamına yönelik nihai bir genelleme duyurusu değil.