2010-01-26 5 views
37
  1. 누구나 redis 복제와 redis sharding의 차이점을 알고 계십니까?
  2. 그들은 무엇을 위해 사용합니까? Redis는 데이터를 메모리에 저장합니다. 이는 복제/샤딩에 어떤 영향을 줍니까?
  3. 둘 다 함께 사용할 수 있습니까?

고맙습니다!Redis 복제 및 Redis Sharding (클러스터) 차이

답변

102

샤딩은 거의 직각 개념이지만 잘 작동하지만 거의 복제의 정반대입니다.

샤딩은 분할이라고도하며 키를 기준으로 데이터를 분할합니다. 미러링이라고도하는 복제는 모든 데이터를 복사하는 것입니다.

샤딩은 성능을 향상시켜 하나의 리소스에 대한 적중 및 메모리 부하를 줄이는 데 유용합니다. 복제는 높은 가용성의 읽기에 유용합니다. 여러 개의 복제본을 읽으면 모든 자원의 적중률도 감소하지만 모든 자원의 메모리 요구량은 동일하게 유지됩니다. 슬레이브에 쓰는 동안 복제는 마스터 -> 슬레이브 일뿐입니다. 그래서 여러분은이 방법으로 글을 스케일 할 수 없습니다.

[1 : Apple], [2 : Banana], [3 : Cherry], [4 : Durian]과 같은 두 개의 튜플이 있다고 가정하면 우리는 두 대의 A와 B 머신을 갖게됩니다. 기계 A에서 2,4; 복제시에는 머신 A에 1,2,3,4 키를 머신 B에 저장합니다.

샤딩은 일반적으로 일관된 해시를 수행하여 구현됩니다 열쇠에. 위의 예제는 다음 해시 함수 h (x) {return x % 2 == 0? A : B}로 구현되었습니다.

개념을 결합하려면 각 샤드를 복제 할 수 있습니다. 위의 경우 시스템 A의 모든 데이터 (2,4)는 시스템 C에서 복제 될 수 있고 시스템 B의 모든 데이터 (1,3)는 시스템 D에서 복제 될 수 있습니다.

모든 키 - 값 저장소 (Redis가 유일한 예일뿐)는 특정 교차 키 기능이 더 이상 작동하지 않지만 샤딩을 지원합니다. Redis는 상자 밖으로 복제를 지원합니다.

+6

cool. 나는 대답을 redis에만 국한되지 않는다고 생각한다. – joetsuihk

+3

(일반적으로) 좋은 대답이지만, 정말로 질문에 대답하지는 않는다. –

+2

나는이 대답이 질문자가 물었던 것에 좋은 반응을한다고 생각한다. 대단히 간단하면서도 정확한 설명. +1 –

14

간단히 말해서 두 개념의 근본적인 차이점은 Sharding을 사용하여 쓰기를 확장하는 반면 복제는 읽기를 확장하는 데 사용된다는 것입니다. Alex는 이미 언급했듯이 복제는 HA를 구현하는 솔루션 중 하나입니다.

예, 클러스터의 노드를 통해 샤드를 복제하는 방법을 고려하면 일반적으로이 둘은 함께 사용됩니다.

세 번째 질문과 관련하여 RAM 플러시 옵션 대신 Redis Append Only File (AOF)을 사용하는 것이 좋습니다. 쓰기 속도면에서 사소한 비용으로도 쓰기의 신뢰성이 훨씬 높아집니다. 그것은 mysql 바이너리 로그와 매우 흡사합니다. 1 fsync/초를 사용하는 것이 좋습니다.