Sobre o projeto
hashicorp/raft é uma biblioteca Go que implementa o algoritmo de consenso Raft, fornecendo uma base para construir máquinas de estado replicadas em sistemas distribuídos. A biblioteca gerencia um log replicado e integra-se com uma abstração de máquina de estado finito (FSM) para manter estado consistente entre múltiplos nós.
As principais capacidades incluem:
- **Eleição de Líder**: Os nós transitam entre os estados de seguidor, candidato e líder. Os seguidores autopromovem-se a candidatos se nenhuma entrada for recebida durante um período de timeout, e então solicitam votos aos pares. Um candidato que recebe um quórum de votos torna-se líder.
- **Replicação de Log**: O líder anexa novas entradas de log (blobs binários opacos) ao armazenamento durável e as replica para um quórum de seguidores. Uma vez confirmadas, as entradas são aplicadas à FSM.
- **Snapshots Automáticos**: Para evitar o crescimento ilimitado do log, o Raft automaticamente tira snapshots do estado atual da FSM e compacta o log, removendo entradas que já foram aplicadas.
- **Gerenciamento Dinâmico de Pares**: A biblioteca suporta adicionar e remover nós do cluster desde que um quórum esteja disponível.
- **Backends de Armazenamento**: O backend principal MDBStore está em um repositório separado (raft-mdb), e um backend puro em Go usando BoltDB está disponível (raft-boltdb). Ambos podem servir como implementações de LogStore e StableStore.
- **Emissão de Métricas**: Suporta métricas via armon/go-metrics (padrão) ou hashicorp/go-metrics (via build tag), com um caminho de migração da biblioteca armon obsoleta.
A biblioteca requer Go 1.16+ e é licenciada sob MPL 2.0. É baseada no artigo Raft 'In Search of an Understandable Consensus Algorithm' e é comparável em desempenho ao Paxos, com latência de commit de log limitada por I/O de disco e round trips de rede para metade do cluster.
Tamanhos de cluster recomendados são 3 ou 5 nós, que toleram 1 ou 2 falhas de nó respectivamente enquanto maximizam a disponibilidade. A biblioteca é usada por produtos HashiCorp como Consul e Nomad para coordenação distribuída.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.