ASP.NET Core 세션 제공자 NCache 웹 팜에서

ASP.NET Core 완전히 재설계되었으므로 이전 ASP.NET과 다른 세션 관리 시스템을 갖습니다.

비록 ASP.NET Core 웹 서버 자체에 세션을 저장하는 메모리 내 세션 공급자를 제공합니다. ASP.NET Core 세션 저장 웹 팜에서는 도전적입니다.

한 가지 접근 방식은 애플리케이션 요청 라우팅 모듈을 통해 모든 사용자 요청을 동일한 웹 서버로 라우팅하는 웹 팜에서 고정 세션을 사용하는 것입니다. 그러나 고정 세션은 확장성에 영향을 미치고 부적절한 부하 분산으로 이어질 수 있습니다. 상대적으로 더 나은 접근 방식은 세션 저장소에 SQL Server를 사용하는 것입니다. 그러나 확장 가능한 ASP의 경우.NET core 응용 프로그램, SQL 데이터베이스가 성능 병목 현상이 됨. 이는 모든 관계형 데이터베이스와 마찬가지로 SQL Server가 BLOB 저장에 능숙하지 않고 세션이 데이터베이스에 BLOB로 저장되기 때문입니다.

실행 가능한 옵션은 ASP를 저장하기 위한 분산 캐시.NET Core 세션 웹팜에서 그리고 이 목적에 가장 적합한 분산 캐시는 NCache 강력하고 기능이 풍부한 ASP를 제공하는.NET Core 사용할 수 있는 세션 서비스입니다.

NCache 매우 .NET/을 위한 빠르고 확장 가능한 분산 캐시.NET Core. 런타임에 더 많은 캐시 서버를 추가하고 선형적으로 확장할 수 있도록 하여 극심한 트랜잭션 로드를 처리합니다. 한편, NCache 고가용성 및 동적 캐시 클러스터링 ASP를 잃지 않도록 하십시오..NET Core 웹 서버 또는 캐시 서버가 다운된 경우 세션 데이터입니다.

ASP.NET Core 세션 - NCache

ASP 구성.NET Core 세션 제공자 NCache

web.config만 수정하는 ASP.NET과 달리 ASP.NET에서는 "구성 서비스()" 메서드는 Startup 클래스에 있습니다. 다음 코드는 이 작업을 수행하는 방법을 보여줍니다. NCache. 자세한 내용은 NCache ASP.NET Core 세션 공급자 구성 문서 단계를 따르십시오.

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services
    services.AddMvc();

    // Add NCache Session service to IServiceCollection with various configuration 
    // options

    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });
}

ASP의 이점.NET Core 세션 제공자 NCache

우선, 사용하는 데 필요한 프로그래밍이 거의 없습니다. NCache 당신의 ASP로.NET Core 세션 제공자; 코드 변경은 ConfigureServices(IServiceCollection services) 의 방법 Startup 수업. 자세한 내용 보기 ASP 구성.NET Core 세션 제공자 NCache. 다음은 사용에 대한 몇 가지 이점입니다. NCache 당신의 ASP로.NET Core 세션 상태 제공자:

  1. 고가용성: 당신의 ASP.NET Core 애플리케이션은 프로덕션에서 의존하는 모든 것에서 고가용성을 요구합니다. 그리고, NCache 를 통해 이를 제공합니다. 자가 치유 피어 투 피어 클러스터링 아키텍처 단일 실패 지점이 없습니다. NCache ASP도 복제.NET Core 세션이 있으므로 서버가 다운될 경우 데이터 손실이 없습니다.

  2. 선형 확장성: 당신의 ASP.NET Core 애플리케이션은 높은 트랜잭션 로드를 처리하기 위해 확장해야 할 가능성이 높습니다. 그리고 ASP가.NET Core 세션 저장소가 확장되지 않으면 애플리케이션도 확장되지 않습니다. 다행스럽게도, NCache 제공 선형 확장성 ASP에 병목 현상이 발생하지 않습니다..NET Core 응용 프로그램.

  3. 지능형 세션 복제: 세션 복제는 고가용성을 제공하지만 성능 비용이 수반됩니다. NCache 풍부한 기능을 통해 이 비용을 최소화합니다. 캐싱 토폴로지 (미러링된 캐시, 복제된 캐시 및 파티션-복제본 캐시). NCache 눈에 띄는 방식으로 성능을 저하시키지 않으면서 데이터를 복제하면서도 데이터 안정성을 달성합니다.

  4. 빠른 컴팩트 직렬화: 일반 .NET 직렬화는 더 큰 개체의 경우 느리고 부피가 큰 경우가 많습니다. 이 병목 현상을 처리하려면 NCache 구현했습니다 컴팩트 직렬화 훨씬 빠릅니다. 수업을 등록하고 등록하기만 하면 NCache 나머지는 합니다. 프로그래밍이 필요하지 않습니다. 접속시간이 되면, NCache 직렬화 소스 코드를 생성하고 메모리 내에서 컴파일한 다음 직렬화에 사용합니다.

