← 질문 목록
#34깊이 0
노드를 늘릴 때 일관된 해싱이 필요한 이유는?
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
나머지 연산의 분모를 바꾸면 키 대부분의 나머지가 달라진다. 일관된 해싱은 노드 집합이 바뀔 때 옮겨야 하는 키를 새 노드가 맡을 분량으로 줄인다.
| 기준 | hash(key) % nodeCount | 일관된 해싱 |
|---|---|---|
| 노드 하나 추가 | 대부분의 키가 재배치 | 균등하다면 새 전체 노드 수의 역수 안팎 |
| 기본 구현 | 배열과 나머지 연산 | 링 또는 Jump Hash 같은 알고리즘 |
| 운영 비용 | 재배치 범위가 크다 | 분포 보정과 재배치 관리가 필요 |
고전적인 링 구현은 키와 노드를 같은 해시 공간에 올린다. 각 키는 링을 돌아 처음 만나는 노드가 맡는다. 노드가 추가되면 앞의 노드가 맡던 구간 일부만 새 노드로 옮겨 간다.
키 이동이 적다고 부하가 자동으로 고르지는 않다. 링의 노드 지점이 적으면 구간 크기가 들쭉날쭉하다. 가상 노드를 여러 개 두거나 용량에 따라 가중치를 줘 분포를 보정한다.
이 방식은 노드 증감이 잦은 분산 캐시와 저장소, 로드 밸런서에 잘 맞는다. 다만 복제본 배치, 핫 키, 재배치 중 읽기·쓰기는 해싱 알고리즘 밖에서 따로 설계한다.