Çok Katmanlı Önbellek Hatası
"Daha iyi performans" için L1, L2 ve L3 önbellekleri ekledik. Şimdi verinin yanlış olabileceği 1 yerine 3 yerimiz var.
Harika mimarimiz:
- L1: İşlem içi önbellek (Guava)
- L2: Yerel Redis
- L3: Dağıtılmış Redis kümesi
- Doğruluk kaynağı: PostgreSQL
Ne yanlış gitti:
- L3 önbelleği doğru şekilde geçersiz kılındı
- L2 önbelleğinde hala eski veri vardı (farklı TTL)
- A sunucusundaki L1 önbelleğinde eski veri vardı
- B sunucusundaki L1 önbelleğinde yeni veri vardı
- Kullanıcılar her yenilemede farklı veriler gördü
Hata ayıklama cehennemi:
"Hangi önbellek katmanında bozuk veri var?" her seferinde 2 saatlik bir araştırmaya dönüştü.
Ne öğrendik:
- Her önbellek katmanı, geçersizleştirme karmaşıklığını katlar
- TTL'ler koordine edilmelidir (iç önbellek < dış önbellek)
- Her katmanda gözlemlenebilirliğe ihtiyaç var
- Bazen tek bir önbellek yeterlidir
Ders: Daha fazla önbellek katmanı ≠ daha iyi performans. İşler ters gittiğinde hata ayıklanacak daha fazla yer demektir.