Consistent hashing은 노드(서버)에 데이터를 분산하는 기법으로 노드가 추가되거나 제거될 때 재분배를 최소화합니다 — 노드 수가 변하면 대부분의 key를 재매핑하는 단순 해싱과 다릅니다. 분산 캐시, 데이터베이스, 부하 분산에 중요합니다.
단순 해싱의 문제
단순 접근: node = hash(key) % N (N = 노드 수)
✗ N이 변하면 (노드 추가/제거), N이 변함 → 대부분의 key가 다른 노드로 재매핑 →
대규모 데이터 이동 / 캐시 무효화 (거의 모든 것이 이동!)
→ 서버 추가/제거가 큰 혼란을 유발 → 동적 분산 시스템에 나쁨.
consistent hashing이 동작하는 방식
노드와 KEY를 모두 HASH RING(해시 값의 원)에 매핑:
→ key는 ring에서 자신으로부터 시계 방향 첫 번째 노드에 속함
→ 노드 추가/제거는 ring의 한 세그먼트(그 이웃)의 key에만 영향 →
key의 작은 일부만 이동 (대부분이 아니라 ≈ K/N)
→ 노드 변경 시 최소 재분배 → 동적 시스템에 훨씬 좋음.
