Skip to main content

5. 안정 해시 설계안

해시 키 재배치(rehash) 문제#

  • N개의 캐시 서버가 있으며, 서버들에 부하를 균등하게 나누는 보편적 방법은 아래의 해시 함수를 사용하는 것입니다.

serverIndex = hash(key) % N(서버의 개수)

  • 이는 서버 풀 크기가 고정되어 있을 때, 데이터 분포가 균등할 때는 잘 동작하나 서버가 추가되거나 삭제되면 문제가 발생합니다.

안정 해시#

  • 안정 해시는 해시 테이블 크기가 조정될 때 평균적으로 오직 k/n개의 키만 재배치하는 해시 기술입니다.

아래의 내용들을 알고 있으면 좋습니다.

  • 해시 공간과 해시 링
  • 해시 서버
  • 해시 키
  • 서버 조회
  • 서버 추가
  • 서버 제거
  • 기본 구현법의 두가지 문제
    • 첫 번재 문제는 파티션의 크기를 균등하게 유지할 수 없습니다.
    • 두 번째 문제는 키의 균등 분포를 달성하기가 어렵습니다.
  • 가상 노드
  • 재배치할 키 결정

마치며#

  • 안정 해시의 이점은 다음과 같습니다.
    • 서버가 추가되거나 삭제될 때 재배치되는 키의 수가 최소화됩니다.
    • 데이터가 보다 균등하게 분포하게 되므로 수평적 규모 확장성을 달성하기 쉽습니다.
    • 핫스팟 키 문제를 줄입니다.
  • 대표적으로 널리 쓰이는 기술은 다음과 같습니다.
    • 아마존 다이나모 데이터베이스(DyanmoDB)의 파티셔닝 관련 컴포넌트
    • 아파치 카산드라(Apache Cassandra) 클러스에서의 데이터 파티셔닝
    • 디스코드(Discord) 채팅 어플리케이션
    • 아카마이(Akamai) CDN
    • 매그레프(Meglev) 네트워크 부하 분산기
Last updated on