의 유일한 목적 NCache 애플리케이션에 최적의 성능을 제공하는 것입니다. 이러한 성능 수치를 달성하려면 쉽고 비용 효율적으로 확장할 수 있는 캐싱 환경이 필요합니다.
As NCache 메모리 내 데이터 저장소인 경우 첫 번째 문제는 하나의 물리적 상자에 할당된 제한된 메모리입니다. 두 번째는 계산 한계입니다. 우리 모두는 그것을 알고 NCache, 제공하는 것 외에도 기본 CRUD 작업, 다음과 같은 많은 고급 기능도 지원합니다. Pub / Sub, 검색어, 기준 기반 가져오기 호출 등. 그리고 이러한 기능에 대한 클라이언트 요청이 많아지면 더 많은 처리 능력에 대한 요구가 증가합니다. 즉, 조만간 캐시 서버가 최대 처리 한도에 도달하게 됩니다. 이런 일이 발생하면 NCache 당신을 버리지 않습니다. 대신 이에 대한 해결책이 있으며 이를 설명하기 위해 여기에 있습니다.
NCache 세부 정보 .NET의 분산 캐싱 고가용성 NCache
선형 확장성 NCache
환경이 위에서 언급한 한도에 도달하면 NCache 캐시 클러스터에 새 서버 노드(또는 여러 노드)를 추가할 수 있습니다. 새 서버를 추가하는 것은 기본적으로 다음을 통해 클러스터에 새 물리적 노드를 추가하는 것입니다. NCache 웹 관리자 or NCache PowerShell 도구 전체 메모리를 향상시키고 과도한 수신 요청을 처리할 수 있는 또 다른 리소스를 제공합니다.
이것은 선형 확장성을 보장합니다. 어떻게? 더 많은 노드를 추가할수록 더 나은 성능을 얻을 수 있기 때문입니다. ~ 안에 NCache, 클러스터에 추가 노드를 추가해도 일관된 처리량이 흔들리는 오버헤드가 발생하지 않습니다. 그리고 최근 수행된 성능 벤치마크에 따르면, NCache 달성 2개의 서버 노드로 초당 5만 작업! 그것이 승리가 아니라면 무엇인지 모르겠습니다.
이 모든 것의 가장 좋은 점은 동적 본질 NCache 클러스터링. 즉, 단순히 클러스터에 새 노드를 추가하기 위해 기존 프로세스, 애플리케이션 또는 노드를 중지할 필요가 없습니다.
NCache 세부 정보 NCache 성능 벤치 마크 NCache 성능 벤치마크 – 비디오
조금 더 깊이 파고 들어 무엇이 무엇인지 밝히자. NCache 기능은 확장성 테이블에 가져옵니다.
확장성을 위한 클라이언트 작업
NCache 클라이언트에는 모든 서버 노드와 직접 자동으로 연결하는 이 기능이 내장되어 있습니다. 그리고 NCache 배포 맵을 통해 클라이언트는 필요한 데이터가 있는 노드를 알 수 있습니다. 따라서 클라이언트에서 오는 작업은 여러 홉과 노드를 거치지 않습니다. 대신 특정 데이터가 있는 서버로 한 번의 직선 홉이 필요합니다. 이 간단하면서도 영리한 기능은 환경을 확장하는 데 도움이 됩니다.
운영 확장성을 위한 병렬성
NCache 다음과 같은 다양한 고급 작업을 지원합니다. 검색어, 대량 작업, 태그, 그리고 여러 노드에서 수행해야 하는 다른 많은 작업. 이러한 작업을 라운드 로빈 방식으로 모든 노드에 보내는 대신, NCache 모든 작업을 모든 노드에 병렬로 보낼 수 있습니다.
예를 들어 클라이언트는 캐시에 저장된 데이터를 쿼리하려고 하므로 해당 쿼리를 클러스터의 모든 노드로 보냅니다. 모든 노드는 저장된 데이터 세트에서 해당 쿼리를 로컬로 실행하고 결과를 클라이언트와 공유합니다. 클라이언트는 모든 서버 노드에서 오는 모든 결과를 병합하고 모든 최종 애플리케이션에 하나의 단일 결과를 반환합니다. 모든 노드는 동일한 쿼리를 병렬로 실행하여 확장성을 유도하고 시스템 속도를 높입니다.
확장 작업을 위한 파이프라이닝
NCache 사용 파이프 라이닝 단일 TCP 호출에서 네트워크를 통해 전송해야 하는 작업 청크를 생성합니다. 이 기술은 여러 요청을 하나씩 보내고 승인을 기다리는 오버헤드를 줄입니다.
여기서 예를 들어보겠습니다. 라고 말하십시오 NCache 클라이언트는 일반적으로 클라이언트가 100개의 I/O 작업을 수행한다는 것을 의미하는 100개의 작업을 서버로 보냅니다. 이러한 작업의 성공을 위해 사용자에서 커널 모드로의 모든 트랜잭션은 많은 CPU 전력을 소비하게 됩니다. CPU 사용량이 너무 많으면 비용이 많이 들고 응용 프로그램의 성능이 저하됩니다.
여기서 클라이언트 측 파이프라이닝은 하나의 서버로 가는 모든 작업을 결합하고 해당 청크를 하나의 전용 I/O 호출로 보냅니다. 서버 측 파이프라이닝은 서버가 하나의 간단한 호출로 여러 I/O 호출을 받도록 합니다. 서버가 다시 보내는 응답도 함께 수신됩니다. 뿐만 아니라 서버는 들어오는 작업에 대해 한 번에 최대 응답을 생성하려고 시도합니다.
따라서 전용 호출에서 서버로 전송된 100개의 작업은 한 번의 호출로 서버에서 수신됩니다. 그리고 얻은 작업의 결과는 서버에서 한 번의 호출로 전송됩니다. 이 기술은 시스템을 엄청나게 확장하는 데 도움이 됩니다.
NCache 세부 정보 클라이언트 측 작업 파이프라이닝 NCache
파티션 복제에서 확장 가능한 백그라운드 복제
클라이언트가 서버 노드에서 수행하는 모든 업데이트 작업은 복제 서버에 대한 내결함성 및 고가용성을 위해 복제되어야 합니다. NCache 서버는 클라이언트 개입 없이 백그라운드에서 이 복제를 수행합니다. 백그라운드 프로세스인 것 외에도 이 복제는 최대 비용을 절약하기 위해 대량으로 수행됩니다. 이 프로세스는 모든 작업이 백그라운드 복제를 통해 확장되므로 확장성을 유도하고 캐시의 가용성을 높입니다. 윈윈.
확장성을 위한 Write-Behind 캐싱
클라이언트가 데이터베이스에 데이터를 쓰기를 원하면 서버로 보낸 동일한 요청이 해당 데이터를 캐시와 데이터베이스에 씁니다.
이 기능의 비동기 구현은 뒤에 쓰기 계산 지연 없이 서버가 데이터베이스에 액세스할 수 있습니다. 이렇게 하면 메모리 내 캐시에서 원하는 것과 동일한 성능을 유지하면서 데이터베이스와 캐시가 동기화 상태를 유지합니다.
경우 NCache 클라이언트는 Write-behind가 활성화된 상태로 캐시 서버에 요청을 보내고, 서버는 해당 데이터를 캐시에 쓰고, 컨트롤을 클라이언트에 반환하고, 데이터가 데이터베이스에도 저장되도록 백그라운드에서 일괄 처리 시스템을 사용합니다. 이 메커니즘은 애플리케이션을 확장 가능하게 만드는 것입니다.
메모리 관리에서 개체 풀링을 통한 확장성
.NET 환경에서 자동 가비지 수집기(GC)가 활성화되면 애플리케이션에서 진행 중인 모든 활동이 중지되어 메모리 내 데이터 계산이 일시 중지됩니다. 이러한 일시 중지는 애플리케이션 성능에 큰 타격을 줍니다. 더 큰 개체를 만들수록 GC가 더 많이 발생하고 이 히트가 더 커집니다.
이러한 긴 GC 일시 중지를 방지하려면 NCache 네이티브 .NET 캐시는 개체 풀링 기술을 자체 메모리 관리로 사용합니다. 이 메커니즘에서, NCache 서버는 개체를 풀링하고 새 개체를 만드는 대신 재사용하므로 GC를 호출할 필요가 줄어듭니다. 이 요구 사항이 적을수록 애플리케이션에서 더 많은 성능을 얻을 수 있으므로 확장성이 높아집니다.
NCache 세부 정보 서버 측 작업 파이프라이닝 NCache
확장성을 유도하는 클라이언트 캐시
확장성에 관해서는 클라이언트 캐시 의 가장 중요한 기능 중 하나임이 입증되었습니다. NCache.
클라이언트 캐시는 애플리케이션이 실행 중인 동일한 시스템에 클러스터된 캐시에서 가장 자주 사용되는 데이터를 저장합니다. 애플리케이션과 클러스터된 캐시 간에 클라이언트 캐시를 사용하면 애플리케이션에 가까운 로컬 캐시 리소스를 제공합니다. 이 캐시는 필연적으로 I/O 비용 절감을 가져오는 애플리케이션의 읽기 요청 대부분을 처리합니다. 따라서 업데이트된 데이터에 빠르게 액세스할 수 있을 뿐만 아니라 애플리케이션도 확장됩니다.
이 확장성 차트는 로컬 노드에 액세스하는 비용을 줄임으로써 OutProc 클라이언트 캐시에서 InProc 클라이언트 캐시로 이동하는 경우 더욱 최적화될 수 있습니다.
확장성 결론 NCache
응용 프로그램을 최대한 활용하는 동안 두 가지 주요 장애에 직면할 수 있습니다. 캐시의 계산 부하가 증가하거나 데이터 저장소의 설정된 경계에 도달합니다. 둘 다 확장을 통해 크게 향상될 수 있습니다. NCache. 당신은 완전히 제어할 수 있습니다 NCache 사용자 환경에 확장성을 제공할 수 있는 기능이 풍부합니다. 그래서, 당신은 무엇을 기다리고 있습니까? NCaching을 받으세요!