Como o PHP sabe em qual nó do memcached procura seus dados?

4

Eu sou novo no mundo dos clusters do Memcached

Se eu tiver um aplicativo da web php que esteja usando o memcache - como ele faz seu hash e decida qual nó verificar um valor específico para evitar ter que verificar todos eles.

Bônus: Como posso facilmente adicionar um nó de uma maneira que evite ter que reconstruir todos os hashes.

    
por ckliborn 13.03.2012 / 00:01

1 resposta

2

Os clientes do Memcache sabem qual nó verificar, codificando o valor da chave. Por padrão, ele usa o valor crc32 da chave. No estilo antigo, você faria algo como

serverId = crc32(key) % servers.size

Isso significava que, quando você adicionava um novo nó de servidor, a maioria das coisas seria remapeada para um nó diferente.

Para o seu bônus, use o novo estilo onde cada nó cobre uma variação linear de valores de CRC determinados por um número de servidor selecionado aleatoriamente em vez de um valor de N-ésimo. Isso é chamado hashing consistente.

por 13.03.2012 / 00:50