Base de datos relacional distribuida, ligera y tolerante a fallos, basada en SQLite y replicada entre nodos mediante consenso Raft.
hashicorp/raft
Una biblioteca de Go que implementa el protocolo de consenso Raft para gestionar logs replicados y máquinas de estados replicadas.
- Estrellas
- 9,162
- Forks
- 1,104
- Issues abiertos
- 73
- Último commit
- hace 19 días
¿Qué es?
raft es una biblioteca de Go que implementa el algoritmo de consenso Raft. Gestiona un log replicado y permite que una aplicación conecte su propia máquina de estados finitos (FSM), para que varios nodos apliquen la misma secuencia de comandos y mantengan un estado idéntico. Está diseñada para crear sistemas distribuidos consistentes y tolerantes a particiones (CP), con cierto grado de tolerancia a fallos.
La biblioteca se encarga de la elección del líder, la replicación del log, el seguimiento de las confirmaciones y la creación automática de snapshots con compactación del log para limitar el uso de disco. Los clústeres suelen ejecutarse con 3 o 5 servidores, lo que permite tolerar, respectivamente, el fallo de uno o dos nodos. Se admiten cambios dinámicos de membresía siempre que haya un quórum disponible. También incluye servidores sin derecho a voto y un proveedor de direcciones configurable en la capa de transporte.
Los backends de almacenamiento del log y del almacén estable son independientes: se hace referencia a raft-boltdb, basado en Bbolt y escrito íntegramente en Go, y existe un backend basado en MDB en su propio repositorio. Las métricas pueden emitirse mediante armon/go-metrics o hashicorp/go-metrics, según la etiqueta de compilación.
Funciones clave
- 01Elección del líder y replicación del log según el protocolo Raft
- 02Interfaz configurable de máquina de estados finitos para la lógica de la aplicación
- 03Creación automática de snapshots y compactación del log
- 04Cambios dinámicos en la membresía del clúster y servidores sin derecho a voto
- 05Backends de almacenamiento configurables para el log y el almacén estable
Casos de uso
- Crear un almacén de clave-valor replicado u otro servicio con consistencia fuerte
- Mantener la coherencia de los metadatos en un clúster pequeño de servidores
- Añadir alta disponibilidad basada en un líder a un servicio de Go
Inicio rápido
- 1
Comprueba que tienes instalado Go 1.16 o una versión posterior
go version - 2
Lee la documentación Godoc de la biblioteca
Antes de usarlo
- Es una biblioteca de Go, no un servidor independiente, así que debes crear tu propia FSM y capa de transporte.
- Los backends de registro persistente recomendados (raft-mdb) están en repositorios separados, y raft-mdb necesita cgo.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es raft?
- Una biblioteca de Go que implementa el protocolo de consenso Raft para gestionar logs replicados y máquinas de estados replicadas. raft es una biblioteca de Go que implementa el algoritmo de consenso Raft. Gestiona un log replicado y permite que una aplicación conecte su propia máquina de estados finitos (FSM), para que varios nodos apliquen la misma secuencia de comandos y mantengan un estado idéntico. Está diseñada para crear sistemas distribuidos consistentes y tolerantes a particiones (CP), con cierto grado de tolerancia a fallos.
- ¿raft es gratuito? ¿Qué licencia tiene?
- raft es open source bajo la licencia MPL-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿raft sigue mantenido?
- Mantenimiento activo. El último commit de raft fue el 18 oct 2026.
- ¿Para qué puedo usar raft?
- Crear un almacén de clave-valor replicado u otro servicio con consistencia fuerte Mantener la coherencia de los metadatos en un clúster pequeño de servidores Añadir alta disponibilidad basada en un líder a un servicio de Go
- ¿Cómo se instala raft?
- Comprueba que tienes instalado Go 1.16 o una versión posterior: go version Lee la documentación Godoc de la biblioteca
- ¿Dónde consigo raft?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hashicorp/raft
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Apache ZooKeeper es un servicio de coordinación distribuida que ofrece un almacén jerárquico de pares clave-valor para gestionar la configuración, los nombres y la sincronización en sistemas distribuidos.
Almacén distribuido y confiable de clave-valor para los datos más críticos de un sistema distribuido, basado en el consenso Raft y con una API gRPC.
Una biblioteca ligera de tolerancia a fallos para Java que ofrece decoradores de circuit breaker, limitador de tasa, reintentos, bulkhead y límite de tiempo para código funcional.
Implementación en Python del patrón Circuit Breaker que detiene las llamadas a dependencias que fallan para proteger el resto del sistema.
Framework empresarial de ledger distribuido con permisos, escrito en Go, para crear soluciones y aplicaciones blockchain con componentes conectables.