우리는 이전 게시물 데이터 센터 간 복제를 설정하는 것이 얼마나 쉬운지(XDCR), 오늘은 XDCR이 왜 그렇게 훌륭한 기능인지 조금 더 자세히 알아보겠습니다.
우선, XDCR을 사용하면 서로 다른 크기의 클러스터 간에 데이터를 복제할 수 있으므로 다음과 같은 경우에 탁월한 옵션입니다. 재해 및 복구 요금제에 가입하세요. 그 외에도 사용자에게 데이터를 더 가까이 전달할 수 있는 간단하면서도 강력한 방법입니다.
복제는 메모리 대 메모리로 이루어집니다. 따라서 모든 쓰기는 먼저 메모리에 저장된 다음 복제 대기열에 저장되어 여러 스레드를 통해 네트워크를 통해 전송됩니다. 따라서 전체 성능은 네트워크 속도에 의해서만 제한됩니다.
또한 토폴로지를 인식하므로 소스 클러스터에서 노드를 추가하거나 제거할 때마다 대상 클러스터에서 아무런 조치를 취할 필요가 없습니다. 연결을 다시 설정하고 모든 것을 자동으로 처리합니다.
또한 랙 영역 인식 기능을 제공하여 활성 데이터와 복제본을 '그룹'으로 분리한 다음 서로 다른 랙, 영역 또는 VM 호스트를 사용하도록 매핑하여 다중 노드 장애 이벤트에 대비할 수 있습니다.
복제는 버킷 수준(둘 이상의 클러스터의 버킷 간)에서 이루어지며, 다음과 같이 구성할 수 있습니다.
- 단방향: 클러스터 중 하나에 기록된 데이터만 복제되며, 예를 들어 대기 클러스터를 구성하려는 경우에 사용됩니다.
- 양방향: (액티브-액티브 배포라고도 함) 두 클러스터 모두 데이터를 쓸 수 있고 모든 변경 사항이 클러스터 간에 동기화됩니다. 요약하면, 양방향 매핑은 서로를 가리키는 두 개의 단방향 복제를 말합니다.
- 하이브리드: 양방향 및 단방향 토폴로지의 조합입니다.
DCP를 사용하면 언제든지 복제를 일시 중지할 수 있으며, 복제를 다시 시작하면 가장 최근 체크포인트에서 복구가 시작됩니다.
데이터베이스 변경 프로토콜
데이터베이스 변경 프로토콜(DCP)은 내부적으로 정렬된 변경 로그를 사용하여 데이터 상태를 전달하기 위해 사용하는 고성능 스트리밍 프로토콜입니다. 예를 들어, 통신이 중단된 경우 DCP는 연결이 다시 연결되면 마지막으로 업데이트에 성공한 정확한 지점부터 다시 시작할 수 있는 등 일시적인 오류에도 견고하고 탄력적으로 대응할 수 있습니다.
또한 필요한 데이터만 전송하도록 최적화되어 있습니다. 예를 들어 문서에 여러 개의 변경 사항이 있는 경우 가장 최근 버전만 복제되도록 표시됩니다.
XDCR은 DCP를 사용하여 변경 내용을 전파합니다. 이렇게 하면 연결 문제와 관계없이 모든 클러스터에 동일한 문서가 복제되도록 보장할 수 있습니다.
XDCR의 또 다른 흥미로운 두 가지 기능인 충돌 해결과 데이터 필터링에 대해서도 살펴봅시다:
충돌 해결
충돌은 동일한 문서가 두 위치에서 동기화되기 전에 서로 다른 두 위치에서 수정되는 것을 말합니다. 일관성을 유지하려면 하나의 버전을 '올바른' 버전으로 선택해야 합니다. 충돌 해결은 사용할 문서 버전을 일관성 있고 결정적으로 선택할 수 있는 방법을 제공합니다.
카우치베이스의 충돌 해결은 버킷을 생성하는 동안 설정되며 나중에 변경할 수 없습니다. 현재 두 가지 유형의 충돌 해결이 지원됩니다: 타임스탬프와 시퀀스 번호입니다.
시퀀스 번호
문서가 변경될 때마다 다음과 같은 카운터가 증가합니다. 개정 번호를 사용하므로 두 문서 간에 충돌이 발생할 때마다 수정본 번호가 가장 높은 문서가 두 클러스터에서 우선합니다.
타임스탬프
타임스탬프 기반 충돌 해결(TCR)은 데이터베이스에서 가장 일반적으로 지원되는 충돌 해결 메커니즘으로, 가장 최근의 타임스탬프가 있는 문서를 선택해 충돌을 해결합니다. 이를 효과적으로 수행하려면 각 서버에서 생성한 타임스탬프가 밀접하게 정렬되어 있어야 합니다.
그러나 TCR은 문서가 업데이트된 횟수를 무시하므로 데이터 손실이 증가할 수 있으며, 서버의 클럭 중 하나가 빠르거나 느리면 충돌 해결이 엉망이 될 수 있습니다. 그렇기 때문에 Couchbase의 기본 옵션은 "시퀀스 번호"입니다.
데이터 필터링
기본적으로 대상 버킷 내의 모든 문서가 복제되지만 Couchbase 6.5부터는 다음을 사용할 수 있습니다. 표현식 필터링 를 클릭하여 복제할 데이터를 필터링합니다.
고급 필터링은 정규식, 산술, 논리 및 관계 연산자, 키워드, 표현식, 숫자 함수, 날짜 함수, 음수 룩헤드 등 다양한 언어 구성을 지원해 필터를 구축할 수 있습니다. 문서의 키, 값, 메타데이터, CAS에 이러한 기능을 적용할 수 있습니다. N1QL 쿼리의 술어와 마찬가지로, 지원되는 언어 구문을 사용하여 표현식을 구성할 수 있습니다.
에서 삭제 필터 세션에서 삭제 작업, 문서 만료를 복제하지 않도록 선택할 수도 있습니다. 또는 제거 TTL 를 클릭하고 보관 목적으로 저장합니다.
필터는 즉석에서 편집할 수도 있으며 복제는 일시 중지/재개 없이 계속됩니다.
기본적으로 XDCR은 필터가 수정될 때 버킷을 플러시하지 않습니다. 필요한 경우 관리자가 이 단계를 수동으로 실행해야 합니다.
결론
재해 및 복구 계획이 필요하거나 데이터를 사용자에게 더 가까이 가져가려는 경우, 교차 데이터 센터 복제(XDCR)는 설정이 간단하고 유지 관리가 거의 필요하지 않으며 아마데우스, eBay, Viber와 같이 부하가 많은 여러 사용 사례에서 많은 테스트를 거친 기능으로 사용을 고려해야 합니다.
카우치베이스가 포함된 XDCR에 대한 자세한 내용은 다음을 참조하세요. 카우치베이스 개발자 포털 또는 트위터 @deniswsrosa
08/08/19에 업데이트됨 Couchbase 6.5에 새로운 XDCR 기능 추가