ÖZET VE TEKNİK CEVAP
Sürü etkisi (thundering herd); popüler bir önbellek anahtarı expire olduğunda, eşzamanlı binlerce isteğin aynı anda veritabanına yüklenerek aynı sorguyu paralel çalıştırması ve veritabanını kilitlemesidir.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Yüksek trafikli mimarilerde saniyede binlerce istek aynı önbellek anahtarını okur. TTL bittiği mikro saniyede tüm gelen istekler cache miss alır. İstek birleştirme (single-flight) veya kilit mekanizması yoksa her istek aynı ağır sorguyu veritabanına gönderir.
2. Doğru Kullanım Senaryosu
Önbellek boşalmasının veritabanına doğrudan çarpmasına izin verilemeyecek yüksek trafikli okuma ağırlıklı servisler (ürün katalogları, ana sayfa metadataları, global ayarlar) için zorunludur.
3. Prodüksiyon Arıza Modları
Veritabanı bağlantı havuzunun tükenmesi, %100 CPU doygunluğu, ön yüz servislerinde kademeli timeout patlamaları ve devre kesicilerin devreye girmesi.
4. Teşhis ve Telemetri Sinyalleri
Aynı sorgu parmak izine sahip veritabanı aktif sorgularında ani fırlama ve tek bir anahtarda önbellek isabet oranının %99'dan aniden %0'a çakılması.
5. Önleme ve Mimari Bariyerler
Single-Flight/Mutex kalıbı kullanın (veritabanına sadece 1 worker gider, diğerleri bekler), arka planda olasılıksal erken yenileme (XFetch) yapın ve 'stale-while-revalidate' ile bayat veriye izin verin.
6. Mimari Ödünleşimler (Trade-offs)
Single-flight mutex yapısı hafif bellek kilit karmaşıklığı getirir; stale-while-revalidate ise yeniden hesaplama sırasında kullanıcıların birkaç saniyelik eski veri görmesine neden olur.
Vaka İncelemesi (TinyCTO Örneği)
TinyCTO 15. Bölümde, ana sayfa önbelleği canlı yatırımcı demosu sırasında düştü. 10.000 eşzamanlı istek PostgreSQL ana sunucusuna aynı 12 tablolu JOIN sorgusunu atarak tüm bağlantı havuzunu kilitledi.
İnteraktif Konsept Alıştırmaları
3 AlıştırmaDağıtık önbelleklemede single-flight kalıbı nedir?
XFetch algoritması önbellek izdihamını olasılıksal olarak nasıl önler?
İstemci tarafı sürü etkisini azaltan HTTP başlık kalıbı nedir?
Thundering Herd Problemi (Önbellek İzdihamı) — Sıkça Sorulan Sorular
Redis dağıtık kilidi sürü etkisini tek başına durdurmaya yeterli midir?
Evet, spin-wait veya pub/sub dinleyicisi ile birleştirilirse yeterlidir. Kilidi alan ilk thread veritabanına gider, diğerleri kilit serbest kalınca önbellekten hazır veriyi okur.
Önbellek Delinmesi (Cache Penetration) ile Önbellek İzdihamı (Cache Stampede) arasındaki fark nedir?
Cache Penetration, sistemde hiç var olmayan verilerin sorgulanıp önbelleği delerek sürekli DB'ye gitmesidir. Cache Stampede ise var olan çok popüler bir anahtarın süresi dolduğunda binlerce isteğin aynı anda DB'ye saldırmasıdır.
Toplu önbellek doldururken neden TTL jitter (rastgele sapma) önerilir?
Rastgele jitter (örneğin TTL = 300s ± 30s) eklemek, uygulama başlarken aynı anda yüklenen milyonlarca anahtarın tam aynı saniyede topluca düşmesini engeller.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Sürü etkisi, yüksek eşzamanlılıklı popüler anahtarların süresi dolduğunda patlak verir.
- ▸Single-flight ve stale-while-revalidate, okuma trafiğini arka uç sorgu yükünden tamamen izole eder.
Yaygın Yanılgılar
- ✗Daha fazla read-replica eklemenin sürü etkisini çözeceğini sanmak; single-flight olmadan tüm replikalar aynı anda kilitlenir.
Karar Kılavuzu & Önceliklendirme
Sıcak veri sorgularında uygulama katmanında veya API Gateway seviyesinde mutlaka single-flight mutex mekanizması kullanın.
Doğrulanmış Kaynaklar & Referanslar
- [PAPER]Optimal Probabilistic Cache Stampede Prevention (VLDB)— VLDB Endowment
- [BOOK]Designing Data-Intensive Applications (Chapter 11)— O'Reilly Media
