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)
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).
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.
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.
fonte