Repolode
hashicorp

hashicorp/raft

Библиотека на Go для реализации консенсуса Raft, управления реплицируемыми журналами и реплицируемыми конечными автоматами.

Звёзды
9,161
Форки
1,105
Открытые issues
73
Последний коммит
20 дней назад

Что это?

raft — библиотека на Go, реализующая алгоритм консенсуса Raft. Она управляет реплицируемым журналом и позволяет подключить собственный конечный автомат (FSM), чтобы несколько узлов применяли одну и ту же последовательность команд и поддерживали идентичное состояние. Библиотека предназначена для создания распределённых систем с согласованностью и устойчивостью к разделению сети (CP), обладающих определённой отказоустойчивостью.

Библиотека отвечает за выбор лидера, репликацию журнала, отслеживание фиксации записей и автоматическое создание снимков с компактизацией журнала для ограничения использования диска. Обычно кластеры запускают на 3 или 5 серверах, что позволяет выдержать отказ одного или двух узлов соответственно. Состав кластера можно менять динамически, пока доступен кворум. Также поддерживаются серверы без права голоса и подключаемый поставщик адресов на транспортном уровне.

Бэкенды для хранения журнала и стабильного хранилища разделены: в качестве варианта на чистом Go упоминается основанный на Bbolt raft-boltdb, а бэкенд на базе MDB находится в отдельном репозитории. Метрики можно передавать через armon/go-metrics или hashicorp/go-metrics; выбор задаётся build tag.

Ключевые возможности

  • 01Выбор лидера и репликация журнала по протоколу Raft
  • 02Подключаемый интерфейс конечного автомата для логики приложения
  • 03Автоматическое создание снимков и компактизация журнала
  • 04Динамическое изменение состава кластера и серверы без права голоса
  • 05Подключаемые бэкенды для хранения журнала и стабильного хранилища

Сценарии использования

  • Создание реплицируемого key-value-хранилища или другого сервиса со строгой согласованностью
  • Поддержание согласованности метаданных в небольшом кластере серверов
  • Добавление высокой доступности с выбором лидера в Go-сервис

Быстрый старт

  1. 1

    Убедитесь, что установлен Go версии 1.16 или выше

    go version
  2. 2

    Прочитайте документацию Godoc для библиотеки

Что важно знать

  • Это библиотека Go, а не автономный сервер, поэтому вам нужно самостоятельно создать FSM и транспортный уровень.
  • Рекомендуемые бэкенды для постоянного хранения журналов (raft-mdb) находятся в отдельных репозиториях, а для raft-mdb требуется cgo.

В подборках

Темы

Частые вопросы

Что такое raft?
Библиотека на Go для реализации консенсуса Raft, управления реплицируемыми журналами и реплицируемыми конечными автоматами. raft — библиотека на Go, реализующая алгоритм консенсуса Raft. Она управляет реплицируемым журналом и позволяет подключить собственный конечный автомат (FSM), чтобы несколько узлов применяли одну и ту же последовательность команд и поддерживали идентичное состояние. Библиотека предназначена для создания распределённых систем с согласованностью и устойчивостью к разделению сети (CP), обладающих определённой отказоустойчивостью.
raft можно использовать бесплатно? Какая у него лицензия?
raft распространяется с открытым исходным кодом под лицензией MPL-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
raft всё ещё поддерживается?
Активно поддерживается. Последний коммит в raft — 18 окт. 2026 г..
Для чего можно использовать raft?
Создание реплицируемого key-value-хранилища или другого сервиса со строгой согласованностью Поддержание согласованности метаданных в небольшом кластере серверов Добавление высокой доступности с выбором лидера в Go-сервис
Как установить raft?
Убедитесь, что установлен Go версии 1.16 или выше: go version Прочитайте документацию Godoc для библиотеки
Где скачать raft?
Исходный код и инструкции по установке — на GitHub: https://github.com/hashicorp/raft

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Apache ZooKeeper — распределённый сервис координации с иерархическим хранилищем «ключ-значение» для конфигурации, именования и синхронизации в распределённых системах.

12,8 тыс.+6 за неделю7,3 тыс.JavaApache-2.0Обновлён вчера

Лёгкая библиотека отказоустойчивости для Java с декораторами Circuit Breaker, Rate Limiter, Retry, Bulkhead и Time Limiter для функционального кода.

Бэкенд и API#java#fault-tolerance#circuit-breaker
10,8 тыс.+3 за неделю1,5 тыс.JavaApache-2.0Обновлён 9 дней назад

Реализация паттерна Circuit Breaker для Python: прерывает вызовы к сбоящим зависимостям, защищая остальную систему.

Бэкенд и API#circuit-breaker#resilience#fault-tolerance
701+2 за неделю96PythonBSD-3-ClauseОбновлён в прошлом месяце

Корпоративный permissioned-фреймворк распределённого реестра на Go для создания блокчейн-решений и приложений с подключаемыми компонентами.

Бэкенд и API#blockchain#distributed-ledger#permissioned-blockchain
16,8 тыс.+9 за неделю9,1 тыс.GoApache-2.0Активно поддерживаетсяОбновлён 3 дня назад