Arquitetura de software · Dados · 5 min de leitura
Hashing consistente
Distribuir chaves entre servidores de modo que adicionar ou remover um servidor mova só uma pequena parte dos dados.
Arraste para o lado para ver o diagrama inteiro.
O problema do módulo
Com servidor = hash(chave) % N, mudar N (adicionar uma máquina) remapeia quase todas as chaves — o cache inteiro esfria e os dados precisam migrar.
A solução
No hashing consistente, servidores e chaves vivem num anel de valores de hash. Cada chave pertence ao primeiro servidor encontrado no sentido horário. Adicionar ou remover um servidor afeta só o trecho vizinho, em média 1/N das chaves. Nós virtuais (várias posições por servidor) equilibram a carga.
Onde aparece
Caches distribuídos, bancos como Dynamo e Cassandra, balanceadores com afinidade e CDNs.
Em resumo
- Módulo remapeia quase tudo quando N muda.
- Anel move só ~1/N das chaves.
- Nós virtuais equilibram a carga.
- Base de caches e bancos distribuídos.