Memcache (d) vs. Varnish para acelerar a arquitetura da web de 3 camadas


111

Estou tentando acelerar meu benchmark (arquitetura da web de 3 camadas) e tenho algumas perguntas gerais relacionadas ao Memcache (d) e ao Varnish.

  • Qual é a diferença?
    Parece-me que o Varnish está por trás do servidor web, armazenando páginas da web em cache e não requer alteração de código, apenas configuração.
    Por outro lado, Memcached é um sistema de cache de propósito geral e usado principalmente para armazenar em cache o resultado do banco de dados e requer mudança no getmétodo (primeira pesquisa de cache).

  • Posso usar os dois? Verniz no servidor web frontal e Memcached para cache de banco de dados?

  • Qual é a melhor opção?

    (cenário 1 - principalmente gravação,
    cenário 2 - principalmente leitura,
    cenário 3 - leitura e gravação são semelhantes)

Respostas:


269
  • O verniz está na frente do servidor da web; ele funciona como um proxy http reverso que armazena em cache.
  • Você pode usar ambos.
  • Principalmente gravação - o verniz precisará remover as páginas afetadas. Isso resultará em uma sobrecarga e poucos benefícios para as páginas modificadas.
  • Principalmente lido - o verniz provavelmente cobrirá a maior parte.
  • Leitura e gravação semelhantes - o Varnish fornecerá muitas páginas para você, o Memcache fornecerá informações para páginas que possuem uma mistura de dados novos e conhecidos, permitindo gerar páginas mais rapidamente.

Um exemplo que poderia se aplicar a stackoverflow.com: adicionar este comentário invalidou o cache da página, então esta página teria que ser limpa do Varnish (e também da minha página de perfil, o que provavelmente não vale a pena para começar. Lembrando de invalidar tudo páginas afetadas podem ser um pouco problemáticas). Todos os comentários, no entanto, ainda estão no Memcache, portanto, o banco de dados precisa apenas escrever este comentário. Nada mais precisa ser feito pelo banco de dados para gerar a página. Todos os comentários são puxados pelo Memcache e a página é armazenada novamente em cache até que alguém a afete novamente (talvez votando minha resposta). Novamente, o banco de dados grava o voto, todos os outros dados são extraídos do Memcache e a vida é rápida.

O Memcache evita que seu banco de dados faça muito trabalho de leitura, o Varnish economiza seu servidor da web dinâmico da carga da CPU, fazendo com que você gere páginas com menos frequência (e torna a carga do banco de dados um pouco mais leve, se não for para o Memcache).


3
isto: "(talvez votando minha resposta)" me fez votar sua resposta
Cesc

portanto, não é recomendado para sites como stackoverflow (ou site como Facebook com página de feed de atividades) usar verniz. é isso?
Mohammad Reza Esmaeilzadeh

@jbferland Minha pergunta no seu exemplo é que o topo desta página tem uma foto minha com o número de pontos que recebi, como podemos armazenar em cache com Varnish, mas mostrar essa área dinâmica?
Hossj

@Hossj usando tags ESI.
Johny Pie

O Varnish pode estar na frente de um servidor web, mas também atrás de um servidor web. Também pode estar ao mesmo tempo na frente e atrás do mesmo servidor da web ;-) Por exemplo, o Varnish não oferece suporte a SSL, então não é incomum ter um servidor da web na frente do Varnish para lidar com HTTPS. O tráfego é então enviado por proxy para o Varnish, que se comunica com o servidor da Web do aplicativo - que pode ser o mesmo servidor que trata o tráfego HTTPS.
Matt

32

Minha experiência vem do uso de Varnish com Drupal. Da forma mais simples possível, eu responderia assim:

Em geral, o Varnish funciona para tráfego não autenticado (via cookie) e o memcached armazenará em cache o tráfego autenticado.

Portanto, use ambos.


5
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.