애플리케이션 디자인

데이터 센터 간 복제(XDCR) 이해 - 1부

카우치베이스에 대해 잘 알고 계신다면 다음과 같은 사실을 알고 계실 것입니다. XDCR. 애플리케이션에 Couchbase를 사용하고 있다면 XDCR을 사용하고 있을 가능성이 매우 높습니다. XDCR은 실제로 고객들에게 가장 사랑받는 제품 중 하나라고 해도 틀린 말은 아닐 것입니다. XDCR이 왜 그렇게 멋진지 알고 싶으시다면 이 글을 계속 읽어보시기 바랍니다. 반대로 제가 무슨 말을 하는지 전혀 모르신다면, 지금이 바로 그것에 대해 배울 수 있는 기회입니다.

복제는 향상된 성능, 고가용성 및 내결함성을 제공하기 위한 분산 시스템의 효율성의 핵심입니다. XDCR은 두 개의 카우치베이스 클러스터 간에 데이터를 복제하는 데 사용되는 고성능 복제 기술입니다. 이는 클러스터 내 복제를 보완합니다. 즉, 단일 복제본이 실행되는 즉시 애플리케이션에 승인이 전송되고 결국 토폴로지의 여러 클러스터에 걸쳐 데이터가 일관되게 유지되는 방식으로 비동기 복제를 제공하고 사이트 간에 데이터 일관성을 유지합니다.

이 기술의 핵심 원칙

  1. 높은 성능 : XDCR은 매우 짧은 지연 시간으로 네트워크와 메모리의 속도로 작동하는 고성능 복제 시스템입니다. 복제는 메모리에서 메모리로 이루어집니다.
  2. 독립적으로 확장 가능한 시스템 : XDCR은 클러스터를 추가하거나 제거할 수 있고 토폴로지의 모든 클러스터를 다른 클러스터에 영향을 주지 않고 확장하거나 축소할 수 있는 피어 투 피어 아키텍처를 갖추고 있습니다.
  3. 인프라에 구애받지 않는 : XDCR은 베어메탈, 가상머신, 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 또는 컨테이너 등 배포 플랫폼에 관계없이 두 카우치베이스 클러스터 간에 데이터를 복제하는 데 사용할 수 있습니다.
  4. 토폴로지 인식 :  XDCR은 토폴로지를 인식하므로 노드가 클러스터에 추가되거나 클러스터에서 제거될 때 수동 개입 없이도 시스템이 그에 따라 복제를 조정하고 관리합니다.
  5. 간소화된 설정 및 관리: XDCR은 두 개의 카우치베이스 클러스터 간에 15초 이내에 설정할 수 있습니다. 설정이 완료되면 소스와 대상 간에 문서가 지속적으로 동기화됩니다. 장애 조치나 리밸런싱과 같은 토폴로지 변경 중에도 수동 개입 없이 작동합니다.
  6. 유연한 토폴로지 : 단방향, 양방향, 허브 및 스포크, 링, 메시 등 어떤 복잡한 토폴로지라도 설정할 수 있습니다.
  7. 탄력적 : 네트워크 장애가 발생하면 XDCR은 중단된 지점부터 복제를 다시 시작할 수 있습니다. 또한 복제가 성공할 때까지 XDCR은 계속 재시도합니다.

XDCR 내부

Couchbase 서버 아키텍처에 익숙해지려면 다음 내용을 들어보시기 바랍니다. talk.

이 블로그에서는 XDCR 아키텍처에 초점을 맞추겠습니다.

흐름을 높은 수준에서 설명하자면, 앱 서버의 애플리케이션 데이터는 클라이언트 SDK를 통해 내장 메모리(캐시)에 기록됩니다. 이 데이터가 메모리에 저장되면 복제 및 지속성을 위해 여러 대기열로 채널화됩니다. 클러스터 간 복제는 위 그림과 같이 메모리와 메모리 간에 이루어지며, 이는 XDCR이 매우 짧은 지연 시간을 제공할 수 있는 주요 요인 중 하나입니다.

또한 복제는 원본과 대상의 노드 간에 고도로 병렬로 이루어집니다. 복제 대기열은 대역폭의 가용성과 원하는 성능에 따라 2~100개 사이에서 조정할 수 있습니다.

카우치베이스의 버킷은 문서를 위한 논리적 컨테이너입니다. XDCR은 버킷 수준에서 설정할 수 있습니다. 각 버킷은 v버킷이라고 하는 1024개의 가상 버킷으로 나뉩니다. 이러한 v버킷은 각 클러스터의 노드에 균등하게 분할됩니다. 이러한 각 노드는 활성 데이터와 복제 데이터를 보유하게 됩니다. XDCR은 클러스터의 이러한 노드 간에 복제를 분산시킵니다.

