Memcache (d) vs. Varnish per accelerare l'architettura web a 3 livelli


111

Sto cercando di accelerare il mio benchmark (architettura web a 3 livelli) e ho alcune domande generali relative a Memcache (d) e Varnish.

  • Qual è la differenza?
    Mi sembra che Varnish sia dietro il server web, memorizza nella cache le pagine web e non richiede modifiche nel codice, solo configurazione.
    Dall'altro lato, Memcached è un sistema di memorizzazione nella cache di uso generale e principalmente utilizzato per memorizzare nella cache i risultati dal database e richiede una modifica del getmetodo (prima ricerca nella cache).

  • Posso usare entrambi? Vernice nel server web anteriore e Memcached per la memorizzazione nella cache del database?

  • Qual è un'opzione migliore?

    (scenario 1 - principalmente scrittura,
    scenario 2 - principalmente lettura,
    scenario 3 - lettura e scrittura sono simili)

Risposte:


269
  • Varnish è davanti al webserver; funziona come un proxy http inverso che memorizza nella cache.
  • Puoi usare entrambi.
  • Per lo più scrivi - Varnish dovrà aver eliminato le pagine interessate. Ciò comporterà un sovraccarico e uno scarso vantaggio per le pagine modificate.
  • Principalmente letto - Varnish coprirà probabilmente la maggior parte di esso.
  • Lettura e scrittura simili: Varnish servirà molte pagine per te, Memcache fornirà informazioni per le pagine che hanno un misto di dati noti e nuovi che ti consentiranno di generare pagine più velocemente.

Un esempio che potrebbe applicarsi a stackoverflow.com: l'aggiunta di questo commento invalidava la cache della pagina, quindi questa pagina avrebbe dovuto essere cancellata da Varnish (e anche la mia pagina del profilo, che probabilmente non vale la pena memorizzare nella cache per cominciare. Ricordando di invalidare tutto le pagine interessate potrebbero rappresentare un problema). Tutti i commenti, tuttavia, sono ancora in Memcache, quindi il database deve solo scrivere questo commento. Nient'altro deve essere fatto dal database per generare la pagina. Tutti i commenti vengono estratti da Memcache e la pagina viene spostata nella cache finché qualcuno non la tocca di nuovo (forse votando la mia risposta). Di nuovo, il database scrive il voto, tutti gli altri dati vengono estratti da Memcache e la vita è veloce.

Memcache salva il tuo DB dal fare un sacco di lavoro di lettura, Varnish salva il tuo server web dinamico dal carico della CPU facendoti generare pagine meno frequentemente (e alleggerisce un po 'anche il carico del db se non per Memcache).


3
questo: "(forse votando la mia risposta)" mi ha fatto votare la tua risposta
Cesc

quindi non è consigliabile che siti come stackoverflow (o siti come Facebook con pagina di feed attività) utilizzino la vernice. è?
Mohammad Reza Esmaeilzadeh

@jbferland La mia domanda nel tuo esempio è che la parte superiore di questa pagina ha una mia foto con il numero di punti che ho ricevuto, come possiamo memorizzare nella cache con Varnish ma mostrare quell'area dinamica?
Hossj

@ Hossj utilizzando i tag ESI.
Johny Pie

La vernice potrebbe trovarsi davanti a un server web ma anche dietro al server web. Può anche essere contemporaneamente davanti e dietro lo stesso server web ;-) Ad esempio, Varnish non supporta SSL quindi non è raro avere un server web davanti a Varnish per gestire HTTPS. Il traffico viene quindi inviato tramite proxy a Varnish che quindi comunica con il server Web dell'applicazione, che potrebbe essere lo stesso server di quello che gestisce il traffico HTTPS.
opaco

32

La mia esperienza deriva dall'utilizzo di Varnish con Drupal. In termini più semplici possibile, ecco come risponderei:

In generale, Varnish funziona per il traffico non autenticato (tramite cookie) e memcached memorizzerà il traffico autenticato.

Quindi usa entrambi.


5
Hai inchiodato, tra l'altro penso che Varnish
funzioni
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.