SQLite 기반의 경량 분산 관계형 데이터베이스로, Raft 합의 알고리즘을 통해 노드 간 데이터를 복제하고 장애에 대응합니다.
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
Go 1.16 이상이 설치되어 있는지 확인하세요
go version - 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 통계는 매일 갱신됩니다.
관련 프로젝트
Apache ZooKeeper는 분산 시스템의 구성, 네이밍, 동기화를 위한 계층형 키-값 저장소를 제공하는 분산 조정 서비스입니다.
Raft 합의와 gRPC API를 기반으로 분산 시스템의 핵심 데이터를 저장하는 분산형 고신뢰 키-값 저장소입니다.
함수형 코드에 서킷 브레이커, 속도 제한기, 재시도, 벌크헤드, 시간 제한 데코레이터를 제공하는 경량 Java 장애 허용 라이브러리입니다.
실패하는 의존성에 대한 호출을 차단해 시스템의 나머지 부분을 보호하는 Circuit Breaker 패턴의 Python 구현입니다.
플러그형 구성 요소를 활용해 블록체인 솔루션과 애플리케이션을 구축할 수 있는 Go 기반 엔터프라이즈 허가형 분산 원장 프레임워크입니다.