NCache 높은 가용성과 확장성을 보장하는 강력한 성능 최적화 솔루션입니다. 다양한 캐싱 토폴로지, 각각 다른 요구 사항을 충족하도록 설계되었습니다. 이러한 토폴로지는 선형 확장성을 제공할 뿐만 아니라 데이터 일관성과 안정성도 유지합니다. 각 토폴로지는 특정 사용 사례에 맞게 조정됩니다. 예를 들어, 하나는 캐시 서버가 두 개뿐인 소규모 환경에 이상적일 수 있고, 다른 하나는 수백 대의 서버가 포함된 대규모 캐시 클러스터에 더 적합할 수 있습니다. 이 블로그에서는 다양한 캐싱 토폴로지의 특성을 살펴봅니다. NCache 제공합니다.
미러링된 캐시 토폴로지
Mirrored Cache 토폴로지에서 클라이언트 노드는 모든 읽기 및 쓰기 작업을 위해 클러스터의 활성 서버 노드에만 연결합니다. 활성 서버 노드가 다운되면 클라이언트 애플리케이션은 자동으로 이전의 패시브 노드에 연결합니다. 이 장애 조치 지원은 Mirrored Cache가 항상 작동하고 실행되도록 보장합니다. 이 토폴로지는 쓰기 작업에 대한 비동기 미러링을 제공하여 패시브 서버에서 여러 쓰기 작업을 대량으로 처리하여 성능을 개선합니다.
미러링된 캐시 토폴로지는 어떻게 작동합니까?
미러 캐시 토폴로지에서 클라이언트 노드는 모든 읽기 및 쓰기 작업을 위해 클러스터의 활성 서버 노드에만 연결됩니다. 활성 서버 노드가 다운되면 클라이언트 응용 프로그램은 자동으로 이전 수동 노드와 연결됩니다. 이 장애 조치 지원은 미러 캐시가 항상 실행되도록 합니다. 이 토폴로지는 수동 서버 노드에서 BULK 작업으로 여러 쓰기가 수행되므로 애플리케이션의 성능을 개선하는 데 도움이 되는 쓰기 작업을 위한 비동기 미러링을 제공합니다.

그림 1: 미러드 캐싱 토폴로지의 아키텍처.
복제된 캐시
이 토폴로지는 여러 캐시 서버에서 데이터 복제를 통해 데이터 안정성을 보장합니다. 복제된 캐시 토폴로지는 읽기 작업에 대해 매우 빠르고 확장 가능합니다. 불행히도 쓰기 작업에 대해서는 확장성이 좋지 않습니다. 이러한 작업은 클러스터의 모든 서버와 동기적으로 이루어지기 때문입니다. 기본적으로 쓰기 작업(예: 데이터 추가 또는 업데이트)을 수행할 때마다 클러스터의 모든 서버에 동기적으로 적용해야 합니다. 따라서 이 토폴로지는 읽기 작업 수가 쓰기 작업보다 많은 소규모 캐싱 환경을 위해 고안되었습니다.
복제된 캐시 토폴로지는 어떻게 작동합니까?
복제된 캐시 토폴로지는 클러스터의 모든 서버 노드에 캐시 데이터의 완전한 사본이 있으므로 높은 데이터 가용성과 안정성을 제공합니다. 게다가 런타임에 동적 서버 추가 및 제거를 지원하여 데이터 손실을 방지합니다.

그림 2: 복제 캐싱 토폴로지의 아키텍처.
각 클라이언트 애플리케이션은 단 하나의 서버 노드에만 연결됩니다. 이 연결은 캐시 서버에서 결정한 로드 밸런싱 알고리즘을 기반으로 합니다. 특정 클라이언트에 연결된 서버가 다운되면 클라이언트 애플리케이션은 다음으로 사용 가능한 서버에 연결합니다.
파티션된 캐시
The 파티션된 캐시 토폴로지는 읽기 및 쓰기 작업 모두에 동일하게 효율적입니다. 이는 제공되는 가장 빠르고 확장 가능한 캐싱 토폴로지 중 하나입니다. NCache. 게다가, 사용자가 클러스터를 중단하지 않고도 클러스터에 서버를 추가할 수 있게 하여 선형 확장성을 제공합니다. 그러나 데이터 복제를 지원하지 않아 서버가 다운되면 복구할 수 없는 데이터 손실이 발생할 가능성이 있습니다.
분할된 캐시 토폴로지는 어떻게 작동합니까?
분할 캐시 토폴로지에서 캐시는 런타임에 파티션으로 나뉘며 각 캐시 서버에는 단일 파티션이 있습니다. 이러한 파티션은 서버 전체에 고르게 분산된 1000개의 버킷으로 구성된 클러스터 캐시를 구성합니다. 서버 노드가 추가되면 클러스터는 구분과 위치, 즉 다른 파티션의 버킷 매핑을 포함하는 배포 맵을 만듭니다. 이 맵은 클라이언트에게 캐시의 내부 조직에 대한 필수 정보를 제공하여 클라이언트와 서버 노드 간의 효율적인 통신을 보장합니다.

