반응형
레디스의 복제에 대해서, 전반적으로 조심스럽게 정리해보면...
- 우선, 일반적으로 말하는 복제의 개념에 대해서 정리해보자..
- 복제는 동일한 데이터를 다중의 노드에 중복하여 저장하는 것을 말하곤 함.
- 그럼 레디스에서 복제는 ?
- 레디스는 복제를 위해서 Master / Slave 의 복제 개념을 사용함.
- 레디스의 복제에서 Master/Slave 의 복제 역할은?
- Master
- 복제를 위한 데이터의 원본 역할
- Slave
- Master 노드에 데이터 복제요청을 하고, 데이터를 수신하여 데이터를 동기화하는 역할
- Master
- 레디스의 복제에서 Master/Slave 의 복제 역할은?
- 레디스는 복제를 위해서 Master / Slave 의 복제 개념을 사용함.
- 레디스의 복제의 목적
- 레디스의 복제는 주로 읽기 성능의 증대를 위해서 사용됨
- 통상적으로 인스턴스 하나가 처리할 수 있는 TPS 는 보통 1만 ~ 2만이라고 함.
- 레디스 명령은 읽기와 쓰기에 따른 성능 편차가 존재하지않는다고 함.
- 그래서, 레디스의 읽기 성능을 증대시키기위해서 복제를 사용하여 보통 클러스터를 구성함.
- 단, 서비스를 제공하는 성격에 따라 다르지만, 대부분의 서비스는 데이터베이스에 대한 읽기와 쓰기 비율이 1:9 or 2:8 정보를 보임.
- 레디스 처리 성능한계에 맞닥뜨리게 되었을 때 레디스의 복제를 고려할 수 있음.
- 그래서, 레디스의 읽기 성능을 증대시키기위해서 복제를 사용하여 보통 클러스터를 구성함.
- 레디스의 복제에 대한 연산 기준으로 보면...
- 보통 아래와 같이 Master/Slave로 읽기와 쓰기 연산을 완전히 분리하는 모델.
- Master
- 쓰기 연산 수행.
- Slave
- 읽기 연산 수행.
- Master
- 읽기연산과 쓰기연산을 완전히 분리하면, 확장구조의 유연성을 가질 수 있음.
- 반면, 읽기와 쓰기 연산을 분리하기 위해서 애플리케이션 레벨에서 사용할 수 있는 명령의 한계와 애플리케이션의 복잡도 증가는 발생하게 됨.
- 즉, 서비스의 상황과 애플리케이션의 성격에 따라서 복제의 적용을 심사숙고해서 고려해야함.
- 보통 아래와 같이 Master/Slave로 읽기와 쓰기 연산을 완전히 분리하는 모델.
- 복제의 동기화
- Slave 노드가 Master 노드의 데이터를 실시간으로 복제하여 데이터의 동기화를 유지함.
- Slave 노드가 시작할 때, Master 노드에게 복제를 요청하고 최초 복제가 완료된 이후, 변경사항만 업데이트함.
- Slave 노드가 복제를 요청하므로, 즉, Master 노드의 위치 정보는 Slave 노드가 가지고 있음.
- 다시말해서, 레디스의 클러스터에 노드를 추가할 때 Master 노드의 설정 변경이나 Master 노드의 재시작등이 필요하지 않게됨.
- 이것이 레디스개발자가 복제에 대해 개발하기 전에 설계할 때 주요 아이디어라고 저는 생각됨. ^^;
- 결과적으로, 레디스의 복제는 Master 노드가 Slave 노드의 정보를 가지지 않기 때문에 다양한 구조의 복제 구성이 가능해지게 됨.
- 다시말해서, 레디스의 클러스터에 노드를 추가할 때 Master 노드의 설정 변경이나 Master 노드의 재시작등이 필요하지 않게됨.
결론
- 레디스의 주요 복제 개념은 Master/Slave 복제개념을 사용함.
- 레디스는 Master/Slave 복제개념을 사용할 때, Mater 노드의 위치정보를 Slave 노드에서 가지고 있게 하면서, 다양한 구조의 복제 구성을 가지는 유연성이 생김.
- 다음주제는 단일 복제에 대해서 정리를 한번 해보겠습니다. ^^; 이상입니다.
- 오늘의 명언 한마디
- 협상의 기준을 정할 때, 기억해야 할점은, 다양한 기준 가운데 어떤 것이, 나에게 가장 유리한지를 파악하는 것이다. 그래서 협상 고수는 내가 제시할 수 있는 기준만 생각하지 않는다. 상대가 어떤기준을 제시할까에 대해서도 치밀하게 연구한다. 그리고 상대가 제안하는 기준이 이번 협상에서 적합하지 않다는 논리를 만들어 낸다.
- 그리고, 좋은 협상가는 상대조차 미쳐 생각지 못했던 또 다른 가치를 자극한다. 이를 통해 나에게 유리한 협상조건을 만들면서 상대도 동시에 만족하게 한다. - 최철규, 김한솔지음, "협상은 감정이다" 중에서...
- 오늘의 영어 한마디
- 질문) That guy is really dragging his tail.
- 저 녀석, 왜 저렇게 느려터진 거야.
- 응답) Calm down, you'll get a chance to pass him.
- 야, 진정해. 있다가 우리가 추월하면 돼.
- 해설
- This(That) guy 는 "이녀석(저녀석)" 이라는 의미.
- 주로 남성을 의미함.
- drag 는 "질질 끌다" 라는 의미의 동사.
- tail 은 "꼬리(자동차의 뒷부분)"의 의미이고 drag와 함께 쓰이면, "작업 or 일" 을 꾸물거리다라는 의미가 됨.
- This(That) guy 는 "이녀석(저녀석)" 이라는 의미.
- 질문) That guy is really dragging his tail.
728x90
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
28.Redis, 레디스 복제에 대해서 알아볼까요? 다중 복제의 단점을 보완하기 위한 계층형 복제란 ? ^^ (0) | 2021.01.15 |
---|---|
26.Redis, 레디스 복제에 대해서 알아볼까요? 단일 복제는 ? ^^ (0) | 2021.01.15 |
24.Redis, 데이터 처리량 확장을 위한 분산 기법에 대해서 알아보자구요.^^ (0) | 2021.01.15 |
23.Redis, 레디스 공유객체에 대해서 알아볼께요. (0) | 2021.01.15 |
22.Redis, 레디스문자열 구현에 대해서 알아볼께요. (0) | 2021.01.14 |