>일반적인 문제 >일관된 해싱이란 무엇입니까?

일관된 해싱이란 무엇입니까?

hzc
hzc원래의
2020-06-29 13:13:432646검색

일관적인 해시 알고리즘은 1997년 MIT에서 제안되었습니다. 분산 캐싱 문제를 해결하기 위한 특수 해시 알고리즘으로, 서버가 제거되거나 추가될 때 기존 서비스 요청과 매핑 관계가 최소한으로 변경될 수 있습니다. 요청을 처리하는 서버.

일관된 해싱이란 무엇입니까?

일관적 해시 알고리즘은 1997년 MIT에서 제안되었습니다. 분산 캐시 문제를 해결하기 위해 고안된 특수 해시 알고리즘입니다. 서버를 제거하거나 추가할 때 기존 서비스 요청과 요청을 처리하는 서버 간의 매핑을 가능한 한 적게 변경할 수 있습니다. 일관된 해싱은 분산 해시 테이블(DHT)에서 단순 해싱 알고리즘의 동적 확장 문제를 해결합니다.

소개:

일관적인 해싱 알고리즘은 1997년 Conidenthashing and Random Trees 논문에서 제안되었으며 분산 시스템에서 널리 사용됩니다. 컨시스턴트 해싱은 간단히 말해서 서버가 제거되거나 추가될 때 기존 서비스 요청과 요청 처리 서버 간의 매핑 관계를 최소한으로 변경하고 단조로움을 최대한 충족할 수 있는 알고리즘입니다. . 일반적인 분산 클러스터에서는 서비스 요청과 처리 요청 서버 간에 일대일 대응이 있습니다. 즉, 서비스 요청과 처리 서버 간의 매핑 관계가 고정되어 있으며 특정 요청이 고정된 서버에서 처리됩니다. . 이 방법은 전체 시스템의 로드 밸런싱을 수행할 수 없으며 일부 서버의 사용량이 너무 많아 새 요청을 처리할 수 없을 수도 있습니다. 다른 서버가 너무 유휴 상태인 동안 전체 시스템의 리소스 활용도가 낮으며 분산 클러스터의 서버가 다운되면 특정 서비스 요청을 처리할 수 없게 되는 직접적인 원인이 됩니다.

추가 개선에서는 해시 알고리즘을 사용하여 서비스 요청과 처리 서버 간의 관계를 매핑하여 동적 할당을 달성할 수 있습니다. 서비스 요청은 해시 알고리즘을 통해 변환되며, 변환된 결과는 서버 노드 값을 기준으로 모듈로 계산됩니다. 모듈로 값은 서비스 요청에 해당하는 요청 처리 서버입니다. 이 방법은 분산 클러스터 노드가 다운되는 경우 해시 알고리즘을 통해 서비스 요청을 다른 사용 가능한 서버로 재분배할 수 있습니다. 이렇게 하면 요청을 처리할 수 없는 상황이 방지됩니다.

하지만 이 방법의 단점도 분명합니다. 서비스 요청에 해당하는 데이터가 서버에 저장되어 있으면 요청의 해시 값을 다시 계산하면 많은 요청이 다른 서버로 리디렉션되고 요청이 사용됩니다. 분산 시스템에서는 데이터 오류가 매우 심합니다. 잘 설계된 분산 시스템은 단조성이 좋아야 합니다. 즉, 서버를 추가하거나 제거해도 많은 수의 해시 재배치가 발생하지 않으며 일관된 해싱이 이 문제를 정확하게 해결할 수 있습니다.

일관된 해시 알고리즘은 전체 해시 값 공간을 가상 링으로 매핑하며 전체 해시 공간의 값 범위는 0~232-1입니다. 전체 공간은 시계방향으로 구성되어 있습니다. 0~232-1의 방향은 영점에서 일치합니다. 다음으로, 다음 알고리즘을 사용하여 서비스 요청을 매핑하고, 해시 알고리즘을 사용하여 서비스 요청의 해당 해시 값을 계산한 다음, 해시 값의 위치에 따라 원을 따라 시계 방향으로 검색합니다. 요청을 처리 중입니다. 새 서버가 추가되면 영향을 받는 데이터는 새로 추가된 서버와 해당 링 공간에 있는 이전 서버 사이의 데이터(즉, 시계 반대 방향으로 처음 만나는 서버)뿐입니다. 다른 데이터는 영향을 받지 않습니다. 요약하자면, 일관된 해싱 알고리즘은 노드의 증가 또는 감소를 위해 링 공간에서 데이터의 작은 부분만 재배치하면 되며 내결함성과 확장성이 우수합니다.

특징:

  • 확장성. 일관된 해시 알고리즘은 서버를 추가하거나 제거할 때 데이터 저장소의 변경을 최소화하여 기존 해시 알고리즘에 비해 데이터 이동 오버헤드를 크게 절약합니다.

  • 빠른 데이터 증가에 더 잘 적응하세요. 데이터를 분산시키기 위해 일관된 해싱 알고리즘이 사용됩니다. 데이터가 계속해서 증가하면 일부 가상 노드에 많은 양의 데이터가 포함되어 가상 노드에 데이터가 고르지 않게 분산될 수 있습니다. 분할이 가능합니다. 이 분할은 원본 가상 노드만 두 개로 분할되므로 모든 데이터를 다시 해시하고 분할할 필요가 없습니다. 가상 노드가 분할된 후에도 물리적 서버의 로드가 여전히 불균형한 경우 서버 간 일부 가상 노드의 스토리지 배포만 조정하면 됩니다. 이는 데이터가 증가함에 따라 물리적 서버의 수를 동적으로 확장할 수 있으며 기존 해싱 알고리즘을 사용하여 모든 데이터를 재배포하는 것보다 비용이 훨씬 저렴합니다.

위 내용은 일관된 해싱이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.