Memcached em um ambiente de nuvem: servidor dedicado ou localhosts?

1

Eu sou um novato, então me desculpem se estiver faltando alguma coisa óbvia, já que minha pesquisa não me levou muito a se relacionar com nossa situação um tanto singular.

Vou fazer a transição de um aplicativo php para servidores baseados em nuvem que estão atualmente em execução em um único servidor usando o memcached no localhost para armazenar quantidades extremamente pequenas de dados por usuário (não dados da sessão, apenas dados transitórios de alta acessibilidade que é específico do usuário). Estamos tentando tornar isso escalável, já que nosso servidor da Web atual está começando a limitar as conexões simultâneas do apache durante raros momentos de pico de carga.

Estaremos executando os servidores da web em nuvem por meio de um balanceador de carga com a viscosidade da sessão, mas estou frustrado ao decidir adaptar o aplicativo para se conectar ao memcached em um servidor dedicado autônomo para que o pool de memória possa ser compartilhado por todos os servidores da Web, ou manter uma parte da memória de cada servidor em nuvem para o memcached e manter o aplicativo apontado no host local, confiando na rigidez da sessão para garantir que o servidor que mantém a sessão também mantenha os dados do usuário em sua memória. >

Meu pensamento atual é que um servidor memcached dedicado seria uma implementação mais limpa, mas possivelmente mais complicada de dimensionar a longo prazo se acabarmos expandindo nosso uso do memcached para dados mais complexos. Considerando que a manutenção de instâncias do memcached em execução em cada servidor de nuvem introduziria mais recursos sempre que servidores adicionais fossem necessários (novamente, assumindo que o servidor que mantém a sessão do usuário possa procurar com segurança os dados do usuário armazenados em cache).

Eu valorizo a opinião de ninguém, insight, ou apontando quaisquer falhas na minha compreensão.

    
por JR.Xyza 20.04.2013 / 01:58

1 resposta

1

Eu diria que as duas formas estão corretas, mas eu me inclino levemente a usar o memcached por servidor. Contanto que você não tenha dados compartilhados no memcached.

Com o memcached compartilhado, você obtém:

  • maior latência
  • tráfego de LAN mais alto
  • estabilidade dos dados armazenados em cache no caso de fialure do servidor da web (o servidor que assume ainda tem todas as informações)
  • você perde todos os dados em cache em caso de falha do servidor memcache (essa pode ser a única preocupação que vejo)
    • você pode executar dois, mas isso reduz o orçamento

Com memcached por servidor, você obtém

  • menor latência
  • menor tráfego
  • em caso de failover para outro servidor, não há dados antigos
  • mas no caso de um servidor falhar, nenhum outro servidor perde nada
  • e é mais barato
por 25.04.2013 / 08:46