3 katmanlı web mimarisini hızlandırmak için Memcache (d) ve Vernik karşılaştırması


111

Kriterimi (3 katmanlı web mimarisi) hızlandırmaya çalışıyorum ve Memcache (d) ve Varnish ile ilgili bazı genel sorularım var.

  • Fark ne?
    Bana öyle geliyor ki Varnish web sunucusunun arkasında, web sayfalarını önbelleğe alıyor ve kodda değişiklik gerektirmiyor, sadece konfigürasyon.
    Öte yandan, Memcached genel amaçlı bir önbellekleme sistemidir ve çoğunlukla veritabanından alınan sonucu önbelleğe almak için kullanılır ve getyöntemde değişiklik gerektirir (ilk önbellek araması).

  • İkisini de kullanabilir miyim? Ön web sunucusunda vernik ve veritabanı önbelleği için Memcached mi?

  • Daha iyi bir seçenek nedir?

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

Yanıtlar:


269
  • Vernik web sunucusunun önündedir; önbelleğe alan ters http proxy'si olarak çalışır.
  • İkisini de kullanabilirsiniz.
  • Çoğunlukla yazma - Verniğin etkilenen sayfaların temizlenmesi gerekir. Bu, bir ek yüke ve değiştirilmiş sayfalar için çok az faydaya neden olacaktır.
  • Çoğunlukla okunur - Vernik muhtemelen çoğunu kapsayacaktır.
  • Benzer okuma ve yazma - Varnish sizin için birçok sayfa sunacak, Memcache, sayfaları daha hızlı oluşturmanıza olanak tanıyan bilinen ve yeni verilerin bir karışımını içeren sayfalar için bilgi sağlayacaktır.

Stackoverflow.com için geçerli olabilecek bir örnek: bu yorumun eklenmesi sayfa önbelleğini geçersiz kıldı, bu nedenle bu sayfanın Varnish'ten (ve muhtemelen başlangıçta önbelleğe almaya değmeyen profil sayfamdan) temizlenmesi gerekecekti. Hepsini geçersiz kılmayı hatırlamak etkilenen sayfalar biraz sorun olabilir). Bununla birlikte, tüm yorumlar hala Memcache'de olduğundan, veritabanının yalnızca bu yorumu yazması gerekir. Sayfayı oluşturmak için veritabanı tarafından başka bir şey yapılmasına gerek yoktur. Tüm yorumlar Memcache tarafından alınır ve birileri onu tekrar etkileyene kadar (belki de cevabıma oy vererek) sayfa geri alınır. Yine veritabanı oylamayı yazar, diğer tüm veriler Memcache'den çekilir ve hayat hızlıdır.

Memcache, DB'nizi çok fazla okuma işi yapmaktan kurtarır; Varnish, sayfaları daha az sıklıkta oluşturmanızı sağlayarak dinamik web sunucunuzu CPU yükünden kurtarır (ve Memcache için olmasa bile db yükünü biraz hafifletir).


3
bu: "(belki cevabımı oylayarak)" cevabınızı
oylamamı

bu nedenle stackoverflow gibi sitelere (veya etkinlik besleme sayfası olan facebook gibi sitelere) vernik kullanmaları önerilmez. bu mu?
Mohammad Reza Esmaeilzadeh

@jbferland Örneğinizdeki sorum şu ki, bu sayfanın üst kısmında aldığım puanların olduğu bir fotoğrafım var, Varnish ile nasıl önbelleğe alabiliriz ama bu alan dinamiğini gösterebiliriz?
Hossj

@Hossj, ESI etiketlerini kullanıyor.
Johny Pie

Vernik bir web sunucusunun önünde olabilir, aynı zamanda web sunucusunun arkasında da olabilir. Aynı zamanda aynı web sunucusunun önünde ve arkasında olabilir ;-) Örneğin, Varnish SSL'yi desteklemez, bu nedenle Varnish'in önünde HTTPS'yi işleyecek bir web sunucusunun olması alışılmadık bir durum değildir. Trafik daha sonra Varnish'e vekaleten bağlanır ve bu sunucu daha sonra uygulama web sunucusuyla iletişim kurar - bu, HTTPS trafiğini işleyenle aynı sunucu olabilir.
matt

32

Deneyimim Varnish'i Drupal ile kullanmaktan geliyor. Mümkün olduğunca basit terimlerle, şöyle cevap vereceğim:

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

Bu yüzden ikisini de kullanın.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.