[REDIS] 쓰기를 확장하는 방법으로 일관된 해싱
REDIS쓰기를 확장하는 방법으로 일관된 해싱
나는 내가 곧 정상 궤도에 오전 있는지 알아 내려고 노력하고있다. 나는 (실시간) 통계 / 분석 서비스를 구축, 그리고 난 일부 세트와 해시를 저장하는 레디 스를 사용합니다.
이제 내가 약간의 성공을 가정하고 나는 밖으로 확장 할 수 있습니다. 해시 링 기술은 좋은 보이는,하지만 난 단지 캐싱 시나리오에 적합 있다는 인상을 가지고있다.
어떤 노드가 다운되면? 이론적으로, 그 키는 이제 다른 노드가 소유합니다. 실제로, 그들은 데이터가 없습니다. 그것은 바로 분실? 노드를 추가 / 제거와 동일합니다.
나는 몇 가지 근본적인 일을 실종? 이 가난한 사람의 클러스터가 될 수 있습니까?
해결법
-
==============================
1.클러스터의 여러 노드를 사용하는 두 가지 이유가 있습니다 :
클러스터의 여러 노드를 사용하는 두 가지 이유가 있습니다 :
두 사람은 근본적으로 다른,하지만 당신은 모두를 구현할 수 있습니다 - 표준 마스터 / 슬레이브 설정이 아니라 하나의 노드와 노드의 집합 점에 일치하는 해시를 사용합니다.
클러스터가 기본 데이터 캐시보다는 저장하는 경우에는 데이터를 복사 포함 다른 재분배 전략이 필요합니다.
내 구현은 클라이언트가 해시에 대한 64 K 버킷 중 하나를 선택 가지며 노드에 그 버킷 매핑 테이블을 가진 기반으로합니다. 처음에는 모든지도는 # 1 노드한다.
노드 1이 너무 커질 때, 그 슬레이브는 마스터 노드 2가되고 테이블은 노드의 노드 # 2 # 1 키를 반을지도하도록 업데이트됩니다. 이 시점에서 모든 읽기 및 쓰기는 새로운 매핑 작업을하고 당신은 잘못된 노드에서 지금 키를 청소해야합니다. 성능 요구 사항에 따라 한 번에 모든 키를 확인하거나 만료 시스템처럼 키의 임의의 선택을 확인할 수 있습니다.
from https://stackoverflow.com/questions/5641829/consistent-hashing-as-a-way-to-scale-writes by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] laravel 5.5 Predis "집계 / RedisCluster.php의 풀에서 사용할 수 없음 연결 : 337" (0) | 2020.01.20 |
---|---|
[REDIS] 레디 스 클러스터에 연결 실패 (0) | 2020.01.20 |
[REDIS] 레디 스 설정하고 해결의 관계를 분류 (0) | 2020.01.20 |
[REDIS] sidekiq 노동자가 perform_async으로 수행 된 경우 확인하는 방법 레일 (0) | 2020.01.20 |
[REDIS] 레디 스과의 화합물 검색어 (0) | 2020.01.20 |