Write Through 및 Write Behind 캐싱 개요
NCache 캐시를 통해 데이터 소스에 직접 쓰기 작업을 허용하는 Write Through 캐싱을 지원합니다. 이런 방식으로 캐시와 데이터 소스를 동기화할 수 있습니다. Write-Through 캐싱에서는 NCache 먼저 캐시 저장소를 업데이트한 다음 해당 작업을 데이터 소스에 적용합니다. 예를 들어 클라이언트 애플리케이션이 캐시의 항목을 업데이트하면 NCache 데이터 소스도 업데이트합니다(Write-Through가 활성화된 경우).
주의 사항
이 기능은 다음에서만 사용할 수 있습니다. NCache Enterprise Edition.
애플리케이션에서 Write-Through 캐싱을 사용하려면 먼저 다음을 구현해야 합니다. IWriteThruProvider
인터페이스. NCache 내부적으로 이 사용자 지정 공급자를 사용하여 데이터 원본에 대한 쓰기 작업을 수행합니다. NCache Write-Through를 사용하여 쓰기 작업(추가, 삽입, 제거/삭제) API 호출 뒤에서 공급자를 호출합니다.
현재 NCache 아래에 주어진 Write-Through 캐싱을 위한 두 가지 모드를 제공합니다.
- 연속 기입(데이터 소스를 동기식으로 업데이트)
- Write-Behind(비동기식으로 데이터 소스 업데이트)
주의 사항
NCache 성능 카운터 제공 Write-thru/sec
연속 기입(Write-Through) 작업의 경우.
쓰다
Write-Through 캐싱에서 작업은 먼저 캐시 저장소에 적용된 다음 구성된 데이터 원본에 동기식으로 업데이트됩니다. Write-Through를 사용하면 다음 작업이 완료됩니다. NCache 데이터 소스에 해당 작업을 적용합니다. 즉각적인 데이터 소스 업데이트가 중요하고 캐시가 업데이트되는 즉시 데이터 소스를 업데이트해야 하는 경우 연속 기입(Write-Through) 캐싱을 사용할 수 있습니다.
뒤에 쓰기
Write-Through에서는 데이터 원본에 대한 동기 작업으로 인해 작업 속도가 캐시에 대한 사용자 작업 속도와 동일합니다. 사용자 트래픽이 많은 애플리케이션의 경우 캐시에 대한 사용자 작업 비율이 매우 높아 데이터 소스를 압도할 수 있습니다. 또한 동기 데이터 원본 작업은 사용자 작업의 응답 시간에 영향을 줄 수 있습니다.
이러한 문제를 극복하기 위해 Write-Through 대신 Write-Behind를 사용할 수 있습니다. Write-Behind에서 데이터 소스 작업은 이후에 비동기적으로 수행됩니다. NCache 캐시 저장소에서 작업을 수행합니다. 캐시 저장소를 업데이트한 후 이러한 작업은 대기열에 추가되고 나중에 구성된 데이터 소스에 비동기적으로 적용됩니다. 따라서 Write-Behind를 사용하면 캐시 작업의 응답 시간이 향상됩니다.
NCache 데이터 원본의 작업 흐름을 제어하기 위해 Write-Behind에서 다양한 구성 설정을 제공합니다. 예를 들어, 속도를 지정할 수 있습니다. NCache Throttling을 통해 데이터 원본에 Write-Behind 작업을 적용합니다.
스로틀 링
초당 데이터 소스에 적용된 작업 수를 나타냅니다. 제한의 기본값은 500 ops/sec입니다. 에서 백업 소스 설정을 통해 이 값을 변경할 수 있습니다. NCache 매니저.
주의 사항
NCache 성능 카운터 제공 Write-behind/sec
Write-Behind 작업의 경우.
비하인드 쓰기 모드
NCache Write-Behind 작업을 개별적으로 또는 일괄적으로 적용할 수 있습니다. Write-Behind 대기열은 Write-Behind 작업을 위해 유지됩니다. 모든 Write-Behind 작업은 이 대기열에 대기하고 나중에 구성된 일괄 처리 또는 아래 설명된 비 일괄 처리 모드에 따라 데이터 원본에 적용됩니다.
비배치 모드
기본적으로 비배치 모드는 나중에 쓰기 작업에 대해 구성됩니다. 이 모드에서 Write-Behind 대기열의 작업은 구성된 조절 속도에 따라 데이터 소스에 하나씩 적용됩니다. 예를 들어 조절 속도가 초당 500개 작업인 경우 NCache 데이터 소스에 한 번에 하나씩 Write-Behind 작업을 적용하고 초당 500개 작업을 초과하지 않습니다.
배치 모드
배치 모드에서는 배치/대량 작업이 해당 작업에 따라 선택됩니다. operation delay
. 구성 할 수 있습니다. operation delay
Write-Behind 작업의 경우 각 작업이 데이터 소스에 적용되기 전에 Write-Behind 대기열에서 기다려야 하는 시간(밀리초)을 나타냅니다. 기본적으로 값은 XNUMX입니다.
배치 간격은 다음에 따라 구성 가능한 간격입니다. NCache Write-Behind 대기열에서 작업 지연 시간 초과 작업을 주기적으로 확인합니다. 예를 들어 연산 지연을 1000ms로 설정하고 배치 간격을 5초로 설정했다면, NCache 5초마다 Write-Behind 대기열의 작업을 확인하고 작업 지연이 만료된 모든 작업(지난 1000밀리초 동안 대기열에 있는 모든 작업)을 선택합니다.
일괄 작업을 선택한 후 구성된 제한 속도에 따라 데이터 원본에 적용됩니다. Write-Behind 대기열에서 대량의 1000개 작업을 선택한 다음 초당 데이터 원본에 적용되는 최대 작업으로 500개 작업(제한 속도가 500ops/초인 경우)의 일괄 처리로 데이터 원본에 적용된다고 가정해 보겠습니다. 구성된 조절 값을 초과할 수 없습니다.
작업 지연 시간을 초에서 일 및 월 범위로 지정할 수 있습니다. 이러한 방식으로 구성 가능한 시간 내에 데이터 소스에 대한 작업을 일시 중지할 수 있습니다. NCache 또한 write-behind 대기열, 작업 수 및 현재 일괄 작업 수에 대한 성능 카운터를 제공합니다. Write-Behind의 경우 일괄 처리가 활성화되어 있으면 데이터 소스에서 실행할 준비가 된 작업이 Write-Behind 대기열에서 제거됩니다.
주의 사항
현재 배치 간격에서 대기열에서 제거된 작업 수는 현재 배치 작업 카운트 카운터.
Write-Behind 구성에 대한 Hot Apply 지원
NCache 캐시를 중지하지 않고 런타임에 Write-Behind 구성을 변경할 수 있는 적용 가능한 Write-Behind 설정을 지원합니다. 다음을 통해 Write-Behind 구성 가능한 속성을 변경할 수 있습니다. NCache 관리자 NCache 이러한 변경 사항을 동적으로 통합합니다.
핫 적용 지원에서 배치에서 비배치로 또는 그 반대로 Write-Behind 모드를 변경할 수 있습니다. 예를 들어 배치 모드를 비 배치로 변경한 경우 NCache 작업 지연 값을 무시하고 작업을 개별적으로 실행하기 시작합니다. 또한 필요에 따라 런타임 시 제한 속도를 변경할 수 있습니다. 작업 지연, 배치 간격, 실패한 작업 대기열 제한 및 실패한 작업 제거 비율도 런타임 시 변경할 수 있습니다.
경고
실패한 작업 대기열 제한 값만 늘릴 수 있습니다. 그렇지 않으면, NCache 추가 작업에 기본값을 사용합니다.
클러스터링된 환경에서의 후기입
Write-Behind 작업을 위해 Write-Behind 대기열이 유지되므로 별도의 전용 스레드 모니터가 해당 작업을 실행합니다. Write-Behind에 대한 토폴로지 수준 세부 정보는 다음과 같습니다.
복제된 토폴로지: Write-Behind 대기열은 모든 노드에서 유지되지만 Write-Behind 비동기 프로세서는 코디네이터 노드에만 있습니다. 이는 모든 Write-Behind 작업이 이 노드를 통해 수행되고 클러스터 전체의 다른 노드 대기열에 복제됨을 의미합니다. 이러한 방식으로 노드가 다운되면 다음 조정자 노드가 나머지 쓰기 작업을 모두 수행합니다.
분할 복제 토폴로지: Write-Behind 대기열은 각 활성 노드에서 유지 관리되며 해당 복제본에도 복제됩니다. 각 노드는 데이터 소스에 대한 Write-Behind 작업을 담당합니다.
미러링 토폴로지: Write-Behind 대기열은 활성 노드와 수동 노드 모두에서 유지 관리되지만 활성 노드만 Write-Behind 작업을 수행할 책임이 있습니다. 마찬가지로 활성 노드가 작동 중지되면 수동 노드가 활성 상태가 되고 나머지 Write-Behind 작업을 수행합니다.
분할된 토폴로지: Write-Behind 대기열은 각 파티션에서 유지 관리되며 모든 노드는 데이터 소스에 대한 Write-Behind 작업을 담당합니다.
캐싱 작업 결과
NCache 작업 결과를 기반으로 캐시에서 연속 기입 작업을 동기화할 수 있는 유연성을 제공합니다. 데이터 소스에 작업(추가/삽입)을 적용한 후 다음을 기준으로 작업 상태를 지정할 수 있습니다. NCache 캐시 저장소를 동기화합니다. 예를 들어, 데이터 소스 작업이 실패하는 경우 캐시에서 해당 데이터를 제거할지 또는 유지하도록 결정할 수 있습니다. 데이터 원본에서 해당 작업을 다시 시도할 수도 있습니다. 이를 위해 다음을 지정해야 합니다. Success
/Failure
/FailureRetry
/FailureDontRemove
as
OperationResult.Status
of OperationResult
. 이것은 Write-Through 및 Write-Behind 캐싱 모두에서 제공됩니다.
데이터 소스 작업 상태 및 해당 작업 NCache 아래에 설명되어 있습니다.
Success: 이는 데이터 소스 작업이 성공했으며 항목이 데이터 소스에 추가되었음을 의미합니다. NCache 캐시에도 보관됩니다.
고장: 이는 데이터 소스 작업이 실패하고 항목을 데이터 소스에 추가할 수 없음을 의미하므로 NCache 캐시에서도 제거됩니다.
실패 제거하지 않음: 이는 데이터 소스 작업이 실패했고 항목을 데이터 소스에 추가할 수 없었지만 NCache 캐시에 보관합니다.
실패재시도: 이는 데이터 소스 작업이 실패하고 항목을 데이터 소스에 추가할 수 없음을 의미하므로 NCache 캐시에 항목을 유지하고 다시 시도합니다. 재시도는 Write-Behind 작업으로 수행됩니다.
실패한 작업 재시도
NCache 데이터 소스에서 실패한 경우 연속 기입/비하인드 쓰기에서 작업을 재시도할 수 있습니다. 이를 위해 작업 재시도를 활성화하면 NCache 데이터 소스에서 해당 작업을 다시 시도합니다. Write-Through 또는 Write-Behind의 경우 모든 재시도 작업은 Write-Behind 대기열에 다시 추가됩니다. 즉, Write-Through 재시도 작업은 Write-Behind 작업으로 비동기식으로 재시도됩니다.
주의 사항
NCache 에 대한 성능 카운터도 제공합니다. Datasource failed operations/sec
. 데이터 소스 반환에 대해 수행된 쓰기 작업 Failure
/FailureRetry
/FailureDontRemove
as OperationResult.Status
of
OperationResult
이 카운터에 의해 초당 계산됩니다.
NCache 재시도할 실패한 작업의 수를 제한할 수 있습니다. 이러한 상황에서는 다음을 통해 실패한 작업 대기열 제한을 언급합니다.
NCache 관리자 및 해당 제한을 초과하는 경우 구성 가능한 제거 비율을 통해 실패한 작업을 제거할 수 있습니다. 여기, NCache 재시도된 대기열이 가득 차면 재시도된 대부분의 작업을 제거합니다. 각 작업에는 RetryCount
연결된 속성으로, 데이터 소스에서 재시도된 각 작업에서 증분됩니다.
이를 위해, NCache 에 대한 성능 카운터를 제공합니다.
Write-behind failure retry count
및 Write-behind evictions/sec
. 그만큼 Write-behind failure retry count
재시도를 위해 대기열에 추가된 작업 수를 보여줍니다. 데이터 소스 쓰기 작업 반환 FailureRetry
as Status
in OperationResult
재시도를 위해 다시 대기합니다. 반면, Write-behind evictions/sec
카운터는 초당 제거된 재시도 작업 수를 표시합니다.
데이터 소스 작업 후 캐시 업데이트
앞에서 설명한 것처럼 Write-Through 캐싱에서는 작업이 먼저 캐시 저장소에서 수행된 다음 데이터 소스에서 수행됩니다. 데이터 소스에 대한 작업을 수행한 후 데이터가 수정되는 시나리오가 있을 수 있습니다. 예를 들어 ID 열의 경우 해당 값이 데이터 소스 작업에 의해 수정될 수 있습니다. 이러한 상황에서 데이터는 캐시와 데이터 소스에서 일치하지 않을 수 있습니다. 이를 처리하려면 NCache 데이터 소스 작업 후 캐시의 데이터를 업데이트할지 여부를 지정할 수 있습니다. 활성화할 수 있습니다. UpdateInNCache
캐시 저장소에서 작업(추가/삽입)을 다시 수행하여 데이터 소스와 동기화되도록 하는 플래그를 사용하여 동기식으로 Write-Through를 통해 또는 비동기식으로 Write-Behind 캐싱을 통해 캐시 저장소에서 작업을 업데이트합니다.
주의 사항
NCache 성능 카운터도 제공합니다. Datasource updates/sec
데이터 소스 쓰기 작업 후 캐시에서 초당 업데이트 작업 수를 표시합니다.
이 섹션의
Write-Thru 공급자 구성
Write-Through 공급자 인터페이스를 설명하고 인터페이스에 대한 샘플 구현을 제공합니다.
캐시 작업을 통한 연속 기입
기본 작업과 함께 Write-Through를 사용하기 위한 샘플을 제공합니다. NCache.
캐시 작업으로 후기 쓰기
에서 기본 작업과 함께 Write-Behind를 사용하기 위한 샘플을 제공합니다. NCache.
연속 기입 카운터 모니터링
에서 제공하는 성능 카운터를 설명합니다. NCache Write-Through 캐싱을 모니터링합니다.