Memcached - um grande servidor vs vários menores

5

Estou considerando se devemos obter um servidor grande (48 Gb de RAM) ou comprar 4 servidores menores (12 Gb de RAM) para executar o serviço do memcached. Em ambos os casos, eu também teria peças de reserva para redundância, e eu seria capaz de adicionar mais servidores, se necessário mais tarde, então essa questão é puramente sobre desempenho, não tolerância a falhas ou escalabilidade.

Eu estou inclinado a ter um grande servidor apenas porque é mais fácil de gerenciar, "mais verde" e ocupa menos espaço, mas não sei se ele pode funcionar como um conjunto de servidores menores.

Qualquer ideia seria muito apreciada!

    
por Andrey 27.11.2010 / 22:01

3 respostas

1

Andrey,

Para responder à sua pergunta, encaminho você para o snippet abaixo. A biblioteca do cliente memcache de desempenho inteligente ainda estaria fazendo duas pesquisas internas, independentemente de você ter 1 ou mais instância.

Mas ter apenas uma instância pode prejudicar, porque levaria algum tempo para o backup se aquecer quando estiver on-line.

link Uma solicitação para obter / definir uma chave com um valor requer que a chave seja executada por meio de uma função hash. Uma função hash é uma função unidirecional que mapeia uma chave (seja numérica ou string) para algum número que será o número do depósito. Depois que o número do intervalo tiver sido calculado, a lista de nós desse bloco será pesquisada, procurando o nó com a chave especificada. Se não for encontrado, um novo pode ser adicionado à lista.

Então, como isso se relaciona com o Memcached? Memcached apresenta ao usuário uma interface de dicionário (chave - > valor), mas é implementado internamente como um hash de duas camadas. A primeira camada é implementada na biblioteca do cliente; decide qual servidor Memcached enviará a solicitação, codificando a chave para uma lista de buckets virtuais, cada um representando um servidor Memcached. Uma vez lá, o servidor Memcached selecionado usa uma tabela de hash típica.

    
por 28.11.2010 / 04:45
1

Lembre-se de que quanto mais clientes do memcached você tem, mais conexões você precisa abrir. Se for um serviço da Web em execução no pré-forking do Apache e você quiser controlar 10.000 conexões simultâneas, a diferença entre um servidor e 4 é de 30.000 conexões TCP.

No que diz respeito ao desempenho, depende da sua aplicação. Mas ter 4 servidores pode fornecer 4x mais CPUs e 4x quantas interfaces de rede, a menos que você realmente reforce esse servidor central. Acima de um certo ponto, o custo desse tipo de atualização não é linear (um sistema de 32 núcleos custará mais do que 4x o custo de um quad core de dois soquetes, por exemplo). Mas, eu não vi o memcached ser limitado pela CPU normalmente, então é definitivamente plausível que o servidor único não tenha que ser um servidor tão sofisticado.

Mas, como acontece com muitas coisas, provavelmente é algo que você precisa testar para si mesmo com seus aplicativos específicos. Parece-me provável que um único servidor de 48GB possa lidar com a carga, então tente obter um servidor modesto com 48GB de RAM, coloque o munin nele e faça alguns testes de estresse. Se você encontrar gargalos, você tem mais informações sobre se precisa obter mais 3 servidores e espalhar a RAM ao redor deles, ou talvez tomar alguma outra ação.

    
por 28.11.2010 / 09:14
0

Bem, você tem certeza de que é mais verde? Eu prefiro ter vários, apenas por confiabilidade e para manter a escala em sua cabeça.

    
por 28.11.2010 / 02:41

Tags