위키득계정 ↗
기술

일관 해싱

일관 해싱기술
영어
Consistent hashing
주요 목적
대상 변화에 따른 재배정 감소
활용 예
분산 캐시와 데이터 배치
주의점
데이터 일관성 보장과 별개
일관 해싱은 항목을 서버나 버킷에 배정할 때 대상 집합의 작은 변화가 전체 항목의 대규모 재배정으로 번지지 않도록 하는 해싱 방식이다. 서버가 추가되거나 빠지는 분산 캐시 등의 환경에서 배치 변화의 범위를 줄이는 데 활용한다.

나머지 연산 배치의 문제

서버 수를 N이라고 하고 해시 값을 N으로 나눈 나머지로 서버를 정하면 N이 바뀔 때 많은 항목의 배정이 달라질 수 있다. 서버 한 대를 추가했을 뿐인데 기존 서버들 사이에서도 이동이 커지는 상황이다. 일관 해싱은 이런 변화를 더 국소적으로 제한하는 배치를 목표로 한다.

원형 공간을 이용한 예

대표적인 구성은 서버와 항목을 같은 원형 해시 공간에 놓고 항목을 정해진 방향의 다음 서버에 배정한다. 새 서버가 들어오면 그 서버가 새로 맡을 구간의 항목이 이동한다. 나머지 구간의 기존 배정은 유지될 수 있다. 원형 배치는 일관 해싱을 구현하는 대표적인 방법이지 개념 자체의 유일한 정의는 아니다.

배정 균형

해시 공간의 구간 길이나 서버 배치가 불균등하면 맡는 항목 수도 달라질 수 있다. 서버 하나를 여러 위치로 나타내는 방식 등으로 균형을 개선할 수 있다. 다만 항목 수가 고르게 나뉘어도 일부 항목의 요청이 압도적으로 많으면 실제 처리 부하는 불균등할 수 있다.

합의와의 구분

일관 해싱이 정하는 것은 주어진 대상 집합에서 항목을 어디로 보낼지다. 서버들이 서로 다른 대상 목록을 알고 있으면 결과도 일부 달라질 수 있다. 복제본의 값이 항상 같은지, 장애 때 쓰기를 어떻게 확정하는지는 별도 문제이며 일관 해싱만으로 분산 합의를 대체하지는 않는다.

관련 문서

해시 함수 / 분산 시스템 / 캐시 / 알고리즘 / 네트워크 / 데이터베이스 / Raft / Paxos