아시다시피 JSP 애플리케이션에는 여러 HTTP 요청을 처리하기 위한 세션 객체 개념이 있습니다. 이는 HTTP 프로토콜이 상태 비저장이고 세션이 여러 HTTP 요청에서 사용자 상태를 유지 관리하는 데 사용되기 때문입니다.
단일 웹 서버 구성에서는 문제가 없지만 JSP 애플리케이션을 실행하는 다중 서버 부하 분산 웹 팜이 있는 즉시 세션을 유지할 위치 문제에 직면하게 됩니다. 이는 로드 밸런서가 각 HTTP 요청을 가장 적절한 웹 서버로 라우팅하는 것을 이상적으로 좋아하기 때문입니다. 그러나 세션이 하나의 웹 서버에만 유지되는 경우 세션이 상주하는 웹 서버에만 지정된 세션과 관련된 요청을 보내는 로드 밸런서의 고정 세션 기능을 사용해야 합니다.
이는 해당 사용자의 세션이 해당 웹 서버에 상주하기 때문에 다른 웹 서버가 유휴 상태인 경우에도 하나의 웹 서버가 과부하될 수 있음을 의미합니다. 이것은 물론 확장성을 방해합니다. 또한 하나의 웹 서버에만 Session 개체를 유지하면 어떤 이유로든 해당 웹 서버가 다운될 경우 세션 데이터가 손실됩니다.
이 데이터 손실 문제를 방지하려면 세션이 둘 이상의 웹 서버에 복제되는 메커니즘이 있어야 합니다. 여기에서 주요 서블릿 엔진(Tomcat, WebLogic, WebSphere 및 JBoss)은 모두 일종의 세션 지속성을 제공합니다. 일부 형태의 세션 복제도 포함하지만 모두 문제가 있습니다. 예를 들어 파일 기반 및 JDBC 지속성은 느리고 성능 및 확장성 문제를 일으킵니다. 세션 복제는 모든 웹 서버에 모든 세션을 복제하기 때문에 웹 서버가 XNUMX개 이상일 때 내결함성을 달성할 수 있는 경우에도 세션의 불필요한 복사본을 생성하기 때문에 매우 취약합니다.
이러한 상황에서 다음과 같은 Java 분산 캐시는 NCache 웹 클러스터의 여러 서버에서 세션 지속성이 확장성을 방해하지 않고 매우 지능적으로 수행되도록 하는 최선의 방법입니다. NCache 에는 복제를 통해 고가용성 및 장애 조치를 제공할 뿐만 아니라 데이터 파티셔닝을 통해 대규모 메모리 내 세션 스토리지를 제공하는 "Partition-Replica"라는 캐싱 토폴로지가 있습니다. 데이터 파티셔닝을 사용하면 캐시를 여러 파티션으로 나누고 각 파티션을 캐시 클러스터의 다른 캐시 서버에 저장하여 많은 양의 데이터를 캐시할 수 있습니다.
NCache 파티션-복제 토폴로지는 각 노드의 세션 데이터를 클러스터의 다른 하나의 노드에만 복제합니다. 이 접근 방식은 안정성을 손상시키지 않고 모든 서버 노드에서 세션 데이터를 복제할 때 성능에 미치는 영향을 제거합니다.
또한 웹 서버(Apache, Tomcat, Weblogic 및 WebSphere)에서 제공하는 세션 지속성은 웹 클러스터의 리소스와 메모리를 사용합니다. 이 접근 방식은 클라이언트 요청 처리를 담당하는 웹 클러스터 노드가 세션 복제 및 메모리 내 스토리지의 추가 작업도 처리하기 때문에 애플리케이션 성능을 저해합니다. 반면에 실행할 수 있습니다. NCache 웹 클러스터의 한 부분 이외의 별도 상자에 있습니다. 이렇게 하면 웹 클러스터 리소스를 확보할 수 있으며 웹 클러스터는 해당 리소스를 사용하여 점점 더 많은 클라이언트 요청을 처리할 수 있습니다.
JSP 세션 지속성을 위해 NCache 세션 모듈을 구현했습니다. NCacheJava 필터로서의 SessionProvider. NCache JSP 서블릿 필터는 요청과 응답을 동적으로 가로채고 백그라운드에서 세션 지속성을 처리합니다. 또한 JSP 애플리케이션 코드를 변경할 필요가 없습니다.
다음은 샘플입니다. NCache 사용할 애플리케이션 배치 디스크립터에서 정의해야 하는 JSP 서블릿 필터 구성 NCache JSP 세션 지속성:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<filter> <filter-name>NCacheSessionProvider</filter-name> <filter-class> com.alachisoft.ncache.web.sessionstate.NSessionStoreProvider </filter-class> </filter> <filter-mapping> <filter-name>NCacheSessionProvider</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <init-param> <param-name>cacheName</param-name> <param-value>PORCache</param-value> </init-param> <init-param> <param-name>configPath</param-name> <param-value>/usr/local/ncache/config/</param-value> </init-param> |
금후, NCache 성능 향상 및 확장성과 함께 웹 클러스터에서 세션 지속성을 달성하기 위한 훨씬 더 나은 메커니즘을 제공합니다.
따라서 완전히 작동하는 60일 평가판을 다운로드하십시오. NCache Enterprise 그리고 직접 사용해 보세요.