Arquitetura de software · Confiabilidade e segurança · 8 min de leitura
Consenso distribuído com Raft
Como vários servidores concordam sobre uma única sequência de decisões mesmo quando alguns caem: um líder eleito replica um log e só confirma o que a maioria gravou.
Arraste para o lado para ver o diagrama inteiro.
O problema
Replicar dados entre servidores é fácil enquanto nada falha. O difícil é garantir que todos apliquem as mesmas operações na mesma ordem quando há quedas, redes partidas e mensagens atrasadas — sem dois servidores se achando “o chefe” ao mesmo tempo. Isso é consenso. O Paxos resolveu primeiro, mas é famoso por ser difícil; o Raft (2014) foi desenhado para ser entendido.
Eleição de líder
- Cada nó é seguidor, candidato ou líder. O tempo é dividido em mandatos numerados.
- Se um seguidor fica sem ouvir o líder por um tempo aleatório (no artigo, 150–300 ms), vira candidato, aumenta o mandato e pede votos.
- Quem recebe a maioria vira líder e manda batimentos periódicos. O tempo aleatório evita empates repetidos.
- Um nó só vota em candidato cujo log esteja pelo menos tão atualizado quanto o seu — assim nenhum líder novo “esquece” entradas confirmadas.
Replicação do log
Toda escrita vai ao líder, que acrescenta a entrada ao seu log e envia aos seguidores (AppendEntries). Quando a maioria gravou, a entrada está confirmada: o líder aplica à máquina de estados (o banco chave-valor, por exemplo) e responde ao cliente. Seguidores atrasados recebem as entradas que faltam depois.
Na prática
- Com 2f + 1 nós, o cluster aguenta f falhas: 3 nós aguentam 1; 5 aguentam 2. Número par não ajuda.
- Usado no etcd (o “cérebro” do Kubernetes), Consul, CockroachDB, TiKV e no modo KRaft do Kafka.
- Raramente você implementa: usa um sistema pronto para eleição de líder, travas distribuídas e configuração.
- Cada escrita espera a maioria: latência de rede entre regiões pesa.
Em resumo
- Consenso: mesma sequência de operações em todos os nós.
- Um líder por mandato, eleito pela maioria.
- Entrada confirmada quando a maioria gravou.
- 2f + 1 nós aguentam f falhas.
- Use pronto: etcd, Consul, ZooKeeper.
Vantagens e custos
- Consistência forte mesmo com falhas.
- Mais fácil de entender e verificar que o Paxos.
- Base de travas distribuídas e eleição de líder.
- Toda escrita passa pelo líder (gargalo).
- Sem maioria, o cluster para de aceitar escritas.
- Latência alta entre regiões distantes.
Perguntar à IA
Monte um prompt pronto sobre Consenso distribuído com Raft na sua linguagem e no seu caso, e abra num chat gratuito.
O prompt vai para o site que você escolher. Não cole senhas, tokens nem dados reais de clientes. Para Gemini e outros, copie e cole.