과거 전문가들은 시스템 캐시를 이용하여 성능 병목 현상을 제거하려고 시도했지만, 사용자 트래픽이 증가하면서 고속 애플리케이션의 필요성이 대두되었습니다. 따라서 다음과 같은 인메모리, 선형 확장 가능한 분산 캐싱 솔루션 NCache 인기를 얻고 있습니다. 시스템 성능 많은.
일반적으로 시스템 아키텍처에 캐싱 레이어가 추가되면 애플리케이션은 XNUMX홉 데이터 무결성을 유지 관리해야 합니다. 모든 쓰기 요청 시 캐시와 백엔드 데이터 소스 모두에서 데이터를 업데이트해야 합니다. 따라서 동일한 캐시와 데이터베이스에 액세스하는 여러 응용 프로그램이 있는 경우 모든 응용 프로그램에서 지속성 코드를 복제해야 합니다. 이는 애플리케이션 수준에서 코드 복잡성을 추가합니다.
NCache 세부 정보 NCache 연속 기입 문서 NCache 연속 기입 관리 가이드
연속 기입이란 무엇입니까?
Write-Through는 응용 프로그램이 캐시에 데이터를 쓰고 백업 소스가 구성될 때 데이터베이스의 레코드도 업데이트하는 캐싱 기술입니다.
NCache ~을 제공하다 쓰루쓰루 구현 가능한 인터페이스로, 그렇지 않으면 클라이언트 애플리케이션에 존재했을 모든 지속성 코드 로직을 추가합니다. 다음을 통해 모든 캐시 서버에 코드를 배포해야 합니다. NCache 웹 관리자.
이렇게 하면 캐시에서 쓰기 작업이 수행될 때마다 배포된 공급자가 호출되고 논리에 따라 데이터베이스가 업데이트됩니다.
Write-Through 공급자를 구성하는 방법을 배우려면 다음을 참조하십시오. 공무원 NCache 연속 기입 제공자 문서.
때때로 Write-Through 작업이 실패할 수 있습니다. 이는 네트워크 연결 문제와 같은 여러 가지 이유나 인터페이스 구현 논리의 오류로 인해 발생할 수 있습니다. Write-Through는 동기식이므로 NCache 응용 프로그램에 예외가 발생합니다. 캐시 로그에도 기록된 오류를 확인할 수 있습니다.
더욱이 NCache 작동 상태도 제공합니다. 사용자에게 미리 결정된 다양한 시나리오를 처리할 수 있는 유연성을 제공합니다. 예를 들어 작업이 실패하고 다시 시도하려는 경우 관련 옵션을 설정하고 NCache 당신을 위해 은퇴를 수행합니다.
이러한 작업에 대한 자세한 내용은 다음을 참조하십시오. NCache 기술 문서.
연속 기입 제공자 인터페이스
앞서 언급 한 바와 같이, NCache 노출 쓰루쓰루 사용자가 구현한 다음 서버 측에서 배포할 것으로 예상되는 인터페이스입니다. 아래 코드 조각은 IWriteThuProvider 메서드를 보여줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public interface IWriteThruProvider { // Perform tasks associated with freeing, releasing, or resetting resources. void Dispose(); // Perform tasks like allocating resources or acquiring connections void Init(IDictionary parameters, string cacheId); //Responsible for write operations on data source. OperationResult WriteToDataSource(WriteOperation operation); ICollection WriteToDataSource(ICollection operations); ICollection WriteToDataSource(ICollection dataTypeWriteOperations); } |
세 가지 과부하가 있습니다. 데이터 소스에 쓰기 방법. 하나는 원자적 데이터베이스 업데이트 요청을 처리하고 다른 하나는 대량 데이터베이스 쓰기 요청을 처리합니다. NCache 또한 업데이트할 코드 논리를 추가할 수 있는 메서드를 제공합니다. NCache-지원되는 데이터 구조 백업 소스에.
NCache 세부 정보 연속 기입 캐싱 문서 연속 기입 제공자 구성
애플리케이션의 연속 기입
프론트엔드 애플리케이션은 다음 옵션을 사용하여 쓰기 작업을 위해 캐시에만 액세스하면 라이트쓰루 캐시가 Write-Through 공급자를 통해 데이터베이스에서 해당 작업을 적용하도록 지정됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteThru; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
Write-Behind 캐시란 무엇입니까?
뒤에 쓰기 분산 캐시에서 데이터베이스를 비동기식으로 업데이트한다는 점을 제외하면 연속 기입 캐싱과 동일합니다. 즉, 애플리케이션은 데이터 소스가 업데이트될 때까지 기다릴 필요가 없으며 백엔드 데이터 소스에 대한 업데이트는 애플리케이션 작업이 가장 느리기 때문에 애플리케이션 성능이 향상됩니다.
데이터가 데이터베이스로 업데이트된다고 가정하는 것이 안전하지만 매우 민감한 데이터를 처리하는 경우 연속 기입을 선택하는 것이 좋습니다. 또한 비동기식 메커니즘이기 때문에 write-behind의 실패는 캐시 로그에 예외 및 오류로 기록되지만 애플리케이션에 throw되지는 않습니다. NCache 또한 작업 상태를 반환하기 때문에 Write-Through와 동일한 방식으로 실패를 처리하는 옵션을 제공합니다.
자세한 내용은 NCache 문서 이러한 작업에 대한 자세한 내용은
애플리케이션의 후기입
Write-behind는 동일한 Write-Through 공급자를 사용하지만 비동기식이므로 Write-Through 작업을 수행하는 더 빠른 방법입니다. 응용 프로그램 측면에서 유일한 변경 사항은 Write-Thru 옵션을 WriteThru 대신 WriteBehind로 지정하는 차이점입니다.
아래 샘플 코드를 살펴보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteBehind; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
NCache 세부 정보 연속 기입 캐싱 문서 캐시에서 나중에 쓰기 사용
결론
다음과 같은 분산 캐싱 솔루션을 사용하여 NCache 이제 Write-Through 및 Write-Behind와 같은 기능을 제공하므로 백엔드 데이터베이스 업데이트가 더 간단하고 관리하기 쉽습니다. 이는 단일 공급자 내의 모든 지속성 코드 논리를 캡슐화합니다. 이를 통해 공급자 수준에서 데이터베이스 계층을 유지 관리하고 응용 프로그램 수준에서 캐싱 계층을 유지할 수 있습니다. 그래서, NCache, 두 세계의 장점을 모두 누릴 수 있습니다. 읽기 작업을 위한 캐싱 성능과 쓰기 작업을 위한 데이터 유지 관리를 얻을 수 있습니다. 따라서 다음과 같은 엔터프라이즈 솔루션의 도움으로 시스템 성능을 향상시키십시오. NCache. 저희에게 연락하셔서 전문가의 도움을 받으세요!