master-salve 또는 sentinel 모드와 달리 클러스터와 이들의 가장 큰 차이점은 처음 두 개는 전체 저장소이므로 많은 메모리를 소비하고 배럴 효과가 있는 반면 클러스터 클러스터는 분산 저장소, 즉 각 Redis는 다양한 콘텐츠를 저장합니다.
redis-cluster는 총 16384개의 해시 슬롯을 사용할 수 있도록 설계되었으며 각 마스터에는 슬롯의 일부가 할당됩니다. 배포 알고리즘은 다음과 같습니다. [hash_slot = crc16(key) mod 16384] }, 사용 가능한 키 {}개를 가져오세요. 그렇지 않으면 전체가 사용 가능한 키가 될 수 있습니다. 클러스터에는 최소 3개의 마스터와 3개의 슬레이브가 있어야 하며, 각 인스턴스는 서로 다른 구성 파일을 사용합니다.
모든 Redis 노드는 서로 연결되어 있으며(PING-PONG 메커니즘) 전송 속도와 대역폭을 최적화하기 위해 내부적으로 바이너리 프로토콜이 사용됩니다.
노드 장애는 클러스터 노드 중 절반 이상이 장애를 감지한 경우에만 적용됩니다.
클라이언트는 중간 프록시 계층이 필요 없이 Redis 노드에 직접 연결됩니다. 클라이언트는 클러스터의 모든 노드에 연결할 필요가 없으며 클러스터에서 사용 가능한 노드에 연결하기만 하면 됩니다.
redis-cluster는 모든 물리적 노드를 [0-16383] 슬롯에 매핑하고 클러스터는 노드슬롯value
redis-cluster 투표: 내결함성
을 유지 관리합니다. 1. 투표 프로세스에는 클러스터의 모든 마스터가 참여합니다. 절반 이상의 마스터 노드와 마스터 노드 간의 통신 시간이 초과되면(cluster-node-timeout) 현재 마스터 노드가 다운된 것으로 간주됩니다.
2. 언제 전체 클러스터를 사용할 수 없게 됩니까(cluster_state:fail)?
클러스터의 마스터가 하나라도 죽고 현재 마스터에 슬레이브가 없으면 클러스터는 실패 상태로 진입합니다. 클러스터의 슬롯 매핑 [0-16383]이 불완전할 때 상태가 실패합니다.
redis-3.0.0.rc1이 추가되었습니다. Cluster-require-full-coverage 매개변수는 기본적으로 꺼져 있습니다.
클러스터의 마스터 중 절반 이상이 끊기면 슬레이브 유무에 관계없이 클러스터는 실패 상태로 들어갑니다.
redis-cluster 아키텍처에서 redis-master 노드는 일반적으로 읽기 및 쓰기를 수신하는 데 사용되는 반면, redis-slave 노드는 일반적으로 해당 마스터와 동일한 슬롯 세트를 갖습니다. -master 실수로 실패하면 해당 슬레이브가 임시 redis-master로 업그레이드됩니다.
공식 Redis 문서에는 redis-cluster 아키텍처에 대한 설명이 있습니다. 클러스터 아키텍처에서 기본적으로 redis-master는 일반적으로 읽기 및 쓰기를 수신하는 데 사용되고 redis-slave는 백업에 사용됩니다. 요청이 슬레이브로 시작되면 처리를 위해 해당 키가 있는 마스터로 직접 리디렉션됩니다.
그러나 redis-cluster에서 잠재적으로 만료된 데이터를 읽는 것이 마음에 들지 않고 쓰기 요청에 관심이 없다면 readonly 명령을 통해 슬레이브를 읽을 수 있도록 설정한 다음 슬레이브를 통해 관련 키를 얻어 분리를 달성할 수도 있습니다. 읽기와 쓰기의.
더 많은 Redis 지식을 알고 싶다면 redis 입문 튜토리얼 칼럼을 주목해 주세요.
위 내용은 Redis 클러스터 클러스터 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!