그림 3: 분할된 캐싱 토폴로지의 아키텍처
이 토폴로지는 또한 모든 클라이언트 애플리케이션을 캐시 서버에 연결하여 높은 데이터 가용성을 제공합니다. 따라서 해당 애플리케이션은 연결된 서버가 다운되더라도 클러스터의 다른 서버에서 요청하여 필요한 데이터를 얻을 수 있습니다.
파티션-복제 캐시 토폴로지
이것은 가장 인기 있는 캐싱 토폴로지 in NCache. 사용자에게 선형 확장성과 높은 데이터 안정성을 제공합니다. 이 토폴로지는 Partitioned 토폴로지만큼 확장성이 뛰어나며 Replicated 토폴로지와 유사한 성능 향상과 높은 데이터 가용성을 제공합니다.
파티션-복제 캐시 토폴로지는 어떻게 작동하나요?
동적 파티션을 생성하는 것과 함께 이 토폴로지는 또한 다른 서버 노드에서 이러한 파티션의 동적 복제본을 생성합니다. 이는 연결 실패 또는 노드 다운타임 동안 백업으로 사용됩니다. 이러한 경우, NCache 복제 노드에서 데이터를 가져와 재분산합니다.
그러나 이러한 복제본은 추가된 모든 서버 노드가 활성 파티션과 복제본 파티션으로 나뉘므로 클러스터 확장성을 제한합니다.

그림 4: 파티션 복제 캐싱 토폴로지의 아키텍처
이 토폴로지는 동기화 및 비동기의 두 가지 복제 모드를 제공합니다. 비동기 복제를 사용하면 모든 복제본이 백그라운드에서 생성되어 성능 지연이 전혀 발생하지 않습니다. 불행히도 복제본 노드가 다운되면 파티션의 캐시 데이터가 제 시간에 도달하지 못할 수 있으므로 데이터가 손실될 가능성이 약간 있습니다. 이러한 데이터 손실을 방지하기 위해 동기화 복제는 모든 복제본이 런타임에 생성되고 복제본에서 실패한 모든 작업이 파티션에서도 실패한 것으로 간주되도록 합니다. 말할 것도 없이 이 토폴로지는 높은 데이터 가용성을 보장하기 위해 전체 서버 연결을 제공합니다.
클라이언트 캐시 토폴로지
. 클라이언트 캐시 토폴로지 또는 "캐시 위의 캐시"는 애플리케이션과 매우 가까이에 있으며 클러스터에 이미 있는 데이터를 빠르게 캐시할 수 있습니다. 클라이언트 캐시는 읽기 집약적 애플리케이션에 적합하지만 애플리케이션이 동일한 수의 읽기 및 쓰기 작업을 수행하는 경우 쓰기 작업을 하려면 두 곳에서 데이터를 업데이트해야 하므로 더 느리게 작동합니다.
클라이언트 캐시는 로컬이지만, 항상 클러스터형 캐시와 동기화되므로 독립형이 아닙니다. 이 동기화는 클라이언트 캐시의 데이터가 항상 업데이트되도록 보장합니다. 다음은 클라이언트 캐시 토폴로지의 주요 특성에 대한 개요입니다.
클라이언트 캐시 토폴로지는 어떻게 작동합니까?
클라이언트 캐시는 InProc(프로세스 내부) 또는 OutProc(웹/앱 서버에 로컬)로 존재합니다. 두 경우 모두 로컬로 객체를 캐싱하여 애플리케이션 성능을 개선합니다. InProc 모드는 애플리케이션 힙에 데이터를 저장하여 코드를 변경할 필요 없이 타의 추종을 불허하는 속도를 제공합니다.

그림 5: 클라이언트 캐시의 아키텍처
이 토폴로지는 모두 제공합니다 낙관적인 비관적 인 데이터 동기화. 기본 클라이언트 캐시 동기화는 낙관적입니다. NCache 클라이언트는 클라이언트 캐시의 데이터가 최신이라고 가정합니다. 비관적 동기화에서 캐시 클라이언트는 먼저 클러스터형 캐시를 확인하여 캐시된 항목의 새 버전이 있는지 확인합니다. 있으면 클라이언트는 해당 항목을 페치하여 클라이언트 캐시에 넣고 클라이언트 애플리케이션으로 반환합니다.
맺음말
NCache 다양한 비즈니스 요구 사항을 충족하기 위해 분산되고 확장 가능하며 안정적인 캐싱 토폴로지를 제공합니다. 요구 사항에 대용량 데이터 크기, 특정 작업 유형 또는 높은 트랜잭션 볼륨이 포함되든, NCache 적합한 옵션을 제공합니다. 이러한 토폴로지에 대해 자세히 알아보려면 주저하지 말고 다운로드하십시오. NCache .






