와 AppFabric의 시장 철수에도 불구하고 .NET 업계는 인메모리 분산 캐시가 경쟁자로 부상하기 위해 여전히 곤경에 처해 있습니다. 몇 가지 대안이 제시되었지만 다음만큼 완벽한 솔루션을 제공하는 것은 없습니다. NCache.
NCache 애플리케이션 데이터를 캐시하고 값비싼 데이터베이스 여행을 줄이는 매우 빠르고 선형적으로 확장 가능한 분산 캐시를 사용자에게 제공하는 오픈 소스 인메모리 분산 캐시입니다. NCache 입증된 시장 상품이며 App Fabric보다 약 XNUMX년 앞서 있습니다. 그리고 아래에서 논의하는 것처럼 마이그레이션 프로세스가 끝나면 많은 이점이 있습니다.
NCache 세부 정보 AppFabric 종료 AppFabric 이주
1. 캐시를 최신 상태로 유지
데이터베이스 동기화는 양질의 인메모리 분산 캐시를 위한 중요한 기능입니다. 일반적으로 응용 프로그램과 데이터베이스 사이의 중간 계층에서 분산 캐시를 찾기 때문에 데이터가 데이터베이스 또는 캐시에 독립적으로 직접 업데이트될 가능성이 높습니다. 이 문제는 오래된 데이터를 방지하는 메커니즘을 요구합니다.
따라서 이러한 분산 캐시에서는 캐시된 항목과 데이터베이스의 해당 항목 간의 관계 또는 종속성을 지정할 수 있어야 합니다. 따라서 데이터베이스가 변경될 때마다 무효화 또는 업데이트를 통해 변경 사항이 캐시에 반영됩니다.
예를 들어, NCache 제공 SQL 종속성 SQL 서버에 대한 지원. SQL 문 기반 데이터 세트를 사용하여 캐시된 항목의 종속성을 생성할 수 있습니다. 특정 데이터 세트가 변경되거나 수정될 때마다 SQL Server는 이벤트를 NCache, 캐시 항목이 무효화됩니다. 예를 들어, CacheItem item = newCacheItem(myObject);
1 2 3 4 5 6 7 8 9 10 11 |
// Get orders against customerID from DB var order = FetchOrderByCustomerID("ALFKI"); // Generate a unique cache key for the order string key = $"Order:{order.OrderID}"; CacheItem item = new CacheItem(order); // Create SQL query to select the data from the database string query = "SELECT CustomerID, Address, City FROM dbo.Customers WHERE CustomerID = 'ALFKI';"; //Specify the database connection string and the query to create and set SQLCacheDependency. item.Dependency = new SqlCacheDependency(dbConnString, query); // Insert the item into the cache cache.Insert(key, item); |
따라서 캐시는 데이터베이스와 동기화됩니다. NCache Oracle, OleDB는 물론 FileSystems와 같은 비관계형 데이터 소스에서도 동일한 기능을 지원합니다. 지속성 저장소.
2. SQL 쿼리
주어진 NCache의 동기화 기능을 사용하면 모든 데이터를 캐시에 보관하는 것을 쉽게 고려할 수 있습니다. 불행히도 Key를 통한 가져오기가 유일한 옵션인 경우 캐시된 데이터를 통해서만 검색이 가능하므로 약간의 문제가 발생합니다. NCache SQL 쿼리를 통해 이에 대한 솔루션을 제공합니다. 이것은 가능합니다 색인 선택한 .NET 개체 속성 및 검색 쿼리 수행.
1 2 3 4 5 6 7 8 9 |
//string query = "SELECT * FROM FQN.Product WHERE UnitsInStock > ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("UnitsInStock",0); ICacheReader reader = cache.ExecuteReader(queryCommand); while (reader.Read()) { string ID = reader.GetValue("ProductID"); string Name = reader.GetValue("ProductName"); } |
개발자의 경험을 향상시키기 위해, NCache 또한 할당할 수 있습니다 그룹, 태그및 명명된 태그 나중에 항목을 빠르게 가져오기 위해 SQL 쿼리에서 사용할 수 있는 캐시된 항목으로 이동합니다.
3. LINQ 쿼리
마찬가지로, NCache 아래와 같이 사용자에게 LINQ 쿼리를 통해 데이터를 탐색할 수 있는 기회를 제공합니다.
1 2 3 4 |
IQueryable products = new NCacheQuery(cache); var result = from prod in products where prod.ProductID > 1001 select prod; |
4. 서버측 코드
종종 분산 캐시는 애플리케이션이 데이터베이스에서 데이터를 가져와 캐시에 삽입하는 데 도움이 됩니다. 그러나 다른 접근 방식은 애플리케이션이 이 책임을 분산 캐시에 위임하는 것입니다. 기본적으로 애플리케이션이 캐시에서 항목을 요청할 때 해당 항목이 캐시에 있는지 여부를 확인하고 데이터베이스에서 해당 데이터를 로드합니다. 이 기능은 통독. NCache 유사한 제안 연속 기입 캐시를 통해 데이터 소스에서 직접 쓰기 작업을 허용하는 옵션입니다.
Audiencegain과 NCache의 서버측 기능 캐시 로더 및 리프레셔와 함께 훨씬 더 나아갑니다. 이 기능은 모든 캐시가 처음에는 비어 있기 때문에 시작할 때 직면하는 초기 성능 격차를 성공적으로 극복했습니다. 로더를 사용하여 필요한 데이터를 식별하고 미리 로드할 수 있습니다. 새로 고침은 이 데이터가 오래되지 않도록 하기 위해 존재합니다.
엔카https://www.alachisoft.com/resources/docs/ncache/prog-guide/server-side-api-programming.htmlche는 캐시된 데이터에 대한 분석을 수행하고 실시간으로 실행 가능한 통찰력을 생성할 수 있는 완전한 MapReduce 프레임워크도 제공합니다. MapReduce 코드는 .NET으로 작성되었으므로 내에서 실행됩니다. NCache 프로세스.
NCache 세부 정보 지도 축소 NCache 로더 및 리프레셔
5. 클라이언트 캐시(캐시 근처)
A 클라이언트 캐시, 웹 서버 또는 응용 프로그램에 로컬이며 동일한 프로세스 또는 서버 시스템 내에서 자주 사용하는 데이터를 캐시할 수 있습니다. 따라서 클라이언트 캐시는 선호도 캐시로, 데이터 무결성을 손상시키지 않으면서 네트워크 대역폭 비용을 줄임으로써 애플리케이션의 성능을 더욱 향상시킵니다. 클라이언트 캐시는 모든 NCache 클러스터 캐싱 토폴로지 (미러링, 분할 및 파티션-복제본 캐시).
캐시 클러스터에 연결된 상태를 유지하고 기본 캐시 클러스터의 변경 사항을 복제하여 동기화함으로써 이를 수행합니다. 차이점 AppFabric 로컬 캐시와 NCache 클라이언트 캐시는 AppFabric 로컬 캐시는 독립 실행형이며 기본 클러스터와의 연결을 생성하지 않습니다.
6. 다중 데이터 센터 지원
WAN 복제는 고성능 인메모리 분산 캐시에 중요한 또 다른 기능입니다. AppFabric 부족하다. 재해 복구 또는 지역화된 트래픽에 대한 로드 밸런싱을 위해 지리적으로 분산된 데이터 센터에서 가장 유용합니다.
NCache WAN 대기 시간을 처리하기 위해 브리지 토폴로지를 제공합니다. 그만큼 NCache 다리 전 세계의 다양한 캐시에서 복제하고 일관성을 유지합니다. 재해 복구를 위해 클러스터 복제본을 모방하기 위해 캐시 클러스터를 수동으로 유지하거나 서로 다른 데이터 센터에서 두 개의 개별 캐시를 동기화하는 옵션이 있습니다. 데이터는 보안 인터넷 연결을 통해 비동기식으로 복제됩니다.
7. 동적 클러스터
모두 AppFabric 고객은 클러스터가 완전히 동적이지 않다는 것을 알고 있을 것입니다. Lead-hosts-majority-rule에 대한 Microsoft의 종속성은 리드 호스트 중 하나라도 다운되더라도 매우 쉽게 다운되는 오류 가능성이 매우 높은 클러스터를 의미합니다. 이러한 리드 호스트 노드도 마스터-슬레이브 아키텍처와 유사하며 완전한 피어 투 피어도 아닙니다.
또한, NCache is 매우 역동적인 중단 없이 런타임에 캐시 서버를 추가하거나 제거할 수 있습니다. 데이터는 자동으로 재조정됩니다(또는 국가 이전) 성능 저하 없이 런타임에. NCache 클라이언트는 서버 상태와 무관하게 캐시 서버와의 통신 채널을 자동으로 유지 관리합니다. 또한 캐시 클러스터는 데이터 밸런싱(상태 전송)이 진행 중인 경우에도 클라이언트 작업의 실행을 보장합니다.
이는 클러스터에 마스터 또는 슬레이브 노드가 없음을 의미합니다. 수석 노드인 기본 조정자 노드가 있습니다. 그리고 다운되면 다음으로 가장 높은 노드가 자동으로 기본 조정자가 됩니다. 이 모든 것은 클라이언트 작업을 중단하지 않고 발생합니다.
8. 타사 통합
그것을 끝내기 위해 NCache 다음과 같은 다양한 중요한 타사 라이브러리에 대한 공급자를 공식적으로 지원합니다.
결론
즉, NCache 기업이 .NET 응용 프로그램에서 사용하고 필요로 하는 다양한 기능을 제공합니다. 특히, 그 AppFabric 수명 주기의 어느 시점에서도 도입하지 않았습니다. 따라서 귀하의 요구 사항을 실제로 충족하는 분산 캐싱 시스템에 최선을 다하고 투자하려면 다음을 다운로드하십시오. NCache 고통 없는 마이그레이션을 위해.
NCache 세부 정보 다운로드 NCache 판 비교