NCache Hibernate 두 번째 레벨 캐시로

사용법 배우기 NCache NHibernate의 두 번째 수준 캐시로. NCache web.config 또는 app.config 변경을 통해 플러그인할 수 있는 NHibernate 두 번째 수준 캐시 공급자를 제공합니다. NCache 또한 여기에 데이터베이스 동기화 기능을 구현하여 데이터베이스와 동기화해야 하는 클래스를 지정할 수 있습니다. NCache 이를 위해 SqlDependency 또는 OLEDB 호환 데이터베이스 종속성을 지정할 수 있습니다.

NCache 애플리케이션 확장성과 성능을 위한 Enterprise Distributed Caching 솔루션입니다. 오늘 튜토리얼에서는 레벨 2 캐시 공급자를 사용하여 NHibernate 애플리케이션을 확장하는 방법을 살펴보겠습니다. NCache.

NHibernate L1 캐시의 제한 사항

NHibernate는 애플리케이션을 위한 탁월한 ORM 도구이며 여러 팀에서 코딩 표준을 단순화합니다.

NHibernate L1 캐시의 제한 사항
NHibernate L1 캐시의 제한 사항

NHibernate는 기본적으로 각 트랜잭션에 대해 작업자 프로세스 내부에 데이터를 임시로 보유할 수 있는 프로세스 내 캐시를 제공합니다. 이것은 단일 서버 응용 프로그램에서는 잘 작동하지만 엔터프라이즈 응용 프로그램에서는 성능 병목 현상이 됩니다.

엔터프라이즈 애플리케이션에서는 일반적으로 부하 분산 시나리오에 여러 웹 서버가 있고 각 서버에서 실행되는 여러 작업자 프로세서가 있습니다. 따라서 각 작업자 프로세스의 동일한 데이터에 대해 데이터베이스에 여러 개의 중복 쿼리를 배치하게 되어 결과적으로 애플리케이션 속도가 느려지고 자체 메모리의 각 작업자 프로세스 측에 개별적으로 중복 스토리지가 생성되어 사용자 기반을 확장해야 할 때 확장할 수 없습니다.

NHibernate L2 캐시 공급자 모델

그래서 이러한 한계를 극복하기 위해 NHibernate는 레벨 2 캐시 제공자를 제공합니다., 여기서 두 번째 수준 캐시를 연결할 수 있습니다.

  • 이상적으로 L2 캐시는
    • 프로세스를 벗어난
    • 인 메모리
    • 분산 캐시
  • 신뢰성 및 고가용성
  • 확장

Hibernate L2 캐시 제공자 모델

두 번째 수준 캐시는 프로세스 내 캐시와 함께 사용됩니다. 데이터베이스에서 처음으로 데이터를 가져올 때마다 NHibernate는 자동으로 해당 데이터를 모든 작업자 프로세스에서 공유하는 두 번째 수준 캐시로 푸시합니다.

애플리케이션 성능을 향상시키려면 XNUMX단계 캐시가 메모리 내 캐시여야 합니다. 작업자 프로세스가 재활용되더라도 플러시되지 않는 프로세스 외 캐시여야 합니다. 분산되어야 하므로 서로 다른 웹 서버의 여러 작업자 프로세스 간에 공유될 수 있습니다.

증가시킬 수 있음을 기억하십시오. 애플리케이션 확장성 및 성능, 기본 캐싱 인프라가 확장성이 뛰어나고 성능 지향적인 경우.

NCache - NHibernate L2 캐시 공급자

따라서 여기에는 다음과 같은 레벨 2 캐시 공급자가 있습니다. NCache.

NCache - NHibernate L2 캐시 공급자
NCache - NHibernate L2 캐시 공급자

이는 프로세스 외 메모리 내 분산 캐싱 솔루션으로, 동적 클러스터링 기능과 여러 서버에 걸쳐 있습니다. 애플리케이션의 트랜잭션 로드는 런타임에 모든 캐시 서버에 균등하게 분산되어 더 많은 성능과 NCache 캐시 서버를 잃어버린 경우 일관된 장애 조치를 제공하기 위해 전체 클러스터에 데이터를 복제합니다.

