我可以在 Ignite 客户端节点中使用 Ignite WebSessionFilter 进行 Web 会话缓存吗?

问题描述 投票:0回答:1

我的要求如下。 两个 Web 应用程序在单个 Tomcat 实例中运行。我们将应用程序部署为集群。 WebApp1 - 运行 Ignite 服务器节点,并形成集群。当 Ignite 集群在此 Web 应用程序中运行时,会话复制是通过 WebSessionFilter 实现的。 WebApp2 - 此 Web 应用程序需要会话复制。我想将 WebSessionFilter 与 Clint 节点一起使用。该客户端节点将从运行在同一 JVM 中的 Ignite 服务器节点访问缓存。

这个方法有效吗?我不想在 WebApp2 中运行另一个 ignite 集群只是为了会话复制。

2024-04-05 17:43:14,253 UTC+0530 DEBUG [http-nio-8080-exec-2] org.apache.ignite.logger.jcl.JclLogger -- 使用 ID 的缓存会话:B4BE9F96EB0BDA0FAA2E827AE2B1364F 2024-04-05 17:43:14,260 UTC+0530 错误 [http-nio-8080-exec-2] org.apache.ignite.logger.jcl.JclLogger -- 无法更新 Web 会话:null java.lang.IllegalStateException:提交响应后无法调用 sendError() 在 org.apache.catalina.connector.ResponseFacade.checkCommited(ResponseFacade.java:511) ~[catalina.jar:9.0.83] 在 org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:344) ~[catalina.jar:9.0.83] 在 org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet.service(CmisBrowserBindingServlet.java:266) ~[chemistry-opencmis-server-bindings-1.1.0.jar:1.1.0] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[servlet-api.jar:4.0.FR] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[catalina.jar:9.0.83] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[catalina.jar:9.0.83] 在 org.apache.ignite.cache.websession.WebSessionFilter.doFilterV2(WebSessionFilter.java:564) ~[ignite-web-2.16.0.jar:2.16.0] 在 org.apache.ignite.cache.websession.WebSessionFilter.doFilterDispatch(WebSessionFilter.java:401) ~[ignite-web-2.16.0.jar:2.16.0] 在 org.apache.ignite.cache.websession.WebSessionFilter.doFilter(WebSessionFilter.java:377) ~[ignite-web-2.16.0.jar:2.16.0] 在 com.opentext.ecm.asm.cmis.http.filter.SessionFilter.doFilter(SessionFilter.java:113) ~[as_cmis.jar:?] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[catalina.jar:9.0.83] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[catalina.jar:9.0.83] 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-websocket.jar:9.0.83] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[catalina.jar:9.0.83] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[catalina.jar:9.0.83]

我看到一些如下问题。

ignite
1个回答
0
投票

Apache Ignite 是一个内存分布式缓存。您所描述的是一个 JVM 中的 1 个 Ignite 实例(缓存),它利用另一个 JVM 从同一主机中的 JVM 上运行的单个缓存实例获取数据。有两种更简单的方法可以完成上述任务,这两种方法都可以提供更简单的架构并提高性能: 1.) 使用 2 个 Ignite 实例,每个 Web 应用程序 1 个。这 2 个节点形成 1 个单 2 节点集群并使用复制缓存。这将允许两个 Web 应用程序能够完全访问整个缓存数据集及其相关的性能优势。 2.) 使用 2 个 Ignite 实例,每个 Web 应用程序 1 个。这 2 个节点形成 1 个单 2 节点集群,并使用分区缓存和 1 个备份。这还允许两个 Web 应用程序能够完全访问整个缓存数据集及其相关的性能优势。

最重要的是,现在您不必在第二个 Web 应用程序中设计替代缓存方法。您有 2 个 Web 应用程序使用完全相同的缓存实现。因此,您减少了代码、降低了复杂性并提高了可靠性!

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.