이 글에서 얻는 것#
- Consensus 알고리즘이 왜 필요한지 이해합니다.
- Raft 알고리즘의 동작 원리를 파악합니다.
- 분산 시스템의 일관성을 보장하는 방법을 이해합니다.
- 실제 적용 사례를 알 수 있습니다.
1) Consensus 문제#
분산 시스템에서의 합의 문제:
Server A: value = 1
Server B: value = 2
Server C: value = 1
어떤 값이 진짜인가?
Consensus 알고리즘:
- 모든 서버가 같은 값에 합의
- 과반수 동의로 결정
- 장애 발생 시에도 동작
2) Raft 알고리즘#
핵심 개념#
1. Leader Election (리더 선출):
- 하나의 Leader 선출
- Leader가 모든 요청 처리
2. Log Replication (로그 복제):
- Leader가 Follower에게 로그 복제
- 과반수가 복제 완료 시 커밋
3. Safety (안전성):
- 한 번 커밋된 로그는 변경 불가
- 모든 서버가 같은 순서로 적용
동작 과정#
1. Client → Leader: Write 요청
2. Leader → Followers: 로그 복제
Server A: [1]
Server B: [1]
Server C: [1]
3. 과반수(2/3) 응답 → 커밋
Leader → Client: OK
4. Followers에게 커밋 알림
3) 적용 사례#
etcd (Kubernetes):
- Raft 사용
- 클러스터 설정 저장
- 리더 선출
Consul:
- Raft 사용
- 서비스 디스커버리
- 분산 잠금
ZooKeeper:
- ZAB (Zookeeper Atomic Broadcast)
- Paxos 변형
- 설정 관리
- Consensus: 분산 시스템의 합의 알고리즘
- Raft: 이해하기 쉬운 Consensus 알고리즘
- Leader Election + Log Replication
- etcd, Consul 등에서 사용
다음 단계#
- 분산 시스템:
/learning/deep-dive/deep-dive-distributed-systems/ - CAP 이론:
/learning/deep-dive/deep-dive-cap-theorem/
💬 댓글