Ölçüm tutunacak bir şey bulamayınca: anycast ve önbellek verimliliği
Improving Smart Tiered Cache for Public Cloud Regions · Chenxi Zhang
2021'de çıkan Smart Tiered Cache'in fikri basitti: sitenin arkasındaki her kaynak (origin) için Cloudflare, gerçek zamanlı gecikme ölçümlerine bakarak tek bir en iyi üst katman veri merkezi seçer. Tek anahtarı çevirirsin, ağdan kaynağına en hızlı yol bulunur.
Bu, bir kaynak IP'si sabit bir yerde durduğu sürece çalışıyor. Genel bulut kaynakları genelde durmuyor. Anycast ya da bölgesel unicast ön yüzlerin arkasında oturuyorlar; yani tek bir kaynak IP'si aynı anda bir düzine Cloudflare veri merkezine eşit derecede yakın görünebiliyor — ve gecikme ölçümlerinin tutunacak bir şeyi kalmıyor.
Smart Tiered Cache bu durumu güvenli yoldan ele alıyor: net bir kazanan yoksa birden fazla üst katmana düşüyor. Hiçbir şey bozulmuyor. Sadece tek bir en yakın katmanı değerli kılan şeyi kaybediyorsun: önbellek verimliliği. Çünkü aynı içerik birden fazla üst katmanda ayrı ayrı önbelleklenir; her biri kaynağa ayrı gider.
Çözüm bir bölge ipucu (region hint) vermene izin vermek. Bu ipuçla Cloudflare, kaynak IP'si her yere yakın görünse bile bulut kaynağını doğru bölgeye eşleyip daha iyi birincil ve yedek üst katman seçebiliyor.
Öne çıkanlar
- Sessiz bozulma (graceful degradation) doğru tasarım — ama neyi kaybettiğini bilmek gerekiyor: burada kaybedilen doğruluk değil verimlilik.
- Anycast bir adresi çok yerde duyurur; bu ağ katmanında harika, ama "nerede?" sorusunu cevapsız bırakır.
- Otomatik keşif başarısız olduğunda çözüm, insanın bildiği bilgiyi sisteme ipucu olarak vermek.
Neden önemli?
Her otomatik optimizasyon bir varsayıma dayanır. Bu yazı o varsayımı ("kaynak sabit bir yerdedir") ve çürüdüğünde ne olduğunu açıkça gösteriyor. Kendi sistemlerinde de sor: bu otomatik davranış hangi varsayıma dayanıyor ve varsayım bozulduğunda sistem ne yapıyor — gürültülü mü başarısız oluyor, yoksa sessizce mi kötüleşiyor?
Sende karşılığı
İki kavram burada senin için kritik. Anycast: aynı IP adresinin dünyada birçok noktadan duyurulması, trafiğin en yakın noktaya gitmesi. 1.1.1.1 ve 8.8.8.8 böyle çalışır. Katmanlı önbellek: uç sunucuların doğrudan kaynağa gitmek yerine bir ara önbellek katmanından geçmesi — 100 uç sunucu ıskaladığında kaynağa 100 değil 1 istek gider. Bu ikinci fikri kendi ölçeğinde de kur: Spring Boot uygulamanda uygulama içi önbellek (Caffeine) ile paylaşılan Redis önbelleğini birlikte kullanmak tam olarak katmanlı önbellektir ve veritabanına giden yükü ciddi düşürür.
Sözlük
- anycast anycast
- Aynı IP adresinin birden çok konumdan duyurulması; ağ, isteği en yakın konuma yönlendirir.
- tiered cache katmanlı önbellek
- Uç önbelleklerin kaynağa doğrudan gitmek yerine bir ara önbellek katmanından geçmesi; kaynak yükünü azaltır.
- graceful degradation kademeli bozulma
- Bir bileşen ideal çalışamadığında sistemin tamamen durmak yerine daha düşük verimle çalışmaya devam etmesi.