gpt4 book ai didi

java - 用于 tomcat 的分布式 HTTP session 状态服务器

转载 作者:行者123 更新时间:2023-11-28 22:25:18 25 4
gpt4 key购买 nike

我们的一个 Spring MVC Web 应用程序部署在多个带有 tomcat 7 的 Web 服务器上,LB 位于前端以平衡请求并将请求分发到适当的 tomcat 服务器。

这种 web farming 的问题是每个 tomcat 服务器都能够存储和检索自己的 HTTP session ,但是 LB 可以向任何一个 web 服务器发送请求。因此,如果通过 tomcatServer1 为用户提供登录页面,那么它将在其受尊重的服务器上创建 HTTP session ,并且可能会发生仪表板页面的第二次请求,LB 将其发送到 HTTP session 不可用的 tomcatServer2,结果用户再次被重定向登录页面。

为了克服这个问题,

  1. 我们在 LB 上使用“Sticky Session”属性,这样如果用户(HTTP session + 用户的公共(public) IP)第一次从 tomcatServer1 获得服务,那么它将绑定(bind)到该服务器。设置“粘性 session ”没有帮助,因为它没有平等地利用所有服务器。
  2. 另一种方法是,开发我们自己的 session 状态服务器并部署在服务器上,然后所有服务器都应与该服务器通信以存储和检索 session 对象/数据。
  3. 提供定制SessionManager到 Servlet 容器。

关于 #2,如果我们能够开发状态服务器,那么我也必须修改与 HttpSession.setAttribute() 相关的代码和 HttpSession.getAttribute() . 所以问题是,是否可以覆盖 HttpSession 的实现?对于方法 setAttribute 和 getAttribute? 还有关于 #3,我不知道这个解决方案是否会提供分布式状态 session 服务器?

最佳答案

我开发了session state server对于使用 python 的 tomcat。

因此,我不需要更改已经为创建/访问和销毁 session 编写的代码。此外,由于有单独的服务器/服务正在处理和存储 session ,因此不需要主集群。

关于java - 用于 tomcat 的分布式 HTTP session 状态服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com