본문 바로가기

좋아하는 것_매직IT/9.redis

25.Redis, 레디스에서 말하는 복제에 대해서 전반적으로 정리해 보면?

반응형

레디스의 복제에 대해서, 전반적으로 조심스럽게 정리해보면...

  • 우선, 일반적으로 말하는 복제의 개념에 대해서 정리해보자..
    • 복제는 동일한 데이터를 다중의 노드에 중복하여 저장하는 것을 말하곤 함.
  • 그럼 레디스에서 복제는 ?
    • 레디스는 복제를 위해서 Master / Slave 의 복제 개념을 사용함.
      • 레디스의 복제에서 Master/Slave 의 복제 역할은?
        • Master
          • 복제를 위한 데이터의 원본 역할
        • Slave
          • Master 노드에 데이터 복제요청을 하고, 데이터를 수신하여 데이터를 동기화하는 역할
  • 레디스의 복제의 목적
    • 레디스의 복제는 주로 읽기 성능의 증대를 위해서 사용됨
    • 통상적으로 인스턴스 하나가 처리할 수 있는 TPS 는 보통 1만 ~ 2만이라고 함.
    • 레디스 명령은 읽기와 쓰기에 따른 성능 편차가 존재하지않는다고 함.
      • 그래서, 레디스의 읽기 성능을 증대시키기위해서 복제를 사용하여 보통 클러스터를 구성함.
        • 단, 서비스를 제공하는 성격에 따라 다르지만, 대부분의 서비스는 데이터베이스에 대한 읽기와 쓰기 비율이 1:9 or 2:8 정보를 보임.
        • 레디스 처리 성능한계에 맞닥뜨리게 되었을 때 레디스의 복제를 고려할 수 있음.
  • 레디스의 복제에 대한 연산 기준으로 보면...
    • 보통 아래와 같이 Master/Slave로 읽기와 쓰기 연산을 완전히 분리하는 모델.
      • Master
        • 쓰기 연산 수행.
      • Slave
        • 읽기 연산 수행.
    • 읽기연산과 쓰기연산을 완전히 분리하면, 확장구조의 유연성을 가질 수 있음.
      • 반면, 읽기와 쓰기 연산을 분리하기 위해서 애플리케이션 레벨에서 사용할 수 있는 명령의 한계와 애플리케이션의 복잡도 증가는 발생하게 됨.
      • 즉, 서비스의 상황과 애플리케이션의 성격에 따라서 복제의 적용을 심사숙고해서 고려해야함.
  • 복제의 동기화
    • Slave 노드가 Master 노드의 데이터를 실시간으로 복제하여 데이터의 동기화를 유지함.
    • Slave 노드가 시작할 때, Master 노드에게 복제를 요청하고 최초 복제가 완료된 이후, 변경사항만 업데이트함.
    • Slave 노드가 복제를 요청하므로, 즉, Master 노드의 위치 정보는 Slave 노드가 가지고 있음.
      • 다시말해서, 레디스의 클러스터에 노드를 추가할 때 Master 노드의 설정 변경이나 Master 노드의 재시작등이 필요하지 않게됨.
        • 이것이 레디스개발자가 복제에 대해 개발하기 전에 설계할 때 주요 아이디어라고 저는 생각됨. ^^;
        • 결과적으로, 레디스의 복제는 Master 노드가 Slave 노드의 정보를 가지지 않기 때문에 다양한 구조의 복제 구성이 가능해지게 됨.

결론

  • 레디스의 주요 복제 개념은  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 일" 을 꾸물거리다라는 의미가 됨.
728x90
300x250