Como sabe, las aplicaciones JSP tienen el concepto de un objeto de sesión para manejar múltiples solicitudes HTTP. Esto se debe a que el protocolo HTTP no tiene estado y la sesión se usa para mantener el estado del usuario en varias solicitudes HTTP.
En una configuración de un solo servidor web, no hay ningún problema, pero tan pronto como tenga una granja de servidores web con equilibrio de carga de varios servidores que ejecuta una aplicación JSP, inmediatamente se encuentra con el problema de dónde mantener la sesión. Esto se debe a que, idealmente, a un equilibrador de carga le gusta enrutar cada solicitud HTTP al servidor web más apropiado. Pero, si la sesión se mantiene solo en un servidor web, entonces se ve obligado a usar la función de sesión fija del balanceador de carga donde envía solicitudes relacionadas con una sesión determinada solo al servidor web donde reside la sesión.
Esto significa que un servidor web puede verse abrumado incluso cuando tiene otro servidor web inactivo porque la sesión de ese usuario reside en ese servidor web. Esto, por supuesto, dificulta la escalabilidad. Además, mantener el objeto de sesión solo en un servidor web también significa la pérdida de datos de sesión si ese servidor web deja de funcionar por algún motivo.
Para evitar este problema de pérdida de datos, debe tener un mecanismo donde la sesión se replique en más de un servidor web. Aquí, los principales motores de servlet (Tomcat, WebLogic, WebSphere y JBoss) proporcionan algún tipo de persistencia de sesión. Incluso incluyen alguna forma de replicación de sesión, pero todos tienen problemas. Por ejemplo, la persistencia basada en archivos y JDBC es lenta y causa problemas de rendimiento y escalabilidad. La replicación de sesiones también es muy débil porque replica todas las sesiones en todos los servidores web, por lo que crea copias innecesarias de la sesión cuando tiene más de dos servidores web, aunque la tolerancia a fallas se puede lograr con solo dos copias.
En tales situaciones, un caché distribuido de Java como NCache es su mejor apuesta para garantizar que la persistencia de la sesión en múltiples servidores en un clúster web se realice de manera muy inteligente y sin obstaculizar su escalabilidad. NCache tiene una topología de almacenamiento en caché llamada "Partition-Replica" que no solo le brinda alta disponibilidad y conmutación por error a través de la replicación, sino que también le brinda un gran almacenamiento de sesión en memoria a través de la partición de datos. El particionamiento de datos le permite almacenar en caché grandes cantidades de datos dividiendo el caché en particiones y almacenando cada partición en diferentes servidores de caché en el clúster de caché.
NCache La topología Partition-Replica replica los datos de la sesión de cada nodo solo en otro nodo del clúster. Este enfoque erradica las implicaciones de rendimiento de replicar los datos de la sesión en todos los nodos del servidor sin comprometer la confiabilidad.
Además, la persistencia de sesión proporcionada por los servidores web (Apache, Tomcat, Weblogic y WebSphere) utiliza los recursos y la memoria del clúster web. Este enfoque dificulta el rendimiento de su aplicación porque los nodos del clúster web que son responsables de procesar la solicitud del cliente también manejan el trabajo adicional de la replicación de la sesión y su almacenamiento en memoria. Mientras que puedes correr NCache en cuadros separados, otra parte de su clúster web. De esta manera, puede liberar los recursos del clúster web y el clúster web puede usar esos recursos para manejar más y más solicitudes de clientes.
Para la persistencia de la sesión JSP, NCache ha implementado un módulo de sesión NCacheSessionProvider como filtro Java. NCache JSP Servlet Filter intercepta dinámicamente solicitudes y respuestas y maneja la persistencia de la sesión en segundo plano. Y no tiene que cambiar nada de su código de aplicación JSP.
Aquí hay una muestra NCache Configuración del filtro de servlet JSP que debe definir en el descriptor de implementación de su aplicación para usar NCache para la persistencia de la sesión 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> |
Por lo tanto, NCache le proporciona un mecanismo mucho mejor para lograr la persistencia de la sesión en el clúster web junto con un aumento del rendimiento y la escalabilidad.
Por lo tanto, descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.