10 de Junho de 2025
Consistent hashing na prática
Como consistent hashing reduz o caos de redistribuir chaves quando um no entra ou sai do cluster.
Andrews Ribeiro
Founder & Engineer
4 min Avancado Sistemas
O problema
Imagine um cluster de cache com 10 servidores.
Você manda cada chave para um servidor usando:
hash(chave) % 10
Funciona bem até o dia em que entra mais um servidor.
Agora a conta vira:
hash(chave) % 11
Resultado: uma quantidade enorme de chaves muda de lugar. O cache praticamente invalida inteiro. O banco toma a pancada.
Esse e o problema que consistent hashing tenta resolver.
Modelo mental
Consistent hashing tenta fazer duas coisas ao mesmo tempo:
- distribuir chaves
- mexer no menor número possível delas quando o cluster muda
Em vez de pensar em “servidor 1, 2, 3”, pense em um anel.
Tanto os servidores quanto as chaves sao posicionados nesse anel por uma função de hash. Cada chave vai para o primeiro servidor encontrado no sentido horario.
Quando um servidor entra ou sai, só as chaves daquela vizinhanca precisam ser movidas. O resto continua onde estava.
Essa e a ideia central.
Nao significa “nenhuma chave se move”. Significa “um pedaco bem menor se move”. E exatamente isso que torna a tecnica valiosa.
Quebrando o problema
O problema do hashing simples
Hash simples com % N depende diretamente do número de nos.
Se N muda, a conta muda para quase todo mundo. E por isso que quase todas as chaves pulam de servidor.
Para carga distribuida isso e ruim porque:
- inválida cache em massa
- gera pico na origem
- torna reequilibrio muito caro
Como funciona o anel de consistent hashing
No anel, você não pensa “essa chave vai para o servidor 3”. Você pensa “essa chave cai em um ponto do anel e anda no sentido horario até encontrar um servidor”.
Se um novo servidor entra entre dois pontos, só as chaves daquele trecho passam a apontar para ele.
Essa propriedade e o coracao do tema.
Virtual nodes: por que e como
Se voce tiver poucos servidores fisicos, o anel pode ficar desigual. Um no pode acabar com uma faixa grande demais.
Virtual node e a ideia de colocar vários pontos do mesmo servidor no anel.
Em portugues simples:
- um servidor fisico aparece várias vezes no anel
- isso ajuda a espalhar melhor a carga
- quando um servidor sai, a redistribuição fica mais suave
Onde consistent hashing e usado na prática
Ele aparece muito em:
- cache distribuido
- particionamento por chave
- roteamento de dados por dono
- alguns bancos e sistemas de armazenamento
Nao e um tema de concurso. E um mecanismo pratico para fazer cluster crescer sem jogar tudo para cima.
Também vale lembrar o que ele não resolve sozinho:
- hot key
- no lento
- desbalanceamento causado por chave ruim de negócio
Consistent hashing melhora redistribuição. Não apaga todos os problemas de distribuição.
Como consistent hashing aparece em entrevistas
Geralmente aparece quando o entrevistador percebe que você propoe vários nos e quer saber como as chaves vao parar em cada um.
Se você disser só “divido por hash” e parar ali, pode perder um ponto importante: o que acontece quando o cluster muda.
Exemplo simples
Imagine um cache distribuido para perfil de usuário.
Com % N, adicionar um servidor numa promocao grande pode mover quase tudo. O cache esquenta do zero. A origem sofre.
Com consistent hashing, a entrada do novo servidor move só uma parte das chaves. O resto do cluster continua atendendo normalmente. O aquecimento acontece em pedaco menor e com menos trauma.
Nao e magia. Ainda existe redistribuicao. So deixa de ser uma avalanche.
Erros comuns
- Explicar só o anel sem antes mostrar o problema do
% N. - Ignorar o papel de virtual nodes.
- Falar de consistent hashing como se resolvesse tudo sozinho.
- Usar o termo para parecer profundo sem ligar a um caso concreto.
- Esquecer que hot key continua sendo problema mesmo com distribuição boa.
Como um senior pensa
Quem tem mais experiencia costuma comecar pelo motivo de existir:
“Eu não quero que mudar o tamanho do cluster invalide quase todas as chaves.”
Só depois entra no anel, nos virtuais e detalhes.
Isso melhora muito a explicacao porque o leitor entende primeiro a dor e depois a tecnica.
Em trabalho real, isso também ajuda a evitar uso teatral. Se o cluster quase nunca muda ou se a redistribuição não e cara, talvez o ganho não pague a complexidade. O tema vale quando o custo de mexer em muitas chaves ao mesmo tempo realmente machuca.
O que o entrevistador quer ver
Em entrevista, consistent hashing fica forte quando você:
- explica o fracasso do
% N - mostra por que o anel reduz redistribuição
- cita virtual nodes sem transformar isso em ritual
- conecta o tema a cache ou sharding real
Consistent hashing nao e sobre desenhar um circulo bonito. E sobre crescer um cluster sem chacoalhar quase todas as chaves junto.
Resumo rápido
O que vale manter na cabeça
- Hash simples com `% N` muda quase tudo quando `N` muda.
- Consistent hashing move só parte pequena das chaves ao adicionar ou remover no.
- Virtual nodes ajudam a distribuir melhor a carga entre poucos servidores.
- O tema aparece muito em cache distribuido, particionamento e roteamento por chave.
Checklist de pratica
Use isto ao responder
- Consigo explicar por que `% N` quebra quando um servidor entra?
- Sei descrever o anel de forma simples?
- Consigo explicar por que virtual nodes existem?
- Sei citar onde isso aparece na prática?
Você concluiu este artigo
Próximo passo
Replicação e sharding sem mistério Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.