피드로 돌아가기
Dev.toInfrastructure
원문 읽기
분산 시스템에서 Quorum은 Durability, Raft는 Ordering, ACID는 Correctness를 각각 담당하는 계층적 구조를 형성함
Distributed Systems - Quorum vs. Raft vs 2PC
AI 요약
Context
분산 시스템 설계 시 Quorum, Raft, 2PC를 단순히 대안으로 비교하지만 각각 Data Plane, Control Plane, Logical Contract에서 다른 역할을 담당함. 네트워크 분할 발생 시 Quorum은 외부의 fencing 메커니즘이 필요하지만 Raft는 프로토콜 내장 Term으로 자동 보호됨.
Technical Solution
- Quorum: $W + R > N$ 조건으로 Durability를 수학적으로 보장하며 리더 정보 없이 데이터만 안전 저장함
- Raft: Control Plane과 Data Plane을 결합하여 모든 노드가 동일한 이벤트 시퀀스를 보도록 Ordering 보장함
- Multi-Raft: CockroachDB, TiDB에서 데이터shard별로 독립 consensus 실행하여 단일 그룹 병목 해소함
- 2PC: 다중 shard 트랜잭션에서 원자성 보장을 위해 분산 ACID를 상위 레이어에서 구현함
- Kafka KRaft: Metadata에만 Raft 적용하고 Data Partition에는 ISR 프로토콜 사용하여 heartbeat 오버헤드 최소화함
Impact
Kafka는 Raft 메타데이터와 ISR 데이터 레플리케이션을 분리하여 수천 개 파티션의 분산 consensus 비용을 절감함.
Key Takeaway
분산 시스템의 보장은 계층적이다. Quorum이 데이터 안정성을, Consensus가 순서 일관성을, ACID가 논리적 정합성을 담당하며 각 계층은 독립적으로 동작하지 않고 상위 계층이 하위 계층 위에 구축됨.
실천 포인트
새로운 분산 스토리지 시스템을 설계할 때 Quorum만으로는 fencing 문제가 발생할 수 있으므로 리더 election이 필요한 경우 Raft 기반 솔루션을 선택하고, 다중 shard 트랜잭션이 필요한 경우 Raft 위에 2PC를 조합해야 함.