hash-ringscalingcache-node
consistent hashing을 설명해 주세요
- 예상 시간
- 8분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
modulo hashing은 왜 node 수 변경에 약한가요?
virtual node는 왜 필요한가요?
consistent hashing을 cache에 쓰면 어떤 장점이 있나요?
consistent hashing이 항상 균등 분산을 보장하나요?
sharding과 연결하면 어떻게 설명할 수 있나요?
부가 설명
캐시 서버가 4대일 때 key를 hash(key) % 4로 나누면 단순합니다. 문제는 서버가 5대로 늘어나는 순간입니다. modulo의 기준이 바뀌어서 거의 모든 key의 위치가 바뀌고, cache miss나 데이터 이동이 한꺼번에 커질 수 있습니다. consistent hashing은 이 충격을 줄이기 위한 방식입니다.
다만 완벽한 답은 아닙니다. node가 적으면 key가 한쪽으로 몰릴 수 있어 virtual node를 두는 경우가 많습니다. 핵심은 노드 변경 시 재배치 범위를 줄이고, virtual node로 분산을 더 고르게 만드는 데 있습니다.
한 줄 정리
consistent hashing은 node 변화가 생겨도 key 재배치를 일부로 제한하기 위한 분산 hash 방식입니다.