Mimari (IT)Sistem Mühendisi

Coğrafi olarak dağıtılmış milyonlarca düğüme temizleme olaylarını alt saniye gecikme ile ileten, merkezi koordinasyon dar boğazları olmaksızın tam bir kez yürütme garantisi veren, vektör saat uzlaşması ile keyfi ağ bölünmelerine tolerans gösteren, epidemik-fısıldama tabanlı bir kenar önbellek geçersiz kılma altyapısının mimarisini aydınlatın?

Hintsage yapay zeka asistanı ile mülakatları geçin

Sorunun Cevabı

Sorunun Tarihçesi

Eski İçerik Dağıtım Ağı (CDN) geçersiz kılma komutlarını proxy sunucuların hiyerarşik ağaçları aracılığıyla ileten merkezi geçersiz kılma API'lerini kullanıyordu. Bu mimariler, dakikalar ile saatler arasında değişen yayılma gecikmeleri yarattı ve bölgesel kesintiler sırasında tek bir arıza noktası oluşturdu. E-ticaret ve finansal ticaret platformlarındaki gerçek zamanlı kişiselleştirme gereksinimlerinin ortaya çıkması, gezegen ölçeğinde düğüm dağıtımları arasında bir saniyenin altındaki geçersiz kılma gecikmelerini gerektirdi. Bu mimari zorluk, ağa bölünme senaryolarında mücadele eden erken Memcached ve Redis küme senkronizasyon desenlerinden evrildi. Modern gereksinimler, kesin doğrusal tutarlılığı feda ederek yükseklik ile uygunluğu koruyan tamamen merkeziyetsiz bir yaklaşım gerektirmektedir.

Problem

Temel gerginlik, merkezi bir koordinatör ya da ortak WAL (Önce Yazma Günlüğü) olmaksızın önbellek geçersiz kılma olayları için nedensel tutarlılığı sağlamada yatmaktadır. Geleneksel uzlaşma protokolleri, Raft veya Paxos gibi, milyonlarca kenar düğümü için kabul edilemez gecikme getirir ve verimlilik dar boğazları haline gelir. Sistemin, ağ bölünmeleri iyileştiğinde çatışmaları çözmesi gerekir ve bağımlı güncellemelerden sonra eski verilerin asla sunulmamasını sağlamalıdır. Ayrıca güvenilmez bir fısıldama ağındaki temizleme işlemleri için tam bir kez anlamlarını sağlamak karmaşık tekrar önleme mekanizmaları gerektirir. Temizleme fırtınalarının köken aşırı yüklemesine neden olmasını önlemek son kritik kısıtlamayı oluşturur.

Çözüm

Nedensellik takibi için Versiyon Vektörleri kullanan epidemik bir fısıldama protokolü uygulayın. Her kenar düğümü, köken sunucu tarafından geçersiz kılma olaylarını takip eden yerel bir vektör saatini korur ve aldığında rastgele komşularına olayları fısıldar. Nedensel sıralama, vektör saat karşılaştırmasıyla belirlenir; bu, bağımlı güncellemelerin merkezi bir koordinasyon olmaksızın sıra ile işlenmesini sağlar. Tam bir kez anlamına, her düğümde çoktan seçmeli TTL pencereleri için hashed olay ID'lerini depolayan Bloom filtreleri aracılığıyla uygulanır. Temel gecikme zirveleri tetiklendiğinde adaptif fısıldama fan-out azalması uygulayarak Devre Kesici desenleri ile geri basınç uygulanır.

Hayattan Bir Durum

Küresel bir kripto para borsa platformu, içerik hızlandırması için Cloudflare ve AWS CloudFront kullanarak 12 coğrafi bölgede 500 kenar düğümü işletiyordu. Kritik bir piyasa volatilitesi olayında, ticaret motoru, merkezi PostgreSQL veritabanında varlık fiyatlarını güncelledi ancak eski önbellek geçersiz kılma süreci küresel çapta 4-7 dakika sürdü. Bu gecikme, ticaretçilerin mobil uygulamada eski fiyatlar görmesine neden oldu ve arbitraj kayıplarına ve düzenleyici incelemeye yol açtı. Platform, bu zorluğu çözmek için üç belirgin mimari yaklaşımı değerlendirdi.

İlk çözüm, her bölgede bir Kafka kümesi dağıtmayı ve MirrorMaker 2.0 kullanarak geçersiz kılma olaylarını bölgelere çoğaltmayı önerdi. Bu yaklaşım, bölümlerde güçlü dayanıklılık garantileri ve sıralama anlamsallığı sundu. Ancak, bölge arası çoğaltma gecikmesi ortalama 800 ms ile 500 ms gereksinimini aştı. Her kenar lokasyonda Apache Kafka kümelerini sürdürmek için altyapı maliyeti, öngörülen 50,000 düğüm ölçeği için ekonomik açıdan ağır geldi.

