일관된 해싱(Consistent Hashing) 쉽게 이해하기

KKTRKKT·2024년 5월 20일
0

쉽게 이해하기

목록 보기
3/4

분산 시스템에서 데이터를 효율적으로 분배하고, 서버 추가나 제거 시 데이터 이동을 최소화하는 해싱 기법인 일관된 해싱에 대해 알아보겠습니다. 이를 쉽게 설명하기 위해 피자 배달을 비유로 사용해 보겠습니다.

비유: 피자 배달

생각해보세요, 피자 가게에서 여러 배달원이 있습니다. 각각의 배달원이 특정 지역의 주문을 담당합니다. 새로운 배달원이 추가되거나 기존 배달원이 일을 그만둘 때, 각 배달원이 담당하는 지역이 크게 바뀌지 않는 것이 중요합니다. 이렇게 하면 배달 업무를 더 효율적으로 관리할 수 있습니다.

일관된 해싱의 원리

해싱 링

원형 모양의 숫자 범위를 생각해봅시다. 이 범위는 0부터 100까지입니다(실제론 0부터 2^32-1까지).

각 서버(또는 배달원)는 이 원형 범위의 특정 위치에 배치됩니다. 예를 들어, 서버 A는 10에, 서버 B는 50에, 서버 C는 80에 배치됩니다.

데이터의 위치 결정

각 데이터 항목(예: 사용자 정보, 이미지 파일 등)도 해싱을 통해 이 원형 범위 내의 특정 위치에 배치됩니다. 예를 들어, 데이터 X는 30에, 데이터 Y는 70에 배치됩니다.
데이터를 담당할 서버는 해싱 링을 시계방향으로 돌며 첫 번째로 만나는 서버가 됩니다. 예를 들어, 데이터 X(30)는 서버 B(50)에, 데이터 Y(70)는 서버 C(80)에 저장됩니다.

서버 추가/제거 시 데이터 이동 최소화

서버 추가: 새로운 서버 D가 60에 추가된다고 가정해봅시다. 기존 데이터 중 60보다 작고, 가장 가까운 서버인 C에 저장된 데이터만 D로 이동하면 됩니다. 즉, 데이터 Y(70)만 D로 이동합니다. 다른 데이터는 이동할 필요가 없습니다.
서버 제거: 서버 B가 제거된다고 가정해봅시다. B가 담당하던 데이터는 B 다음에 위치한 서버 C로 이동됩니다. 이 경우, 데이터 X(30)가 C로 이동됩니다.

일관된 해싱의 장점

효율적인 데이터 분배: 데이터가 서버에 고르게 분배됩니다.
확장성: 서버를 추가하거나 제거할 때 이동해야 하는 데이터의 양이 최소화됩니다. 이는 시스템이 더 쉽게 확장될 수 있음을 의미합니다.
높은 가용성: 일부 서버에 장애가 발생해도 데이터가 다른 서버에 분산되어 있기 때문에 시스템이 계속 작동할 수 있습니다.

결론

일관된 해싱은 데이터가 분산된 환경에서 서버 간에 균등하게 분배되고, 서버 추가나 제거 시 데이터 이동을 최소화하는 데 중요한 역할을 합니다. 이를 통해 시스템의 확장성과 가용성을 높일 수 있습니다.

profile
https://kktrkkt.github.io/

0개의 댓글