여러 지역 지원(데이터 센터)

NCache ASP를 관리할 수 있습니다..NET Core 여러 지역(데이터 센터)에서 실행되는 애플리케이션에 대한 세션입니다. 여기 있습니다:

  1. ASP의 WAN 복제.NET Core 세션 수 : NCache 또한 모든 ASP를 복제할 수 있는 다중 데이터 센터 WAN 복제 기능을 제공합니다..NET Core WAN을 통해 다른 지역(데이터 센터)으로 세션을 전송합니다. 이것은 브리지 토폴로지 기능을 통해 수행됩니다. NCache. 이렇게 하면 ASP가.NET Core 지역(데이터 센터)이 다운되더라도 세션은 손실되지 않습니다.

  2. 다중 지역 ASP.NET 세션 상태: 대역폭 소비 비용 때문에 WAN을 통해 ASP.NET 세션 상태를 복제하지 않으려면 다음을 사용하도록 선택할 수 있습니다. NCache 다중 사이트 ASP.NET 세션 상태 기능. 여기에서 ASP.NET 세션 상태는 사이트 간에 복제되지 않고 대신 생성 위치에 유지됩니다. 그러나 한 지역(데이터 센터)에서 다른 지역으로 트래픽을 이동하면 ASP.NET 세션 상태도 함께 이동합니다. 자세한 내용은 제품 페이지에서 읽을 수 있습니다. 다중 지역 ASP.NET 세션 상태 공급자 NCache.

고급 기능 NCache ASP.NET Core 세션 제공자

ASP.NET Core 세션 제공자 NCache 모든 표준 ASP 구현.NET Core 세션 공급자 기능. 또한 다양한 고급 기능을 구현하여 응용 프로그램의 복잡한 상황을 처리할 수 있습니다. ConfigureServices(IServiceCollection services) 방법.

  1. 표준 세션 잠금: 표준 ASP.NET Core 세션 잠금 동작은 세션이 잠기지 않는다는 것입니다. 결과적으로 세션을 동시에 업데이트하려고 하면 세션이 손상될 수 있습니다. 그래서, NCache 이전 ASP.NET 세션 상태와 유사한 세션 잠금 기능을 구현했습니다. 세션이 잠겨 있으면 이에 대한 다른 요청이 90초(구성 가능) 동안 대기하고 마지막에 강제로 세션 잠금을 해제합니다. "구성"에서 다음 속성으로 이 잠금 옵션을 지정할 수 있습니다.

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. 향상된 세션 잠금: 트래픽이 많은 ASP의 경우.NET Core 애플리케이션에서 로봇이 데이터를 스크랩하고 수백 또는 수천 개의 요청에 대해 동일한 세션 ID를 동시에 사용하도록 할 수 있습니다. 이 경우 90초 동안 기다리면 사용 가능한 모든 소켓이 묶일 수 있으므로 표준 세션 잠금 옵션을 사용할 수 없습니다. 대신 요청을 신속하게 반환하여 실패를 나타내기를 원합니다. 다음과 같이 지정할 수 있습니다.

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = 5;
    configuration.EmptySessionWhenLocked = true;
    ...
    });

    이렇게 하면 5초 간격으로 XNUMX번 재시도한 다음 실패를 나타내기 위해 빈 세션을 반환합니다. 여기에 예외를 던지는 것조차 비용이 많이 듭니다. 이것이 빈 세션이 구현되는 이유입니다. 이 동작은 원래 트래픽이 많은 항공사 웹사이트의 요청에 따라 구현되었습니다.

  3. 오류 로깅: 웹 서버의 로그 파일에 오류 로깅을 활성화할 수 있습니다( INSTALL_DIR\NCache\log-files\SessionStoreProvider 폴더) "EnableLogs" 및 "WriteExceptionsToEventLog" 구성 속성은 다음과 같습니다.

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableLogs = true;
    configuration.WriteExceptionsToEventLog = false;
    ...
    });
    

다음에 무엇을할지

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