117 Stimmen

Memcache(d) vs. Varnish zur Beschleunigung der 3-Tier-Webarchitektur

Ich versuche, meinen Benchmark zu beschleunigen (3-Tier-Web-Architektur), und ich habe einige allgemeine Fragen zu Memcache(d) und Varnish.

  • Worin besteht der Unterschied?
    Es scheint mir, dass Lackierung befindet sich hinter dem Webserver, cached Webseiten und erfordert keine Änderung des Codes, sondern nur der Konfiguration.
    Auf der anderen Seite, Memcached ist ein Allzweck-Caching-System und wird hauptsächlich zum Zwischenspeichern von Ergebnissen aus der Datenbank verwendet und erfordert eine Änderung der get Methode (erste Cache-Suche).

  • Kann ich beides verwenden? Varnish im vorderen Webserver und Memcached für das Datenbank-Caching?

  • Was ist die bessere Lösung?

    (Szenario 1 - meist schreiben,
    Szenario 2 - meist gelesen,
    Szenario 3 - Lesen und Schreiben sind ähnlich)

279voto

Jeff Ferland Punkte 17180
  • Varnish ist dem Webserver vorgeschaltet; es arbeitet als Reverse-HTTP-Proxy, der zwischenspeichert.
  • Sie können beides verwenden.
  • Hauptsächlich schreiben - Varnish muss die betroffenen Seiten bereinigen. Dies führt zu einem Mehraufwand und wenig Nutzen für geänderte Seiten.
  • Hauptsächlich gelesen - Lack wird wahrscheinlich das meiste abdecken.
  • Ähnliches Lesen und Schreiben - Varnish wird einen Großteil der Seiten für Sie bereitstellen, Memcache liefert Informationen für Seiten, die eine Mischung aus bekannten und neuen Daten enthalten, so dass Sie Seiten schneller generieren können.

Ein Beispiel, das auf stackoverflow.com zutreffen könnte: Das Hinzufügen dieses Kommentars hat den Seiten-Cache ungültig gemacht, so dass diese Seite aus Varnish gelöscht werden muss (und auch meine Profilseite, die es wahrscheinlich nicht wert ist, gecacht zu werden. Die Erinnerung an die Ungültigmachung aller betroffenen Seiten könnte ein kleines Problem darstellen). Alle Kommentare befinden sich jedoch weiterhin im Memcache, so dass die Datenbank nur diesen Kommentar schreiben muss. Die Datenbank braucht nichts weiter zu tun, um die Seite zu erzeugen. Alle Kommentare werden von Memcache abgerufen, und die Seite wird zwischengespeichert, bis jemand sie erneut beeinflusst (vielleicht indem er für meine Antwort stimmt). Wieder schreibt die Datenbank die Abstimmung, alle anderen Daten werden aus dem Memcache gezogen, und das Leben ist schnell.

Memcache erspart Ihrer DB eine Menge Lesearbeit, Varnish erspart Ihrem dynamischen Webserver CPU-Last, indem es dafür sorgt, dass Sie weniger häufig Seiten generieren (und entlastet die DB auch ein wenig, wenn Memcache nicht wäre).

34voto

Joe Hyde Punkte 979

Meine Erfahrung stammt aus der Verwendung von Varnish mit Drupal. In möglichst einfachen Worten, hier ist, wie ich antworten würde:

Im Allgemeinen arbeitet Varnish mit unauthentifiziertem (via Cookie) Datenverkehr, während memcached authentifizierten Datenverkehr zwischenspeichert.

Verwenden Sie also beides.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X