Repolode
hashicorp

hashicorp/raft

복제 로그와 복제 상태 머신을 관리하는 Raft 합의 프로토콜의 Go 라이브러리입니다.

스타
9,161
포크
1,104
열린 이슈
73
마지막 커밋
20일 전

어떤 프로젝트인가요?

raft는 Raft 합의 알고리즘을 구현한 Go 라이브러리입니다. 복제 로그를 관리하며, 애플리케이션이 자체 유한 상태 머신(FSM)을 연결할 수 있어 여러 노드가 동일한 명령 시퀀스를 적용하고 같은 상태를 유지합니다. 내결함성을 어느 정도 갖춘 일관성 및 파티션 허용(CP) 분산 시스템을 구축하는 데 사용합니다.

이 라이브러리는 리더 선출, 로그 복제, 커밋 추적을 처리하며, 디스크 사용량을 제한하기 위해 로그 압축을 동반한 스냅샷을 자동으로 생성합니다. 클러스터는 일반적으로 서버 3대 또는 5대로 구성하며, 각각 노드 장애 1건 또는 2건을 감내할 수 있습니다. 쿼럼을 유지할 수 있다면 멤버십을 동적으로 변경할 수 있습니다. 투표권이 없는 서버와 전송 계층에서 교체 가능한 주소 제공자도 지원합니다.

로그와 안정 저장소의 스토리지 백엔드는 별도로 구성됩니다. 순수 Go로 작성된 Bbolt 기반 raft-boltdb가 참조되어 있으며, MDB 기반 백엔드는 별도 저장소에 있습니다. 메트릭은 빌드 태그로 선택하는 armon/go-metrics 또는 hashicorp/go-metrics를 통해 내보낼 수 있습니다.

핵심 기능

  • 01Raft 프로토콜에 따른 리더 선출 및 로그 복제
  • 02애플리케이션 로직을 위한 교체 가능한 유한 상태 머신 인터페이스
  • 03자동 스냅샷 생성 및 로그 압축
  • 04동적 클러스터 멤버십 변경 및 투표권이 없는 서버 지원
  • 05로그와 안정 저장소를 위한 교체 가능한 스토리지 백엔드

활용 사례

  • 복제 키-값 저장소 또는 강한 일관성을 제공하는 다른 서비스 구축
  • 소규모 서버 클러스터 전반에서 메타데이터 일관성 유지
  • Go 서비스에 리더 기반 고가용성 추가

빠른 시작

  1. 1

    Go 1.16 이상이 설치되어 있는지 확인하세요

    go version
  2. 2

    라이브러리의 Godoc 문서를 읽으세요

사용 전 알아둘 점

  • 이 라이브러리는 독립 실행형 서버가 아니므로, 자체 FSM과 전송 계층을 구축해야 합니다.
  • 권장 영구 로그 백엔드(raft-mdb)는 별도의 저장소에 있으며, raft-mdb를 사용하려면 cgo가 필요합니다.

포함된 컬렉션

토픽

자주 묻는 질문

raft은(는) 무엇인가요?
복제 로그와 복제 상태 머신을 관리하는 Raft 합의 프로토콜의 Go 라이브러리입니다. raft는 Raft 합의 알고리즘을 구현한 Go 라이브러리입니다. 복제 로그를 관리하며, 애플리케이션이 자체 유한 상태 머신(FSM)을 연결할 수 있어 여러 노드가 동일한 명령 시퀀스를 적용하고 같은 상태를 유지합니다. 내결함성을 어느 정도 갖춘 일관성 및 파티션 허용(CP) 분산 시스템을 구축하는 데 사용합니다.
raft은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
raft은(는) MPL-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
raft은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. raft의 마지막 커밋은 2026년 10월 18일입니다.
raft은(는) 어디에 사용할 수 있나요?
복제 키-값 저장소 또는 강한 일관성을 제공하는 다른 서비스 구축 소규모 서버 클러스터 전반에서 메타데이터 일관성 유지 Go 서비스에 리더 기반 고가용성 추가
raft는 어떻게 설치하나요?
Go 1.16 이상이 설치되어 있는지 확인하세요: go version 라이브러리의 Godoc 문서를 읽으세요
raft은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/hashicorp/raft

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트

함수형 코드에 서킷 브레이커, 속도 제한기, 재시도, 벌크헤드, 시간 제한 데코레이터를 제공하는 경량 Java 장애 허용 라이브러리입니다.

백엔드·API#java#fault-tolerance#circuit-breaker
1.1만+2 이번 주1.5천JavaApache-2.0업데이트 8일 전

실패하는 의존성에 대한 호출을 차단해 시스템의 나머지 부분을 보호하는 Circuit Breaker 패턴의 Python 구현입니다.

백엔드·API#circuit-breaker#resilience#fault-tolerance
700+1 이번 주96PythonBSD-3-Clause업데이트 지난달

플러그형 구성 요소를 활용해 블록체인 솔루션과 애플리케이션을 구축할 수 있는 Go 기반 엔터프라이즈 허가형 분산 원장 프레임워크입니다.

백엔드·API#blockchain#distributed-ledger#permissioned-blockchain
1.7만+9 이번 주9.1천GoApache-2.0활발히 관리됨업데이트 그저께