Ticketing
Documentação

Parâmetros do Raft

ItemValor
Intervalo de heartbeat250ms
Timeout de eleição500-1000ms — uma nova eleição de líder começa dentro dessa janela após uma falha do líder
Número de nós3 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ó
Bootstrap500ms após a inicialização, todo nó se inicializa com a mesma membership — ignorado se estiver entrando em um cluster já inicializado
Armazenamento de logem memória (volátil) — um nó reiniciado se recupera via replicação/snapshot
Detecção de expiração do leaseo líder verifica a cada 100ms e confirma (commit) o Expire via consenso
Granularidade do timeout de waito 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ósMaioriaFalhas simultâneas toleradas
220 — uma única falha para o cluster. Não é melhor que o modo single
321
431 — igual a 3 nós, só custa mais
532

Resumo do Comportamento em Falhas

SituaçãoComportamento
Requisição de cliente a um nó não-líderM (endereço do líder), ou E no_leader se o líder for desconhecido
Falha do lídernovo 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íderrequisiçõ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 perdidacommits 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.