Repolode
hashicorp

hashicorp/raft

Biblioteca Go que implementa o protocolo de consenso Raft para gerenciar logs replicados e máquinas de estado replicadas.

Estrelas
9,161
Forks
1,105
Issues abertas
73
Último commit
há 20 dias

O que é?

raft é uma biblioteca Go que implementa o algoritmo de consenso Raft. Ela gerencia um log replicado e permite que a aplicação conecte sua própria máquina de estados finitos (FSM), para que vários nós apliquem a mesma sequência de comandos e mantenham estados idênticos. A biblioteca foi projetada para criar sistemas distribuídos consistentes e tolerantes a partições (CP), com certo grau de tolerância a falhas.

A biblioteca cuida da eleição de líder, da replicação de logs, do controle de commits e da criação automática de snapshots com compactação de logs para limitar o uso de disco. Os clusters normalmente são executados com 3 ou 5 servidores, tolerando, respectivamente, a falha de um ou dois nós. É possível alterar a composição do cluster dinamicamente, desde que haja um quorum disponível. A biblioteca também oferece servidores sem direito a voto e um provedor de endereços configurável na camada de transporte.

Os backends de armazenamento do log e do armazenamento estável são separados: a biblioteca baseada em Bbolt, escrita em Go puro, raft-boltdb é mencionada como referência, e um backend baseado em MDB fica em seu próprio repositório. As métricas podem ser emitidas por armon/go-metrics ou hashicorp/go-metrics, selecionados por build tag.

Recursos principais

  • 01Eleição de líder e replicação de logs conforme o protocolo Raft
  • 02Interface de máquina de estados finitos configurável para a lógica da aplicação
  • 03Criação automática de snapshots e compactação de logs
  • 04Alterações dinâmicas na composição do cluster e servidores sem direito a voto
  • 05Backends de armazenamento configuráveis para o log e o armazenamento estável

Casos de uso

  • Criar um armazenamento de chave-valor replicado ou outro serviço fortemente consistente
  • Manter metadados consistentes em um pequeno cluster de servidores
  • Adicionar alta disponibilidade baseada em líder a um serviço Go

Início rápido

  1. 1

    Verifique se o Go 1.16 ou superior está instalado

    go version
  2. 2

    Leia a documentação Godoc da biblioteca

Antes de usar

  • Esta é uma biblioteca Go, não um servidor independente; portanto, você precisa criar sua própria FSM e camada de transporte.
  • Os backends de log persistente recomendados (raft-mdb) estão em repositórios separados, e o raft-mdb precisa de cgo.

Em coleções

Tópicos

Perguntas frequentes

O que é raft?
Biblioteca Go que implementa o protocolo de consenso Raft para gerenciar logs replicados e máquinas de estado replicadas. raft é uma biblioteca Go que implementa o algoritmo de consenso Raft. Ela gerencia um log replicado e permite que a aplicação conecte sua própria máquina de estados finitos (FSM), para que vários nós apliquem a mesma sequência de comandos e mantenham estados idênticos. A biblioteca foi projetada para criar sistemas distribuídos consistentes e tolerantes a partições (CP), com certo grau de tolerância a falhas.
raft é gratuito? Qual é a licença?
raft é open source sob a licença MPL-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
raft ainda é mantido?
Manutenção ativa. O último commit de raft foi em 18 de out. de 2026.
Para que posso usar raft?
Criar um armazenamento de chave-valor replicado ou outro serviço fortemente consistente Manter metadados consistentes em um pequeno cluster de servidores Adicionar alta disponibilidade baseada em líder a um serviço Go
Como instalar raft?
Verifique se o Go 1.16 ou superior está instalado: go version Leia a documentação Godoc da biblioteca
Onde consigo raft?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/hashicorp/raft

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados

Biblioteca leve de tolerância a falhas para Java, com decorators de circuit breaker, rate limiter, retry, bulkhead e time limiter para código funcional.

Backend e APIs#java#fault-tolerance#circuit-breaker
10,8 mil+3 esta semana1,5 milJavaApache-2.0Atualizado há 9 dias

Implementação em Python do padrão Circuit Breaker, que interrompe chamadas a dependências com falha para proteger o restante do sistema.

Backend e APIs#circuit-breaker#resilience#fault-tolerance
701+2 esta semana96PythonBSD-3-ClauseAtualizado mês passado