如您所知,JSP 应用程序具有 Session 对象的概念,以便处理多个 HTTP 请求。 这是因为 HTTP 协议是无状态的,而 Session 用于跨多个 HTTP 请求维护用户的状态。
在单个 Web 服务器配置中,没有问题,但是一旦您有一个运行 JSP 应用程序的多服务器负载平衡 Web 场,您就会立即遇到将 Session 保存在哪里的问题。 这是因为理想情况下负载均衡器喜欢将每个 HTTP 请求路由到最合适的 Web 服务器。 但是,如果 Session 仅保留在一个 Web 服务器上,那么您将被迫使用负载均衡器的粘性会话功能,它将与给定 Session 相关的请求仅发送到 Session 所在的 Web 服务器。
这意味着即使您有其他 Web 服务器处于空闲状态,一个 Web 服务器也可能会不堪重负,因为该用户的 Session 驻留在该 Web 服务器上。 这当然会妨碍可扩展性。 此外,仅将 Session 对象保留在一台 Web 服务器上也意味着如果该 Web 服务器因任何原因出现故障,则 Session 数据将丢失。
为了避免这种数据丢失问题,您必须有一种机制,将 Session 复制到多个 Web 服务器。 在这里,领先的 Servlet 引擎(Tomcat、WebLogic、WebSphere 和 JBoss)都提供了某种形式的 Session 持久性。 它们甚至包括某种形式的 Session 复制,但它们都有问题。 例如,基于文件的持久性和 JDBC 持久性很慢,会导致性能和可伸缩性问题。 会话复制也很弱,因为它会将所有会话复制到所有 Web 服务器,从而在您拥有两个以上 Web 服务器时创建不必要的 Session 副本,即使只有两个副本可以实现容错。
在这种情况下,Java 分布式缓存就像 NCache 是确保 Web 集群中多个服务器之间的会话持久性非常智能且不妨碍您的可扩展性的最佳选择。 NCache 有一个名为“Partition-Replica”的缓存拓扑,它不仅通过复制为您提供高可用性和故障转移,还通过数据分区为您提供大型内存会话存储。 数据分区使您能够通过将缓存分成多个分区并将每个分区存储在缓存集群中的不同缓存服务器上来缓存大量数据。
NCache 分区副本拓扑将每个节点的会话数据仅复制到集群中的另一个节点,这种方法消除了在所有服务器节点上复制会话数据的性能影响,而不会影响可靠性。
此外,Web 服务器(Apache、Tomcat、Weblogic 和 WebSphere)提供的会话持久性使用 Web 集群的资源和内存。 这种方法会阻碍您的应用程序性能,因为负责处理客户端请求的 Web 集群节点也在处理会话复制及其内存存储的额外工作。 然而,你可以运行 NCache 在 Web 集群的一部分以外的单独的盒子上。 通过这种方式,您可以释放 Web 集群资源,并且 Web 集群可以使用这些资源来处理越来越多的客户端请求。
对于 JSP 会话持久性, NCache 已经实现了一个会话模块 NCacheSessionProvider 作为 Java 过滤器。 NCache JSP Servlet Filter 动态拦截请求和响应,并在幕后处理会话持久性。 而且,您不必更改任何 JSP 应用程序代码。
这是一个样本 NCache 您需要在应用程序部署描述符中定义 JSP Servlet 过滤器配置以使用 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 为您提供更好的机制来实现 Web 集群中的会话持久性以及性能提升和可扩展性。
因此,请下载完整的 60 天试用版 NCache Enterprise 并亲自尝试一下。