복붙노트

[REDIS] 쓰기를 확장하는 방법으로 일관된 해싱

REDIS

쓰기를 확장하는 방법으로 일관된 해싱

나는 내가 곧 정상 궤도에 오전 있는지 알아 내려고 노력하고있다. 나는 (실시간) 통계 / 분석 서비스를 구축, 그리고 난 일부 세트와 해시를 저장하는 레디 스를 사용합니다.

이제 내가 약간의 성공을 가정하고 나는 밖으로 확장 할 수 있습니다. 해시 링 기술은 좋은 보이는,하지만 난 단지 캐싱 시나리오에 적합 있다는 인상을 가지고있다.

어떤 노드가 다운되면? 이론적으로, 그 키는 이제 다른 노드가 소유합니다. 실제로, 그들은 데이터가 없습니다. 그것은 바로 분실? 노드를 추가 / 제거와 동일합니다.

나는 몇 가지 근본적인 일을 실종? 이 가난한 사람의 클러스터가 될 수 있습니까?

해결법

  1. ==============================

    1.클러스터의 여러 노드를 사용하는 두 가지 이유가 있습니다 :

    클러스터의 여러 노드를 사용하는 두 가지 이유가 있습니다 :

    두 사람은 근본적으로 다른,하지만 당신은 모두를 구현할 수 있습니다 - 표준 마스터 / 슬레이브 설정이 아니라 하나의 노드와 노드의 집합 점에 일치하는 해시를 사용합니다.

    클러스터가 기본 데이터 캐시보다는 저장하는 경우에는 데이터를 복사 포함 다른 재분배 전략이 필요합니다.

    내 구현은 클라이언트가 해시에 대한 64 K 버킷 중 하나를 선택 가지며 노드에 그 버킷 매핑 테이블을 가진 기반으로합니다. 처음에는 모든지도는 # 1 노드한다.

    노드 1이 너무 커질 때, 그 슬레이브는 마스터 노드 2가되고 테이블은 노드의 노드 # 2 # 1 키를 반을지도하도록 업데이트됩니다. 이 시점에서 모든 읽기 및 쓰기는 새로운 매핑 작업을하고 당신은 잘못된 노드에서 지금 키를 청소해야합니다. 성능 요구 사항에 따라 한 번에 모든 키를 확인하거나 만료 시스템처럼 키의 임의의 선택을 확인할 수 있습니다.

  2. from https://stackoverflow.com/questions/5641829/consistent-hashing-as-a-way-to-scale-writes by cc-by-sa and MIT license