libmemcached 의 일치 성 hash 알고리즘

787 단어 memcached
memcached 의 클 라 이언 트 는 일치 성 hash 를 사용 하여 모든 서버 가 있 는 위 치 를 찾 습 니 다.
libmemcached 라 이브 러 리 를 예 로 들 면 memcachedserver_by_key 함수 에서 먼저 hashkit 에서 지정 한 해시 알고리즘 에 따라 key 에서 해시 값 을 계산 한 다음 에 다음 알고리즘 에 따라 모든 노드 에서 가장 가 까 운 노드 를 찾 습 니 다.
만약 에 해시 값 이 마지막 노드 에 있 거나 마지막 노드 와 마지막 두 번 째 노드 사이 에 있다 면 첫 번 째 노드 로 돌아 갑 니 다.
그렇지 않 으 면 해시 값 뒤에 있 는 자신의 가장 가 까 운 노드 로 돌아 갑 니 다.
코드:
      while (left < right)
      {
        middle= left + (right - left) / 2;
        if (middle->value < hash)
          left= middle + 1;
        else
          right= middle;
      }
      if (right == end)
        right= begin;
      return right->index;

 이 알고리즘 은 매우 이상해 서 이해 하지 못 했 으 니 내일 계속 분석 하 자.

좋은 웹페이지 즐겨찾기