NCache 동기 및 비동기 복제 모드를 모두 지원합니다. 따라서 성능 오버헤드 없이 복제된 데이터를 유지할 수 있습니다. 성능 NCache 캐싱 계층에 더 많은 서버를 추가하면 선형적으로 커집니다. 캐시 크기에는 제한이 없으므로 데이터 크기를 원하는 만큼 늘릴 수 있습니다.

런타임에 더 많은 서버를 캐시 클러스터에 동적으로 포함하여 트랜잭션 기능을 높이고 더 많은 메모리를 가질 수도 있습니다.

또한 대시보드 스타일 모니터링을 제공하여 캐시 성능, 캐시에서의 클라이언트 애플리케이션 활동 및 캐시에서 사용하는 다양한 시스템 리소스를 한 눈에 볼 수 있도록 도와줍니다.

오른쪽 그림은 파티션-복제본 토폴로지, 여러 서버에서 데이터를 분할하고 복제한 상태로 유지합니다. Partition-Replica는 내에서 가장 많이 사용되는 토폴로지입니다. NCache.

NCache NHibernate용 분산 레벨 2 캐시

여기 높은 수준의 아키텍처 다이어그램이 있습니다.

상위 수준 아키텍처 다이어그램
상위 수준 아키텍처 다이어그램

이 수준 2 공급자를 NCache 엔터프라이즈 애플리케이션에서는 애플리케이션에서 코드를 변경할 필요가 없습니다. 일부 구성만 변경하면 됩니다. 웹.구성 or 앱 구성, 우리는 그것에 대해 이야기 할 것입니다. 따라서 이전 트랜잭션에서 이미 데이터를 가져온 경우 데이터베이스로 가는 중복 호출이 더 이상 없습니다.

이와 같은 부하 분산 웹 팜에서 데이터는 NHibernate에 의해 자동으로 두 번째 수준 캐시로 푸시됩니다. 일단 데이터베이스에서 데이터를 처음 가져오고 이 캐시는 모든 웹 서버에서 공유됩니다. 따라서 데이터베이스의 부하를 줄이는 데 도움이 됩니다.

NCache 레벨 2 캐시 구성 가능 기능

따라서 구성 변경으로 두 번째 수준 캐시 공급자에 대한 여러 기능을 구성할 수 있습니다.

  • NHibernate 지역 사용
  • 다음을 사용하여 캐시 개체를 만료합니다.
    • 슬라이딩 또는 다이 시간
    • 절대 만료
  • 데이터베이스 동기화 대상:
    • SQL 종속성
    • 폴링 종속성
  • 동기화를 사용합니다. / 비동기. 캐시 작업
  • 캐시 항목 우선 순위 설정

NCache 레벨 2 캐시 구성 가능 기능

예를 들어, NHibernate 영역을 사용할 수 있고, 절대 또는 유휴 시간 만료로 만료되도록 캐시 개체를 설정할 수 있으며, 다음에 대한 SQL 종속성을 구성할 수도 있습니다. 데이터베이스 동기화. 동기식 및 비동기식 캐시 작업이 모두 지원되며 캐시 항목 우선 순위를 구성할 수도 있습니다.

구성을 위한 빠른 단계별 실습 세션을 안내해 드리겠습니다. NCache 샘플 애플리케이션에 대한 레벨 2 캐시 제공자.

나는 당신에게 제안 할 것입니다 무료 30일 Enterprise Edition 다운로드 우리 웹사이트에서. 이것은 평가일에도 완전한 기능을 갖춘 풍부한 기능을 갖춘 제품입니다.

NHibernate 통합 샘플 NCache

일단 설치하면 NCache, 시스템에서 다음과 같이 표시됩니다.

NHibernate 통합 샘플
NHibernate 통합 샘플

여러 Visual Studio 샘플을 설치합니다. 예를 들어 NHibernate 샘플로 이동하여 Visual Studio에서 엽니다. Video Studio 2010을 사용하는 경우 샘플을 다시 빌드해야 할 수 있습니다. 변환도 필요할 수 있습니다.

두 번째 수준 캐시 공급자에 대한 app.config에 대해 수행해야 하는 구성 변경 사항을 살펴보겠습니다. NCache.

app.config 파일
app.config 파일

'라는 섹션을 정의하기만 하면 됩니다.ncache'를 app.config에서 이와 같이 캐시 공급자에 대한 다음과 같이 캐시 공급자에 대한 속성을 추가할 수 있습니다.

