Parâmetros do Raft
| Item | Valor |
|---|---|
| Intervalo de heartbeat | 250ms |
| Timeout de eleição | 500-1000ms — uma nova eleição de líder começa dentro dessa janela após uma falha do líder |
| Número de nós | 3 ou 5 (aplicado no carregamento da configuração — qualquer outro valor recusa iniciar) |
| ID do nó | sua posição (cluster_self) na lista cluster_peers — por isso a ordem da lista deve ser idêntica em todo nó |
| Bootstrap | 500ms após a inicialização, todo nó se inicializa com a mesma membership — ignorado se estiver entrando em um cluster já inicializado |
| Armazenamento de log | em memória (volátil) — um nó reiniciado se recupera via replicação/snapshot |
| Detecção de expiração do lease | o líder verifica a cada 100ms e confirma (commit) o Expire via consenso |
Granularidade do timeout de wait | o timeout de espera (T) também é decidido no mesmo tick de 100ms — pode chegar com até 100ms de atraso |
Por Que 3 ou 5 Nós
Um commit precisa de uma maioria. Uma configuração com número par de nós apenas aumenta o custo sem aumentar a tolerância a falhas, então o servidor a recusa.
| Número de nós | Maioria | Falhas simultâneas toleradas |
|---|---|---|
| 2 | 2 | 0 — uma única falha para o cluster. Não é melhor que o modo single |
| 3 | 2 | 1 |
| 4 | 3 | 1 — igual a 3 nós, só custa mais |
| 5 | 3 | 2 |
Resumo do Comportamento em Falhas
| Situação | Comportamento |
|---|---|
| Requisição de cliente a um nó não-líder | M (endereço do líder), ou E no_leader se o líder for desconhecido |
| Falha do líder | novo líder eleito dentro de 500-1000ms. Requisições durante essa janela recebem E no_leader → o cliente tenta novamente |
| No meio de uma troca de líder | requisições de aquisição pendentes são limpas com M/E no_leader, e o cliente tenta novamente contra o novo líder |
| Reinício de nó | inicia com estado vazio → se atualiza via replicação de log/snapshot de um par |
| Maioria perdida | commits se tornam impossíveis → escritas param (segurança em primeiro lugar), retomando automaticamente assim que a maioria é restaurada |
Terminologia
- Quorum — mais da metade de todos os nós (2 de 3, ou 3 de 5). Como qualquer decisão exige o acordo do quorum, dois grupos particionados nunca conseguem confirmar decisões conflitantes ao mesmo tempo.
- Timeout de eleição — por quanto tempo um seguidor espera sem um heartbeat antes de concluir que o líder morreu e iniciar uma eleição. Randomizado por nó para reduzir candidaturas simultâneas.