2010-12-20 18 views
98

Karşılaştırmalı çalışmamı hızlandırmaya çalışıyorum (3 katmanlı web mimarisi) ve Memcache (d) ve Vernik ile ilgili bazı genel sorularım var.Memcache (d) vs 3 katmanlı web mimarisini hızlandırmak için vernik

  • Fark nedir? Varnish web sunucusunun arkasında, web sayfalarını önbelleğe alır ve kodda, yalnızca yapılandırmada değişiklik gerektirmez.
    Diğer tarafta, Memcached genel amaçlı önbelleğe alma sistemidir ve çoğunlukla veritabanından alınan sonucu önbelleğe almak için kullanılır ve get yönteminde değişiklik yapılması gerekir (ilk önbellek araması).

  • İkisini birden kullanabilir miyim? Ön ağ sunucusu vernik ve veritabanı önbellekleme için Memcached?

  • Daha iyi bir seçenek nedir?

    (senaryo 1-
    senaryo 3, daha çok okuma - - çoğunlukla
    senaryo 2, yazma okuma ve yazma benzerdir)

cevap

249
  • Vernik webserver önünde olduğu; önbelleğe alan bir ters http proxy olarak çalışır.
  • Her ikisini de kullanabilirsiniz. Çoğunlukla yazma - Vernik etkilenen sayfaların temizlenmesini gerektirecektir. Bu, değiştirilmiş sayfalar için genel gider ve az fayda sağlayacaktır.
  • Çoğunlukla okuma - Vernik muhtemelen büyük bir kısmını kapsayacaktır.
  • Benzer okuma & write - Varnish sizin için bir çok sayfa sunacak, Memcache sayfaları daha hızlı üretebilmenizi sağlayan bilinen ve yeni verilerin bir karışımını içeren sayfalar için bilgi sağlayacaktır.

stackoverflow.com uygulanabilecek bir örnek: Bu yorum sayfası önbelleği geçersiz ekleyerek, bu nedenle bu sayfayı Varnish temizlendiği (ve ayrıca muhtemelen değer önbelleğe alma değil benim profil sayfası, başlamak zorunda kalacak Etkilenen tüm sayfaları geçersiz kılmayı hatırlamanız biraz sorun olabilir). Bununla birlikte, tüm yorumlar hala Memcache'de bulunuyor, bu yüzden veritabanı sadece bu yorumu yazmak zorunda. Sayfayı oluşturmak için veritabanı tarafından başka bir şey yapılmasına gerek yoktur. Tüm yorumlar Memcache tarafından çekilir ve birileri tekrar etkileyene kadar sayfa yeniden başlatılır (belki de cevabımı oylayarak). Yine, veritabanı oylamayı yazar, tüm diğer veriler Memcache'den çekilir ve hayat hızlıdır.

Memcache, DB'nizi çok sayıda okuma işi yapmaktan kurtarır; Varnish, dinamik web sunucunuzu CPU yükünden daha az sıklıkta üreterek (ve Membache için olmasa bile db yükünü biraz da hafifletir) kaydeder.

+8

+1 Mükemmel cevap. – AlienWebguy

+0

Arazi eşlemesi, teşekkürler! – Silopolis

+3

this: "(belki de cevabımı oylayarak)" cevabınızı bana – Cesc

24

Deneyimlerim, Drupal ile Varnish kullanarak geliyor. Mümkün olduğu kadar basit bir şekilde, şu şekilde cevap veririm:

Genel olarak, Varnish kimliği doğrulanmamış (çerez aracılığıyla) trafik için çalışır ve memcached doğrulanmış trafiği önbelleğe alır.

Her ikisini de kullanın.

+4

Bunu çivilenmişsiniz, bu arada Vernik anonim kullanıcılara önbellekleme konusunda daha iyi çalışır diye düşünüyorum ... –