İkinci çözüme, geçersiz kılma mesajlarını iletmek için bir Redis Kümesi ile Pub/Sub mekanizmalarını uygulamak dahil edildi. Bu, alt milisaniye yerel yayılım ve tanıdık operasyonel anlama sağladı. Ancak, Redis Kümesi, kararlı ağ koşulları gerektirir; bölünme olayları sırasında, küme geçersiz kılma mesajlarını düşüren koruyucu bir moda girdi ve kullanılabilirlik gereksinimlerini ihlal etti. Ayrıca, Redis Pub/Sub kesin bir kez teslimatı garanti etmez ve kitlesel geçersiz kılma olayları sırasında önbellek fırtınasına neden olabilir.

Üçüncü çözüm, CRDT tabanlı nedensellik takibi ile epidemik bir fısıldama protokolü kullanıldı. Her kenar sunucusu, geçersiz kılma olaylarının vektör saatlerini koruyarak hafif bir GossipSub uygulaması çalıştırdı. Çözüm, tüm düğümler arasında ortalama 200 ms yayılma gecikmesine ulaştı, keyfi ağ bölünmelerini nihai tutarlılık uzlaşması ile atlattı ve Kafka yaklaşımına kıyasla %90 daha az bant genişliği tüketti. Ekip, bu mimariyi, tek bir arıza noktasını ortadan kaldırdığı ve kullanım durumları için CAP teoremi öncelikleriyle uyumlu olduğu için seçti. Uygulamanın ardından, önbellek geçersiz kılma gecikmesi P99'da 150 ms'ye düştü ve sistem, simüle edilmiş bir 3 saat bölgesel ağ kesintisi sırasında tutarlılığı başarıyla korudu.

Adayların Sıklıkla Gözden Kaçırdığı Noktalar


Vektör saat uzlaşması, merkezi bir koordinasyon olmaksızın neden-sonuç ihlallerini nasıl engelliyor?

Vektör saatleri, her olayın köken aldığı her düğüme monoton bir sayaç atar. Bölünmeler iyileştiğinde, düğümler anti-entope oturumları aracılığıyla vektör saat durumlarını değiş tokuş eder. Eğer vektör saat A, tüm boyutlarda B'den az veya eşitse, A nedensel olarak B'yi takip eder. Aynı anda gerçekleşen güncellemeler, Son-Yazma-Kazanan gibi uygulamaya özgü çatışma çözümü tetikler veya her iki sürümün de saklanmasını sağlayan Çoklu Sürüm Eşzamanlılık Kontrolü kullanır.


Neden Bloom filtreleri, bu spesifik fısıldama bağlamında tam bir kez gereksinimini dağıtılmış işlem günlüklerinden daha iyi karşılıyor?

Bloom filtreleri, düğümlerin tam mesaj geçmişlerini saklamadan tekrar eden geçersiz kılma olaylarını reddetmesini sağlayan, alan açısından verimli olasılıksal üye testleri sunar. Milyonlarca olayın saniye içinde işlendiği yüksek hızlı bir fısıldama ağında, ZooKeeper veya etcd gibi dağıtılmış bir işlem günlüğü sürdürmek, kabul edilemez bir koordinasyon gecikmesine yol açar. Bloom filtreleri yanlış pozitifleri kabul etmesine rağmen, hash fonksiyonu sayısı ve bit dizi boyutunu ayarlamak kayda değer şekilde hatasız oranlar elde eder. Bu durum, zamanla göreceli önbellekler için optimaldir; nadir tekrar eden geçersiz kılmalar zararsızdır ancak tekrar eden köken istekleri maliyetlidir.


Kitlesel geçersiz kılma olayları sırasında fısıldama protokollerinin ağ bant genişliğini aşırı yüklemesini önleyen özel mekanizma nedir ve bu, TCP tıkanıklık kontrolünden nasıl farklıdır?

Fısıldama protokolleri, ağ telemetrisine ve köken sağlık metriklerine dayalı olarak adaptif fanout uygular. Devre Kesiciler, köken gecikmesinin kötüleştiğini tespit ettiğinde, düğümler fısıldama fan-out'larını k=4'ten k=1'e veya önemsiz trafiği durduracak şekilde azaltır. Bu uygulama katmanı akış kontrolü, bireysel bağlantı gerilmesini yöneten TCP tıkanıklık kontrolünden farklıdır. Özet Temelli Fısıldama, tam durum aktarımından önce yalnızca vektör saat özetleri göndererek bant genişliğini %95 azaltır.