콘텐츠로 바로가기

Consistent Hashing

노드 추가/제거 시 재분배되는 키 수를 최소화하는 분산 해싱 기법. 기존 모듈러 해싱(key % N)은 N 변경 시 대부분의 키 재분배가 필요하다. 단일 노드를 링 위 여러 지점에 배치 → 부하 균등 분배 + 핫스팟 방지: 실제 구현: Cassandra, Amaz...

sys.entry
M

Me

hyunyoun's Blog

system-architecture-distributed-systems1 min read

Consistent Hashing

노드 추가/제거 시 재분배되는 키 수를 최소화하는 분산 해싱 기법. 기존 모듈러 해싱(key % N)은 N 변경 시 대부분의 키 재분배가 필요하다.

링 구조

CODE
0 ─────────────────── 2³²-1
       ↑ 노드 A, B, C가 링 위에 배치
       키는 시계 방향으로 가장 가까운 노드에 배정

노드 추가: 새 노드가 담당하는 구간의 키만 이동. 평균 K/N개 (K=전체 키, N=노드 수).

노드 제거: 해당 노드의 키만 다음 노드로 이전.

Virtual Nodes (vnodes)

단일 노드를 링 위 여러 지점에 배치 → 부하 균등 분배 + 핫스팟 방지:

CODE
노드A → [A1, A2, A3] 각기 다른 링 위치

실제 구현: Cassandra, Amazon DynamoDB, Redis Cluster.

모듈러 해싱과 비교

기준 모듈러 (key % N) Consistent Hashing
노드 추가 시 이동 ~(N-1)/N 전체 ~K/N (최소)
구현 복잡도 단순 중간
핫스팟 발생 가능 vnodes로 완화

연결 노트