milvus-logo
LFAI
홈페이지
  • 개념

인메모리 복제본

이 항목에서는 작업 메모리에서 여러 세그먼트 복제를 활성화하여 성능과 가용성을 향상시키는 Milvus의 인메모리 복제(복제) 메커니즘에 대해 소개합니다.

인메모리 복제본을 구성하는 방법에 대한 자세한 내용은 쿼리 노드 관련 구성을 참조하세요.

개요

Replica_Availiability Replica_Availability

인메모리 복제본을 사용하면 Milvus는 여러 쿼리 노드에서 동일한 세그먼트를 로드할 수 있습니다. 한 쿼리 노드가 실패했거나 현재 검색 요청으로 사용 중일 때 다른 쿼리 노드가 도착하면 시스템은 동일한 세그먼트의 복제본이 있는 유휴 쿼리 노드로 새 요청을 보낼 수 있습니다.

성능

인메모리 복제본을 사용하면 추가 CPU 및 메모리 리소스를 활용할 수 있습니다. 데이터 세트가 비교적 작지만 추가 하드웨어 리소스로 읽기 처리량을 늘리고자 하는 경우에 매우 유용합니다. 전반적인 QPS(초당 쿼리 수)와 처리량이 크게 향상될 수 있습니다.

가용성

인메모리 복제본은 쿼리 노드가 충돌하는 경우 Milvus가 더 빠르게 복구하는 데 도움이 됩니다. 쿼리 노드에 장애가 발생해도 다른 쿼리 노드에서 세그먼트를 다시 로드할 필요가 없습니다. 대신 데이터를 다시 로드할 필요 없이 검색 요청을 새 쿼리 노드로 즉시 재전송할 수 있습니다. 여러 세그먼트 복제본이 동시에 유지되므로 장애가 발생했을 때 시스템의 복원력이 더욱 향상됩니다.

주요 개념

인메모리 복제본은 복제본 그룹으로 구성됩니다. 각 복제본 그룹에는 샤드 복제본이 포함됩니다. 각 샤드 복제본에는 스트리밍 복제본과 샤드에서 성장 및 봉인된 세그먼트 (즉, DML 채널)에 해당하는 기록 복제본이 있습니다.

An illustration of how in-memory replica works 인메모리 복제본의 작동 방식에 대한 그림

복제본 그룹

복제본 그룹은 기록 데이터 및 복제본 처리를 담당하는 여러 쿼리 노드로 구성됩니다.

샤드 복제본

샤드 복제본은 스트리밍 복제본과 기록 복제본으로 구성되며, 둘 다 동일한 샤드에 속합니다. 복제본 그룹의 샤드 복제본 수는 지정된 컬렉션의 샤드 수에 따라 결정됩니다.

스트리밍 복제본

스트리밍 복제본은 동일한 DML 채널에서 성장하는 모든 세그먼트를 포함합니다. 기술적으로 스트리밍 복제본은 하나의 복제본에서 하나의 쿼리 노드만 제공해야 합니다.

기록 복제본

기록 복제본에는 동일한 DML 채널의 봉인된 세그먼트가 모두 포함됩니다. 하나의 기록 복제본의 봉인된 세그먼트는 동일한 복제본 그룹 내의 여러 쿼리 노드에 분산될 수 있습니다.

샤드 리더

샤드 리더는 샤드 복제본에서 스트리밍 복제본을 제공하는 쿼리 노드입니다.

설계 세부 정보

잔액

로드해야 하는 새 세그먼트가 여러 개의 다른 쿼리 노드에 할당됩니다. 하나 이상의 복제본이 성공적으로 로드되면 검색 요청을 처리할 수 있습니다.

캐시

프록시는 세그먼트를 쿼리 노드에 매핑하는 캐시를 유지 관리하고 주기적으로 업데이트합니다. 프록시는 요청을 받으면 캐시에서 검색해야 하는 모든 봉인된 세그먼트를 가져와서 쿼리 노드에 균등하게 할당하려고 시도합니다.

세그먼트가 증가하는 경우 프록시는 채널-쿼리 노드 간 캐시도 유지하며 해당 쿼리 노드로 요청을 보냅니다.

장애 조치

프록시의 캐시가 항상 최신 상태인 것은 아닙니다. 요청이 들어올 때 일부 세그먼트나 채널이 다른 쿼리 노드로 이동했을 수 있습니다. 이 경우 프록시는 오류 응답을 수신하고 캐시를 업데이트한 후 다른 쿼리 노드에 할당하려고 시도합니다.

프록시가 캐시를 업데이트한 후에도 세그먼트를 찾을 수 없는 경우 세그먼트는 무시됩니다. 세그먼트가 압축된 경우 이런 일이 발생할 수 있습니다.

캐시가 정확하지 않으면 프록시가 일부 세그먼트를 놓칠 수 있습니다. DML 채널(세그먼트 증가)이 있는 쿼리 노드는 프록시가 캐시를 비교하고 업데이트할 수 있는 신뢰할 수 있는 세그먼트 목록과 함께 검색 응답을 반환합니다.

개선 사항

프록시는 쿼리 노드에 검색 요청을 완전히 균등하게 할당할 수 없으며, 쿼리 노드는 검색 요청을 처리하기 위해 서로 다른 리소스를 보유할 수 있습니다. 리소스의 롱테일 분포를 방지하기 위해 프록시는 다른 쿼리 노드의 활성 세그먼트를 해당 세그먼트가 있는 유휴 쿼리 노드에 할당합니다.

번역DeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?