Caching İşlemleri ve Dogpile Effect


dogpileCaching’in islemlerinde geleneksel olarak kullandigimiz yaklasim;

1) Istedigimiz bilgi cache’de var mi? Varsa onu kullan

2) Istedigimiz bilgi cache’de yok, bilgiyi uret ve cache’e at.

Muhtemelen bu yaklasim, pek cok projede patlamadan calisir ama anlik kullanicinin yuksek oldugu sistemlerde bir soruna sebep olur, soyle ki;

dog-pile

Bu prolemi “dogpile effect” olarak tanimlamislar, yukaridaki senaryoda ikinci yaklasimda “bilgiyi uret” kisminda devreye giriyor. Eger anlik olarak bir suru istek geliyorsa, ve o sirada cache yoksa tum uygulama sunuculari bu bilgiyi uretmeye calisiyor. (bilgiden kastimiz, api sonucu olabilir, db sorgusu olabilir vs…)

Iste bu problemi ortadan kaldirmak icin onumuze iki cozum cikiyor;

1) Locking mekanizmasi kurmak
2) Pre-warm caching

Locking Mekanizmasi;

Locking’in mantigi soyle, web makinelerinden hangisi cache’i uretmeye basliyorsa cache keyini kilitliyor, diger makinelerde cache uretmeden once kilit durumunu kontrol ettigi icin dog-pile sorunu cozuluyor.

Farkli dillerde degisik implemantasyonlari vardir, misal PHP icin metaphore‘u onerebilirim.

Pre-warm caching

Bundaki mantik, cache’nin expire suresi cok uzun oluyor, ve cache’i periyordik olarak cronla vs.. urettiriyoruz. Boylece son kullanici sureki expire olmamis key’e istek gonderiyor ve sistemin stabil olarak calismasini sagliyoruz.

Yine de birinci yontem daha akilci 😉

Zaten ornekleri var diye, isin kod tarafina bulasmadim, mantigini bilsek zaten “how to xyz with abc…” aramalarindan insanin ogrenecegi cok sey var.

Pro Tip: Varnish default olarak dog-pile etkisinden koruyacak sekilde geliyor. – https://www.varnish-cache.org/lists/pipermail/varnish-misc/2010-June/018637.html

Tavsiye;

http://emre.sh/yuksek-concurrency-oldugu-sistemlerde-caching/

http://aykutfarsak.com/cache-sistemlerinde-dog-pile-effect-den-korunmak

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s