가십 프로토콜(Gossip Protocol)은 분산 시스템에서 노드들이 주변 노드와 주기적으로 정보를 교환하여 전체 클러스터에 정보를 전파하는 프로토콜이다. 인간의 소문 전파 방식을 모델로 하며, Cassandra, Consul, Bitcoin 등에서 멤버십 관리에 사용된다.
동작 원리
Gossip 라운드:
1. 노드 A가 임의로 노드 B를 선택
2. A → B: 자신의 상태 정보 전송
3. B: 받은 정보와 자신의 정보 병합
4. 일정 주기마다 반복
정보 전파 속도:
라운드 k 후 감염된 노드 수 ≈ N × (1 - (1-1/N)^k)
- N개 노드, log(N) 라운드 후 대부분 전파
Cassandra에서의 가십
yaml
# Cassandra gossip 설정
gossip_interval_in_ms: 1000 # 1초마다 가십
phi_convict_threshold: 8 # 노드 장애 판단 임계값
Heartbeat State (각 노드가 공유하는 정보):
- generation: 노드 재시작 횟수
- heartbeat: 단조 증가 카운터
- 상태: NORMAL / LEAVING / LEFT / JOINING
장애 감지 (Phi Accrual Failure Detector):
Phi = -log10(P(interval > current_gap))
Phi > threshold → 노드 장애로 판단 (확률적)
가십 유형
| 유형 | 설명 |
|---|
| Anti-Entropy | 전체 상태를 주기적으로 교환하여 일관성 유지 |
| Rumor Mongering | 새로운 정보만 전파, 수신 확인 후 중지 |
| Aggregation | 집계 값(평균, 합계) 분산 계산 |
장단점
| 장점 | 단점 |
|---|
| 중앙 코디네이터 불필요 | 최종 일관성만 보장 |
| 자연스러운 장애 허용 | 정보 전파 지연 |
| 선형 확장성 | 네트워크 오버헤드 |
| 구현 단순 | 정확한 시간 보장 불가 |
관련 개념