ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION1238 / 1500
분산 시스템난이도 중하5분 답변 목표 · 보강본

키를 노드에 배정할 때 rendezvous hashing은 어떻게 선택하고 노드 변경 비용은 무엇인가요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

키와 각 후보 노드의 조합을 안정적으로 해시하고 가장 높은 점수를 가진 노드를 선택하는 방식입니다. 노드 집합이 바뀌면 영향을 받는 키만 재배치되도록 할 수 있지만 후보 점수 계산 비용과 실제 데이터 이동은 남습니다.

동작 원리와 전제

노드를 제거하면 그 노드를 선택했던 키는 다음 점수 후보로 가고 다른 키는 유지됩니다. 노드를 추가하면 새 노드가 최고 점수인 키만 이동합니다. 모든 client가 같은 키 직렬화·노드 ID·해시·가중 규칙을 사용해야 같은 결과를 얻습니다.

선택과 실패 처리

노드가 많으면 매 조회 O(N) 점수 계산이 부담일 수 있어 캐시·계층·논리 bucket을 검토합니다. 가중 노드 지원도 단순 점수 곱셈이 원하는 분포를 보장하는지 검증된 방식을 사용합니다.

구체적인 사례와 검증

노드 이름을 IP처럼 변경 가능한 값으로 해시하면 재배치 이벤트가 예상보다 넓어질 수 있습니다. 안정적인 노드 식별과 멤버십 버전을 사용하고 모든 client가 같은 후보 집합을 읽는지 확인합니다. 점수 동점이 생길 수 있으므로 결정적인 tie-breaker도 필요합니다. 키 직렬화의 문자 인코딩·숫자 표현이 언어마다 다르면 같은 해시 알고리즘이어도 결과가 달라집니다. 테스트에 여러 언어의 golden vector를 두면 배정 일치성을 확인하기 좋습니다. 최상위 후보 여러 개를 복제 위치로 선택해도 그 복제본의 commit·읽기 일관성은 별도 프로토콜로 관리해야 합니다.

노드 추가·삭제에서 이동 비율과 용량·요청 분포를 측정합니다. 해시 배정의 결정성과 데이터 쓰기 권위는 별개이므로 세대·펜싱을 둡니다. 같은 키가 핫하면 배정 방식만 바꿔도 단일 키 병목은 사라지지 않습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 키와 각 후보 노드의 조합을 안정적으로 해시하고 가장 높은 점수를 가진 노드를 선택하는 방식입니다.
  • 선택 조건: 노드가 많으면 매 조회 O(N) 점수 계산이 부담일 수 있어 캐시·계층·논리 bucket을 검토합니다.
  • 검증 기준: 노드 추가·삭제에서 이동 비율과 용량·요청 분포를 측정합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 같은 알고리즘 이름이면 노드 ID와 키 직렬화가 달라도 배정이 같다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 논리 위치를 여러 개 두어도 단일 핫키가 남는 이유와 이동 비용은 무엇인가요?
  • 저장 위치를 옮기는 동안 동시 쓰기와 오래된 라우팅을 어떤 권위 전환으로 통제하나요?
  • 실행 간 순서가 달라질 때 언어의 hash와 외부 결정적 정렬을 어떻게 구분하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기