XDCR(Cross Datacenter Replication) 이해 – Part 1

Posted by b모노리스d
2019. 1. 31. 13:34 IT/NoSQL
반응형

XDCR(Cross Datacenter Replication) 이해 – Part 1

 

당신이 카우치베이스를 잘 알고 있다면, 당신은 확실히 XDCR을 알 것이다.

응용 프로그램에 대해 Couchbase를 사용하는 경우 XDCR을 사용할 가능성이 매우 높다.

XDCR은 고객이 가장 좋아하는 제품 중 하나라고 해도틀린 말은 아닐 것이다.

지금 XDCR을 멋지게 만드는 것에 관심이 있다면, 제대로 들어온 것이며, 계속해서 읽으십시오.

반대로, 만약 여러분이 무슨 말을 하고 있는지 모른다면, 이것은 여러분이 그것에 대해 배울 수 있는 기회랍니다.


복제는 향상된 성능, 고가용성 및 내결함성을 제공하기 위한 분산시스템의 효율성의 핵심이다. XDCR은 두 개의 Couchbase 클러스터간에 데이터를 복제하는 데 사용되는 고성

능 복제 기술이다.

이것은 클러스터 내 복제를 보완한다. XDCR은 비동기식 복제를 제공하며, 궁극의 일관성을 통해 사이트 간 데이터 일관성을 유지한다.

이는 단일 돌연변이 복사본이 실행되자마자 승인이 애플리케이션에 전송되고 결국 데이터가 토폴로지의 서로 다른클러스터 간에 일관된다는 것을 의미한다.

 

 

기술의 핵심 원칙

고성능: XDCR은 대기 시간이 매우 짧은 네트워크 및 메모리 속도로 작동하는 고성능 복제 시스템이다. 복제는 메모리에 대한 메모리다.

독립적으로 확장 가능한 시스템 : XDCR은 클러스터를 추가하거나 제거할 수 있고 위상의 모든 클러스터를 다른클러스터에 영향을 미치지 않고 스케일업 또는 스케일다운

할 수 있는 피어 투 피어 아키텍처

인프라 불가지론: XDCR은 구축 플랫폼에 관계없이 베어 메탈, VM, 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 또는 컨테이너로 데이터를 복제하는 데사용할 수 있다.

토폴로지 인식: XDCR은 토폴로지를 인식하며 노드가 클러스터에서 추가/제거될 때 시스템이수동 개입 없이 복제를 조정하고 관리함

단순화된 설정 및 관리: XDCR은 두 개의 Couchbase 클러스터 간에 <15초 이내에 설정될 수 있다. 일단 설정되면, 문서는 원본과 대상 간에 계속 동기화된다. 페일오버나 재

조정 같은토폴로지 변경 중에도 수동 개입 없이 작동한다.

유연한 위상 : 단방향, 양방향, 허브및 스포크, , 메시 등 복잡한 위상을 설정할 수 있다.

탄력적 : 모든 네트워크 장애의 경우, XDCR은 중단된 곳으로부터 복제를재개할 수 있다. 또한 XDCR 복제가 성공할 때까지 계속 재시도 한다.

 

 

XDCR 내부 구조

Couchbase 서버 아키텍처에 익숙해지려면 이 대화를 들어 보십시오.

이 블로그에서는 XDCR 아키텍처에 초점을 맞출 것이다.




상위 레벨의 흐름을 설명하기 위해 애플리케이션 서버의 애플리케이션 데이터가 클라이언트 SDK를 통해 내장된 메모리(캐시)에 기록됨.

이 데이터가 메모리에 저장되면 복제 및 지속성을 위해 다른 대기열로 채널 조정됨.


클러스터 간 복제는 위의 그림에서 표시한 대로 메모리 간에서 발생한다. 이것은 XDCR이 매우 짧은 대기시간을 제공할 수 있게 하는 주요 요인들 중 하나이다.


또한 소스와 타깃의 노드 간에 복제가 매우 유사함.

복제 대기열은 대역폭 가용성과 원하는 성능에 따라 2-100 사이에서 튜닝할 수 있다.




카우치베이스에 있는 버킷은 문서를 위한 논리적인 컨테이너다. XDCR은 버킷 레벨에서 설정할 수 있다. 각 버킷은 vbuckets라고 하는 1024개의 가상 버킷으로 분할됨.

이러한 vbuckets는 각 클러스터의 노드 간에 균등하게 분할된다. 이러한각 노드는 결국 일부 활성 및 일부 복제본 데이터가 된다. XDCR은 클러스터 내의 이러한 노드 간

에 복제를 분산시킨다.


카우치베이스는 주문된 changelog를 이용해 데이터 상태를 전달하기 위해 "데이터베이스 변경 프로토콜(DCP)"이라는 스트리밍 프로토콜을 유지한다. XDCR은 이 프로

토콜의 소비자로, 변화를 전파하기 위해 DCP에 의존한다.


XDCR 복제 대기열은 XDCR 관련 변경 사항을 유지 관리하며, XDCR 작업자 스레드는 노드에서 지정된 활성 vbucket에 대한 변경 사항을 선택하고 대상 클러스터에서 

vbucket을 유지하는 원격 노드에 변경 사항을 전달한다. 아키텍처에서는 지연 시간이 짧고 처리량이 높은 특성을 가진 각 vbucket의 복제를 위해 

중앙집중적 조정이 필요하지 않다. 가용 대역폭에 따라 처리량을 극대화하도록 작업자 스레드수를 구성할 수 있다.

XDCR은 체크포인트를 유지한다. 네트워크 장애 또는 소스 클러스터 페일오버등으로 인해 복제가 중단될 때마다 XDCR은 마지막 체크포인트에서 복제를 재개한다.

떤 이유로든 성공하지 못한 경우, XDCR은 성공할 때까지 계속재시도한다. 복제는 또한 키만 복제하는 비관적인 복제와 키와 값이 모두 복제될 수 있는 낙관적인 복제에

서도일어난다.


또한 XDCR은 문서 압축, 네트워크 조절및 낙천적 복제와 같은 기능을 통해 대역폭 보존을 위해 최적화되어 있으며, 여기서 복제를 위해 문서를압축하고 대역폭 활용도

를 제한하며, 지연 시간을 줄이기 위해 특정 임계값까지 낙천적인 복제를 선택하여문서를 복제한다.


XDCR 시리즈의 첫 번째 부분에서 XDCR의 정의, 작동 방식 및 효율적인 복제 시스템에 대한 좋은 개요를 제공받았기를 바란다.


다음 파트에서 이 제품의 기능, 이점, 애플리케이션, 성능 튜닝 등에 대해 자세히 알아보도록 하자


출처 : Chaitra Ramarao, 2018-12-01, https://blog.couchbase.com/understanding-xdcr-part-1/



반응형

'IT > NoSQL' 카테고리의 다른 글

Couchbase Eventing Service 예제  (0) 2019.01.28
$(document).ready(function(){ var tmpLogin = document.getElementsByClassName("tt_menubar_logout")[0].getElementsByTagName("a")[0]; tmpLogin.className = ""; tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그아웃",' Logout'); tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그인",' Login'); document.getElementById("loginout_append").innerHTML = tmpLogin.outerHTML; });