우리는 또한 NCache 여러 영역이 있는 섹션 자체. 이러한 영역은 NHibernate 영역입니다. 각 지역은 다른 캐시 이름에 매핑됩니다. NCache.

따라서 여기에 NHibernate 영역을 지정하지 않은 모든 엔티티를 수용하는 기본 영역이 있으며 이 '고객' 영역과 같은 특정 이름 영역이 있습니다. 각 지역 내에서 해당 지역에 속하는 각 클래스에 대해 여러 속성을 지정할 수 있습니다.

NHibernate 지역
NHibernate 지역

예를 들어 이에 대한 SQL 종속성을 설정하고, 캐시 항목의 우선 순위를 설정하고, 동기 또는 비동기를 사용하고, 만료 전략을 상대적 또는 유휴 시간으로 설정합니다.

캐시 실행

따라서 샘플을 실행하려면 두 개의 캐시가 있어야 합니다. 내에서 기본 캐시 및 'myPartitionReplicaCache' 실행 NCache 매니저.

가자 NCache 관리자님, 지금 'myPartionedReplicaCache'와 기본 캐시로 2개의 서버 설정으로 설정했습니다. 애플리케이션을 실행하고 고객 목록을 봅니다. 예를 들어 데이터베이스에서 데이터를 가져온 후 데이터를 푸시하는 두 서버로 가는 요청/초를 살펴봅니다.

동등하게 응답된 요청/초
동등하게 응답된 요청/초

따라서 이 두 서버에는 약 49개에 42개 항목이 있으며 두 서버 모두에 균등하게 배포되며 쿼리를 다시 실행하면 데이터베이스로 이동하는 대신 XNUMX단계 캐시 클러스터에서 이러한 결과를 직접 가져올 수 있습니다. 따라서 두 서버에서 동일하게 응답된 Requests/sec를 확인하십시오.

캐시 신뢰성 테스트

신뢰성 테스트를 받을 수 있습니다. 우리는 캐시 서버 중 하나를 제거할 수 있으며 여전히 캐시 클러스터가 항목을 제공하고 나머지 서버에서 복구할 수 있음을 볼 수 있습니다.

이를 위해 서버 중 하나를 중지해야 하며 그렇게 하겠습니다. 우리는 2개의 서버, 21과 22를 가지고 있습니다. 클러스터에서 나간 것처럼 22를 중지한 다음 쿼리를 다시 실행하겠습니다.

캐시 서버 중지
캐시 서버 중지

49 더하기 42가 표시되며 91개 항목은 서버 중 하나에서 계속 사용할 수 있습니다. 이제 다른 서버에서 복구되었으며 쿼리를 다시 실행하고 고객 목록을 다시 보면 클러스터에서 이 서버의 모든 항목을 가져올 수 있습니다. 이 서버에서 진행 중인 Requests/sec, 진행 중인 Fetches/sec를 볼 수 있습니다.

신뢰성 테스트 성공
신뢰성 테스트 성공

따라서 런타임에 캐시 서버 중 하나를 사용할 수 없는 경우에도 이제 안정적인 캐싱을 사용할 수 있습니다. 다른 캐시 서버는 데이터를 복구하고 쿼리에 잘 응답할 수 있습니다. 동시에 데이터베이스의 부하를 줄이고 있습니다. 더 이상 중복 쿼리가 데이터베이스로 이동하지 않습니다.

NHibernate용 통합 코드 NCache

우리는 NHibernate에 대한 통합 코드를 제공합니다 NCache, 내가 연 프로젝트에서 볼 수 있듯이 이 소스 코드는 특정 NHibernate 버전에 맞게 최적화하거나 사용자 정의할 수 있습니다.

NHibernate용 통합 코드 NCache
NHibernate용 통합 코드 NCache

당신이 NCache 설치 폴더, 여기에 코드가 있습니다. 오늘 시간 내주셔서 대단히 감사합니다. NCache 유용할 수 있습니다. 얼마나 안정적이고 확장 가능한가 NCache NHibernate 애플리케이션의 성능을 높이는 것입니다. 에서 더 많은 업데이트를 기대해 주세요. NCache. 다음 튜토리얼에서 다양한 기능에 대해 논의할 것입니다. 질문이 있으시면 에 이메일을 보내주십시오. support@alachisoft.com

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.