5줄로 된 구글의 Consistent Hashing

1.
새벽에 일어나 글을 읽는데 제목이 눈에 들어옵니다.

A Fast, Minimal Memory, Consistent Hash Algorithm

Fast는 좋아하는 단어입니다. Minimal도 좋아합니다. 그런데 Consistent는 어렵습니다. 우선 Consistent Hash가 궁금했습니다. 페이스북으로 알고 있는 Mimul님이 이 년전에 Consistent Hash를 설명하는 글을 올리셨네요. 제가 설명하기 보다 직접 읽어보시면 이해가 쉬울 듯 합니다.

Consistent Hashing

Memcached 에서의 Consistent Hashing도 쉽게 설명한 글이니까 같이 읽어보시길 바랍니다. 두 글을 읽으면 하나의 그림이 들어옵니다. 원(Ring)입니다.

relblog-conhashing

Consistent Hash는 NoSQL에서 가용성을 구현하는 알고리즘으로 많이 사용하고 있다고 합니다. Casandra가 적용한 방법을 설명한 글입니다.

컨시스턴트 해싱은 메타 정보를 조회하지 않아도 클러스터에서 키가 저장된 노드를 바로 찾아갈 수 있는 방법이다. 키의 해시 값을 구해서 키를 찾고, 이 해시 값만으로 노드를 찾아갈 수 있다. 좀 더 자세히 살펴보면, 컨시스턴트 해싱은 일련의 해시 값을 가상의 링(ring)에 순서대로 나열했다고 가정하고 각 노드는 링에서 각자 맡은 범위만 처리하는 방법이다. 만약 노드를 추가하면 특정 노드(많은 데이터를 가진 노드)가 맡고 있던 범위를 분할하여 새 노드에 할당한다. 노드를 삭제할 때는 링에서 삭제된 노드가 맡고 있던 범위를 인접 노드가 맡는다. 따라서 서비스 중에 노드의 추가/삭제로 인해 영향을 받는 노드 수를 최소화할 수 있다
NoSQL 가용성과 운영 안정성중에서

2.
다시 본론입니다. 구글이 논문으로 발표한 Consistent Hash은 5줄로 구현하였습니다.

Download (PDF, 370KB)

혹 C로 구현한 Consistent Hash Library가 필요하시면?

LIBHASHRING – High Performance Consistent Hashing

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.