캐시 로더 및 리프레셔 속성 및 개요
NCache 시작 시 필수 데이터가 포함된 캐시를 미리 로드하는 시작 캐시 로더를 제공합니다. 이 메커니즘은 애플리케이션이 실행을 시작한 직후 특정 데이터 세트가 필요한 시나리오에서 매우 중요합니다.
예를 들어 사용자가 사이트에 액세스하는 순간 사용자가 사용할 수 있어야 하는 수백 개의 비디오가 있는 비디오 스트리밍 사이트를 상상해 보십시오. 여기에서 데이터를 수동으로 추가하는 대신 캐시 시작 시 기존 비디오로 캐시를 미리 로드할 수 있습니다.
주의 사항
때때로 기본 데이터 소스와의 연결 문제 또는 사용자 정의 캐시 로더 구현 실행 중 오류로 인해 캐시 로더가 데이터를 성공적으로 로드하지 못할 수 있습니다. 이러한 오류/예외를 식별하려면 실행 서비스 로그를 확인하십시오.
시작 시 데이터와 함께 캐시를 로드하는 것은 매우 유용할 수 있습니다. 이렇게 하면 빈 캐시로 인한 캐시 시작 시 성능 문제를 피할 수 있습니다. 이로 인해 데이터베이스에 대한 빈번한 데이터 요청(느림)이 발생합니다. 그만큼 NCache 캐시 시작 로더 기능을 사용하면 시작 시 선택한 데이터로 캐시를 미리 로드할 수 있습니다.
데이터를 미리 로드하는 이점에도 불구하고 캐시에 로드된 데이터가 부실해집니다. 사용자는 캐시 시작 시 관련 데이터를 로드하고 데이터 소스에서 발생하는 모든 변경 사항은 오래된 것입니다. 이러한 무효화를 방지하려면 NCache Cache Refresher라는 또 다른 기능을 제공합니다. 캐시 리프레셔는 캐시에 로드된 데이터를 데이터 소스의 업데이트된 데이터와 동기화하는 역할을 합니다.
캐시 로더 및 리프레셔 속성
XNUMXD덴탈의 NCache 캐시 로더 및 리프레셔는 특히 캐시 시작 시 전반적인 애플리케이션 성능을 향상시키는 데 필수적인 기능입니다. 모든 기능과 마찬가지로 이러한 기능에도 고유한 속성이 있습니다. 아래에서는 이러한 속성을 설명합니다.
NCache 실행 서비스
이전에 NCache 버전, 캐시와 캐시 로더가 동일한 프로세스에서 실행되는 데 사용되어 특히 로딩 시간에 캐시 프로세스에 과부하가 걸렸습니다. 이러한 스트레스로 인해 전체 캐시 성능이 일시적으로 저하되었습니다.
따라서 OutProc 토폴로지의 경우 NCache 헌신적이다 NCache 캐시 시작 시 작업을 관리하고 데이터 소스의 데이터를 캐시로 로드하는 실행 서비스(이전의 로더 서비스)입니다. 이 서비스는 .NET 및 Java 버전에서 다양한 책임을 수행합니다. .NET Edition에서는 캐시 로더와 리프레셔를 관리합니다. 반면 Java Edition에서는 서비스가 캐시 로더, 리프레셔, 데이터 소스 공급자 및 JMX 카운터 게시를 관리합니다.
또는 클러스터형 토폴로지에서 각 노드에는 캐시에 데이터를 로드하는 전용 서비스가 있습니다. 그러나 InProc 토폴로지 내에서는 작업이 여전히 동일한 프로세스에서 실행됩니다.
데이터 세트
클러스터링된 토폴로지의 경우 단일 노드에 로드된 데이터가 상당한 시간을 차지하면 NCache 클러스터 노드 간에 데이터 로드를 분산할 수 있습니다. 데이터는 모든 단일 노드에 대해 사용자가 제공한 데이터 세트를 기반으로 배포됩니다. 각 노드에는 NCache 데이터 세트에 따라 데이터를 로드하도록 할당된 실행 서비스입니다. 기본적으로 데이터 세트는 유사한 데이터를 그룹화하여 함께 로드하는 방법입니다.
런타임 시 캐시 서버에 데이터 세트 할당
주의 사항
NCache 내부적으로 데이터 세트를 노드에 할당하여 두 개의 노드가 캐시에서 동일한 데이터를 로드하지 않도록 합니다. 또한 이 할당을 통해 대량의 데이터를 더 짧은 시간에 로드할 수 있습니다.
코디네이터 노드는 라운드 로빈 방식으로 클러스터 노드 간에 데이터 세트를 배포합니다. 따라서 각 서버에는 목록의 데이터 세트가 할당됩니다. 노드 중 하나가 데이터 세트에 대한 데이터 로드를 완료하면 로드할 다음 데이터 세트를 수신합니다. 기본적으로 분포 데이터셋의 개수가 노드의 개수보다 많으면 NCache 각 노드에 하나의 데이터 세트를 할당하고 더 이상 사용할 수 있는 노드가 없으면 다음 데이터 세트를 첫 번째 사용 가능한 노드(데이터 로드를 완료한 노드)에 할당합니다.
사용자가 시작 시 Northwind 데이터베이스의 특정 데이터를 3개 노드의 클러스터 캐시에 로드하려고 한다고 가정하면 캐시 로더 성능은 할당된 데이터 세트 수에 영향을 받습니다. 아래에서는 이 동작에 대해 설명합니다.
로드할 데이터세트 5개: 사용자가 5개의 데이터세트(빠른 , 주문번호, 제품, 교직원및 공급 업체)을 로더에 추가합니다. 그런 다음 코디네이터 노드는 라운드 로빈 방식으로 데이터 세트를 노드에 할당합니다. 빠른 노드 1에, 주문 node2로, 그리고 제품 node3으로. 노드가 데이터 로드를 완료하자마자 코디네이터는 다음 데이터세트를 할당합니다. 교직원 결국 공급 업체 사용 가능한 다음 노드로 이동합니다.
로드할 데이터세트 3개: 사용자는 3개의 데이터세트(고객, 제품및 주문)를 로더에 추가 - 각 노드가 자신에게 할당된 데이터 세트를 담당하므로 균등한 분배를 보장하면서 데이터 세트에 따라 데이터를 로드한다는 의미입니다.
로드할 데이터세트 2개: 사용자는 2개의 데이터세트(고객 및 제품)을 로더에 추가합니다. 클러스터는 세 개의 노드로 구성되어 있으므로 세 번째 노드는 로드 프로세스 중에 유휴 상태가 됩니다. 그렇기 때문에 최대 활용도를 보장하기 위해 데이터 세트 수가 노드 수보다 크거나 같으면 좋습니다.
데이터 세트 스케줄링
데이터 세트를 새로 고치려면 예약이 필요합니다. 그러므로, NCache 캐시 데이터를 업데이트한 후의 시간 간격을 결정하는 예약 옵션을 제공합니다. 이때 새로 고침 간격은 업데이트할 데이터 세트를 확인하여 캐시의 결과 데이터를 업데이트/새로 고칩니다. Cache Refresher와 함께 제공되는 네 가지 일정 옵션은 다음과 같이 작동합니다.
일일 간격: 일일 간격을 사용하면 캐시가 시작된 후 설정된 간격으로 데이터 세트가 새로 고쳐집니다. 간격 값은 분 단위입니다. 예를 들어 20분은 데이터 세트가 20분마다 새로 고쳐지는 것을 의미합니다.
일일 시간: 매일 시간 옵션을 사용하면 매일 사용자가 제공한 특정 시간에 데이터 세트가 새로 고쳐집니다. 최대 간격이 60분인 일일 간격과 달리 일반적으로 24시간 간격이며 시작 시 캐시 시작에 의존하지 않습니다. 일반적으로 데이터세트가 매일 간격으로 업데이트되는 빈도만큼 자주 업데이트되지 않을 때 사용됩니다.
주간: 주간 옵션을 사용하면 매주 특정 요일에 사용자가 지정한 시간에 데이터 세트가 새로 고쳐집니다. 예를 들어 로드된 데이터세트를 매주 월요일, 목요일, 토요일 정확히 자정에 새로 고치려면 주별 데이터세트 예약을 설정해야 합니다.
월간 회원: 월간 옵션을 사용하면 매월 지정된 하루 또는 여러 날과 주당 하루 또는 여러 평일에 데이터 세트가 새로 고쳐집니다. 예를 들어 서비스가 매월 첫째 주와 마지막 주 월요일마다 데이터 세트를 새로 고치도록 데이터 세트 새로 고침을 지정할 수 있습니다.
일정 표현식에는 다음 형식이 있습니다. week:days:hours:minutes
스케줄링 표현식을 지정합니다.
- 주는 1-4일 수 있으며 1은 해당 월의 첫 번째 주입니다.
- 요일은 요일을 표시하는 1-7일 수 있습니다. 시간과 분은 예약을 위해 하루 중 시간에 따를 수 있습니다. 쉼표로 구분된 요일을 추가하여 요일을 두 개 이상 지정할 수 있습니다.
- 사용자는 예약을 위해 한 달에서 여러 주를 선택할 수 있습니다.
스케줄링 표현식의 작동 방식을 이해하기 위해 몇 가지 예를 들어보겠습니다.
표현식
1,2:2:00:00
일정 예약은 매월 첫째 주와 둘째 주 2일 자정에 데이터 세트를 새로 고치는 것을 의미합니다.표현식
1:1,2,7:15:30
예약을 위해 데이터 세트가 매월 첫 번째 주(월요일, 화요일, 일요일)의 첫 번째, 두 번째, 3일 오후 30시 XNUMX분에 새로 고쳐지는 것을 보여줍니다.
로딩 메커니즘
사용자는 마스터 데이터 소스에서 로드되는 개체의 구현을 지정합니다. 모든 개별 데이터는 완전한 형태로 존재합니다. CacheItem
- 캐시 시작 시 캐시에 추가됩니다.
캐시 로더 재시도
캐시를 로드하는 동안 작업이 실패하면 NCache 다음으로 진행하기 전에 수행합니다. 기본적으로, NCache 실패한 작업을 다시 시도하지 않습니다. 그러나 다음을 통해 이를 활성화할 수 있습니다. NCache 관리 센터.
캐시 로더 재시도 간격
사용자가 실패한 작업에 대한 재시도를 활성화하도록 선택한 경우 사용자는 실패한 작업을 다시 시도하기 전에 대기할 시간 간격(초)을 지정할 수도 있습니다. 간격은 기본적으로 0입니다. 그러나 다음을 통해 사용자가 구성할 수 있습니다. NCache 관리 센터.
새로 고침 간격
업데이트/새로 고침이 필요한 데이터 세트를 확인하기 위해 새로 고침 간격이라는 특정 시간 후에 스레드가 실행됩니다. 기본적으로 새로 고침 간격은 900초입니다. 이 간격의 최소값은 1초이고 최대값은 3600초입니다. 사용자는 다음을 통해 새로 고침 간격을 구성할 수 있습니다. NCache 관리 센터.
온디맨드 데이터 세트 새로고침
또한 사용자는 다음을 통해 데이터 세트를 수동으로 새로 고칠 수 있습니다. RefresherDataset 호출 cmdlet. 이 cmdlet을 통해 사용자는 즉시 또는 다음 24시간 이내에 데이터 세트를 새로 고칠 수 있습니다. RefreshPreference
이 cmdlet의 옵션입니다. 이 옵션은 프로세스 성능 저하 여부에 따라 요청 시 새로 고침이 발생하는 시기를 식별합니다. 그렇지 않은 경우 데이터 세트는 RefreshNow
. 그렇다면 데이터 세트는 다음 예약 시간에 새로 고침됩니다. RefreshOnNextTimeOfDay
옵션을 선택합니다.