Repolode
hashicorp

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. 1

    Comprueba que tienes instalado Go 1.16 o una versión posterior

    go version
  2. 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

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.

Backend y APIs#java#fault-tolerance#circuit-breaker
10,8 mil+1 esta semana1,5 milJavaApache-2.0Actualizado hace 7 días

Implementación en Python del patrón Circuit Breaker que detiene las llamadas a dependencias que fallan para proteger el resto del sistema.

Backend y APIs#circuit-breaker#resilience#fault-tolerance
69995PythonBSD-3-ClauseActualizado el mes pasado