2010-12-20 14 views
98

Estoy tratando de acelerar mi punto de referencia (arquitectura web de 3 niveles), y tengo algunas preguntas generales relacionadas con Memcache (d) y Barniz.Memcache (d) vs. Varnish para acelerar la arquitectura web de 3 niveles

  • ¿Cuál es la diferencia?
    Me parece que Varnish está detrás del servidor web, el almacenamiento en caché de páginas web y no requiere cambio de código, solo configuración.
    Por otro lado, Memcached es un sistema de caché de uso general y se utiliza principalmente para almacenar en caché el resultado de la base de datos y requiere un cambio en el método get (primera búsqueda de caché).

  • ¿Puedo utilizar ambos? ¿Barniz en el servidor web frontal y Memcached para el almacenamiento en caché de la base de datos?

  • ¿Cuál es la mejor opción?

    (escenario 1 - en su mayoría escribir,
    escenario 2 - en su mayoría leer,
    escenario 3 - leer y escribir son similares)

Respuesta

249
  • El barniz es en frente del servidor web; funciona como un proxy http inverso que se almacena en caché.
  • Puede usar ambos.
  • Principalmente escribir: el barniz deberá tener las páginas afectadas depuradas. Esto dará como resultado una sobrecarga y poco beneficio para las páginas modificadas.
  • Lea principalmente: es probable que el barniz cubra la mayor parte.
  • similar lea & write - Varnish le servirá muchas de las páginas, Memcache proporcionará información para páginas que tienen una mezcla de datos conocidos y nuevos que le permiten generar páginas más rápido.

Un ejemplo que podría aplicarse a stackoverflow.com: añadir este comentario invalida la memoria caché de la página, por lo que esta página tendría que ser eliminado del barniz (y también mi página de perfil, que probablemente no vale la pena el almacenamiento en caché para comenzar con. Recordar invalidar todas las páginas afectadas puede ser un problema). Todos los comentarios, sin embargo, están todavía en Memcache, por lo que la base de datos solo tiene que escribir este comentario. La base de datos no debe hacer nada más para generar la página. Todos los comentarios son extraídos por Memcache, y la página se vuelve a almacenar hasta que alguien la vuelva a afectar (quizás votando mi respuesta). De nuevo, la base de datos escribe el voto, todos los demás datos se extraen de Memcache, y la vida es rápida.

Memcache evita que su base de datos trabaje mucho, Varnish guarda su servidor web dinámico de la carga de la CPU al generar páginas con menos frecuencia (y aligera la carga de datos también si no es para Memcache).

+8

+1 excelente respuesta. – AlienWebguy

+0

¡Mapa de la tierra, gracias! – Silopolis

+3

esto: "(quizás al votar mi respuesta)" me hizo votar su respuesta – Cesc

24

Mi experiencia proviene del uso de barniz con Drupal. En términos tan simples como sea posible, así es como respondería:

En general, Varnish funciona para tráfico no autenticado (a través de cookies) y memcached almacenará en caché el tráfico autenticado.

Utilice ambos.

+4

Lo has encontrado, por cierto, creo que Varnish funciona mejor en el almacenamiento en caché de usuarios anónimos ... –

Cuestiones relacionadas