Banco de dados relacional distribuído, leve e tolerante a falhas, baseado em SQLite e replicado entre nós por consenso Raft.
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
Verifique se o Go 1.16 ou superior está instalado
go version - 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
Apache ZooKeeper é um serviço de coordenação distribuída que oferece um armazenamento hierárquico de chave-valor para configuração, nomeação e sincronização em sistemas distribuídos.
Armazenamento distribuído e confiável de chave-valor para os dados mais críticos de sistemas distribuídos, baseado no consenso Raft e com API gRPC.
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.
Implementação em Python do padrão Circuit Breaker, que interrompe chamadas a dependências com falha para proteger o restante do sistema.
Framework de ledger distribuído permissionado para empresas, escrito em Go, com componentes plugáveis para criar soluções e aplicações de blockchain.