web-dev-qa-db-fra.com

Memcache (d) vs Varnish pour accélérer l'architecture Web à 3 niveaux

J'essaie d'accélérer mon benchmark (architecture Web à 3 niveaux) et j'ai des questions générales concernant Memcache (d) et Varnish.

  • Quelle est la différence?
    Il me semble que Varnish est derrière le serveur web, met en cache les pages web et ne nécessite pas de changement de code, juste de la configuration.
    De l'autre côté, Memcached est un système de mise en cache à usage général et principalement utilisé pour mettre en cache le résultat de la base de données et nécessite une modification de get (première recherche de cache).

  • Puis-je utiliser les deux? Vernis sur le serveur Web frontal et Memcached pour la mise en cache de la base de données?

  • Quelle est la meilleure option?

    (scénario 1 - surtout écrire,
    scénario 2 - principalement lu,
    scénario 3 - lecture et écriture sont similaires)

110
user449219
  • Le vernis est devant le serveur Web; il fonctionne comme un proxy http inverse qui met en cache.
  • Vous pouvez utiliser les deux.
  • Surtout écrivez - Le vernis devra avoir les pages affectées purgées. Cela entraînera des frais généraux et peu d'avantages pour les pages modifiées.
  • Surtout lu - Le vernis couvrira probablement la majeure partie de celui-ci.
  • Lecture et écriture similaires - Varnish servira une grande partie des pages pour vous, Memcache fournira des informations pour les pages qui ont un mélange de données connues et nouvelles vous permettant de générer des pages plus rapidement.

Un exemple qui pourrait s'appliquer à stackoverflow.com: l'ajout de ce commentaire a invalidé le cache de page, donc cette page devrait être effacée de Varnish (et aussi ma page de profil, qui ne vaut probablement pas la peine d'être mise en cache au départ. N'oubliez pas d'invalider tout les pages concernées peuvent être un peu problématiques). Cependant, tous les commentaires sont toujours dans Memcache, donc la base de données n'a qu'à écrire ce commentaire. Rien d'autre ne doit être fait par la base de données pour générer la page. Tous les commentaires sont extraits par Memcache, et la page est mise en cache jusqu'à ce que quelqu'un l'affecte à nouveau (peut-être en votant ma réponse). Encore une fois, la base de données écrit le vote, toutes les autres données sont extraites de Memcache et la vie est rapide.

Memcache enregistre votre base de données de faire beaucoup de travail de lecture, Varnish enregistre votre serveur Web dynamique de la charge CPU en vous faisant générer des pages moins fréquemment (et allège également la charge de la base de données si ce n'est pour Memcache).

267
Jeff Ferland

Mon expérience vient de l'utilisation de Varnish avec Drupal. En termes aussi simples que possible, voici comment je répondrais:

En général, Varnish fonctionne pour le trafic non authentifié (via cookie) et memcached mettra en cache le trafic authentifié.

Utilisez donc les deux.

32
Joe Hyde