İçeriğe geç
Muhammet Şafak
en
Soran: Tolga Cevaplandı:

Cloudflare Workers + KV ile edge cache kurarsam invalidation'ı nasıl yaparım?


Soru

API'ımın bazı uçları (örn. dinamik fiyat listeleri) sık değişmiyor ama kullanıcıya en yakın lokasyondan çok hızlı dönmeli. Tüm trafiği origin'e (EC2) indirmek yerine Cloudflare Workers ile istekleri edge'de karşılayıp KV'de önbelleğe almak istiyorum. Cache invalidation'ı nasıl kurmalıyım ki origin'de fiyat değişince edge anında güncellensin?

Cevap

Kısa cevap: Sadece TTL’e güvenme — TTL eventual’dır ve süre dolana kadar eski fiyatı servis eder. Invalidation’ı push-based ve event-driven kur.

Senin senaryonda kabul edilemez olan şey “yanlış fiyat” penceresi. Çözüm, değişikliği edge’e beklemeye bırakmak değil, itmek:

  1. Değişiklikte write-through (veya purge) yap. Origin’de fiyat değiştiği anda, aynı transaction/outbox içinde Cloudflare API’ına çağrı atıp yeni değeri KV’ye yaz ya da key’i sil. Böylece güncelleme yazma işleminin parçası olur, ayrı bir “umarım çalışır” adımı değil.
  2. KV’yi kaynak değil, cache gör. Doğruluk kaynağın origin DB’dir; KV onun hızlı bir kopyasıdır. Bu zihniyet, KV bozulduğunda/tutarsız kaldığında origin’den yeniden besleyebilmeni sağlar.
  3. Key’i entity+version ile kur. Her değeri bir versiyonla damgala (price:42:v7 gibi). Worker, eski versiyonu görürse serve-stale-while-revalidate yapıp arkada güncelleyebilir; kullanıcı beklemez ama yanlış da almaz.
  4. Kısa TTL’i emniyet ağı olarak bırak. Push invalidation bir sebeple kaçarsa, kısa TTL en kötü ihtimalle eskiliği birkaç saniyeyle sınırlar. TTL tek savunma değil, son savunma olsun.
  5. KV’nin global eventual consistency’sini kabul et. KV yazımları dünyaya yayılırken birkaç saniye sürebilir; küçük bir tutarsızlık penceresi kaçınılmaz. Anlık global doğruluk gerekiyorsa KV yanlış katmandır — o zaman origin’e git veya farklı bir tutarlılık modeli seç.

Sonuç: Ben olsam değişiklikte write-through (ya da purge) + kısa TTL emniyet ağı + versiyonlu key üçlüsünü kurardım. TTL-only çözüm fiyat gibi para etkileyen veride yanlış; push-based invalidation ile origin değiştiği an edge güncellenir. KV’nin saniyelik yayılma penceresini bilerek tasarla — onu kaynak değil, hızlı ve tazelenebilir bir cache olarak kullan.

Etiketler: #altyapı#cloudflare#cache
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi