[t:/]$ 지식_

consistent hashing, 멤캐시

2014/11/13

http://www.tomkleinpeter.com/2008/03/17/programmers-toolbox-part-3-consistent-hashing/

memcached의 주요 특징 중 하나인 컨시스턴트 해싱에 대한 글.

이해하는 방법은 간단하다.

보통 해싱을 돌리면 잘 분포된 값으로 나온다. 그리고 그 해당 값으로 주인(서버)를 정하고 거기에 저장한다. 그렇게 분산처리를 한다.

컨시스턴트 해싱에서는 링형 서버 범위에서 크기를 이용하여 비교한다. ABCD 서버가 있다면 ABCDA 처럼 링형으로 구성되고, ABCD에 해당하는 해싱값을 갖는다.

새로 저장할 아이템의 해싱값은 각 서버가 갖는 해싱값과 크기 비교를 통해 주인을 가린다. 이렇게 하면 서버 한 두 대가 장애가 나도 바로 주인을 찾을 수 있으며 전체 재조정이 필요없다.

실제 구현시에는 재수없이 특정 서버에 몰리는 것을 피하기 위해서 각 서버의 해싱값 + 1 구간을 더 둔다. 해싱값이 분산된다라는 가정을 하면 +1 의 가상서버위치(?)를 두는 것 만으로도 고른 분배를 할 수 있다.









[t:/] is not "technology - root". dawnsea, rss