카우치베이스는 다음과 같은 스트리밍 프로토콜을 유지합니다. "데이터베이스 변경 프로토콜(DCP)"정렬된 변경 로그를 사용하여 데이터 상태를 전달합니다. XDCR은 이 프로토콜의 소비자입니다. 는 변경 사항을 전파하기 위해 DCP에 의존합니다.

XDCR 복제 대기열은 XDCR 관련 변경 사항을 유지 관리합니다. XDCR 워커 스레드는 노드에서 지정된 활성 v버킷에 대한 변경 사항을 가져와 대상 클러스터에서 활성 v버킷을 유지하는 원격 노드에 변경 사항을 전달합니다. 이 아키텍처는 짧은 지연 시간과 높은 처리량 특성을 고려한 각 v버킷의 복제를 위해 중앙 집중식 조정이 필요하지 않습니다. 사용 가능한 대역폭에 따라 처리량을 최대화하도록 워커 스레드 수를 구성할 수 있습니다.

XDCR은 체크포인트를 유지합니다. 네트워크 장애 또는 소스 클러스터 장애 조치 등으로 인해 복제가 중단될 때마다 XDCR은 마지막 체크포인트에서 복제를 재개합니다. 어떤 이유로든 복제에 실패하면 XDCR은 성공할 때까지 계속 재시도합니다. 복제는 키만 복제되는 비관적 복제와 키와 값을 모두 복제할 수 있는 낙관적 복제의 두 가지 모드로도 이루어집니다.

또한 XDCR은 압축, 네트워크 스로틀링, 낙관적 복제와 같은 기능을 통해 대역폭 보존에 최적화되어 있어 복제할 문서를 압축하고 대역폭 사용량을 제한하며 특정 임계값까지 낙관적 복제로 문서를 복제하도록 선택하여 지연 시간을 단축할 수 있습니다.

이 첫 번째 파트가 XDCR 시리즈 이해 를 통해 XDCR이 무엇인지, 어떻게 작동하는지, 왜 효율적인 복제 시스템인지에 대한 좋은 개요를 살펴보았습니다.

다음 파트에서는 기능, 이점, 애플리케이션, 성능 튜닝 등에 대해 자세히 알아볼 예정이니 기대해 주세요!

더 자세히 알고 싶은 특정 주제가 있다면 댓글에 추가해 주세요.

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Chaitra Ramarao, Sr. 제품 관리자, Couchbase Inc.

Chaitra Ramarao는 데이터베이스 툴링, 데이터센터 간 복제 및 파트너 통합을 선도하는 NoSQL 데이터베이스 회사인 Couchbase의 선임 제품 관리자입니다. 이전에는 카이저 퍼머넌트에서 데이터 분석 제품 관리와 휴렛팩커드에서 소프트웨어 개발을 담당했습니다. 그녀는 카네기 멜론에서 ECE 학사 학위와 엔지니어링 및 기술 혁신 관리 석사 학위를 받았습니다.

댓글 하나

  1. 안녕하세요 Chaitra,

    허브 & 스포크 모델에서 허브가 2개(양방향 복제 사용)인 경우 두 허브가 모두 스포크에 변경 사항을 보내야 하나요?

    그렇다면 허브에서 스포크까지 중복 복제가 이루어지고 있는 것입니다. 이는 최적이 아닙니다.

    그렇지 않은 경우, 즉 하나의 허브만 스포크에 복제하는 경우, 해당 허브가 다운되면 다른 허브에서 스포크로의 복제를 구성하기 위해 수동 개입이 필요하다는 문제가 있습니다.

    허브가 다른 허브로부터 변경 사항을 수신하면 스포크로 복제하지 않고 애플리케이션으로부터 변경 사항을 수신하면 스포크로 복제하도록 XDCR에 알리거나 구성할 수 있는 방법이 있는지 제안해 주세요. 그렇다면 두 허브에서 스포크까지 단방향 복제를 구성할 수 있으며 애플리케이션에서 변경 사항을 수신한 허브는 해당 변경 사항을 스포크에 복제하지만 다른 허브는 복제하지 않습니다. 애플리케이션에서 변경 사항을 수신하는 허브가 다운되면 다른 허브가 애플리케이션에서 변경 사항을 수신하기 시작하고 이를 스포크에 복제하기 시작합니다.

    고마워요

  2. 마이클 라이시 10월 13, 2023에서 12:15 오후

    >를 사용하면 두 허브 모두 스포크에 변경 사항을 보내야 하나요?
    > 예인 경우 허브에서 스포크까지 중복 복제가 있는 것입니다. 이는 최적이 아닙니다.

    한 허브는 다른 허브가 스포크에 복제를 보냈으므로 스포크가 이를 수신했다고 가정할 수 없습니다. DCP는 중복 복제를 방지합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.