
이번 내용은 가상면접 사례로 배우는 대규모 시스템 설계 5장 안정 해시 설계에 대한 내용이다.
→ 이를 위해 안정 해시를 설계
serverIndex = hash % 4
서버 풀의 크기가 고정되어 있고, 데이터 분포가 균등할때는 잘 작동한다.
but. 서버가 늘어나거나 기존 서버가 삭제 된다면 문제가 생긴다.
→ 키에 대한 해시값은 변하지 않지만 서버 인덱스는 서버 크기가 달라지기에 달라진다.
즉 키가 재분재 되어 대부분 캐시 클라이언트가 데이터가 없는 엉뚱한 서버에 접속한다.
→ 대규모 케시 미스 문제 발생
어떻게 해결하는가?
→ 안정 해시
해시 테이블 크기가 조정될때 평균적으로 k/n 개의 키만 재배치 하는 해시 기술
k: 키의 개수
n: 슬롯의 개수
✏️ 동작 원리

해시 함수 f 를 사용하면 서버 ip나 이름으 링 위의 어떤 위치에 대응시킬 수 있다.

어떤 키가 저장된 서버는 해당 키의 위치로부터 시계 방향으로 링을 탐색해 나가면서 만나는 첫번째 서버이다

서버를 추가하더라고 가운데 키 일부만 재배치 하면 된다.

키 일부만 재배치

1) 서버와 키를 균등 분포 해시 함수를 사용해 해시 링에 재배치
2) 키의 위치에서 링을 시계 방향으로 탐색하다 처음으로 만나는 서버에 키가 저장
-> 두가지 문제점 존재


가상 노드의 개수 ⬆️ -> 키의 분포 균등
-> 표준 편차가 작아져서 데이터가 고르게 분포되기 때문
어느 범위의 키들을 재배치 해야하는가.