如何在AWS服务器上管理用户会话?

时间:2015-02-12 20:23:51

标签: java struts2 httpsession usersession

我的后端是JAVA,网站托管在AWS服务器上(2个或更多)。在我的网站上处理用户会话的最佳方法是什么?

查看HTTPSession,但缺点是一台服务器的会话与另一台服务器的会话不具有相同的属性。 那么处理用户会话的最佳解决方案是什么?

P.S。:我正在使用Struts2。

1 个答案:

答案 0 :(得分:1)

当您有多个可以处理请求的应用服务器时,有两种主要方法可以处理会话状态:

  1. 让您的负载均衡器实施“粘性”会话。这里,负载均衡器将来自同一客户端的所有请求发送到同一个应用服务器。会话在那里本地维护,一切都像只有一个应用服务器一样工作。当应用服务器关闭时,所有粘贴到该服务器的会话都将丢失。

  2. 拥有一个可供所有应用服务器使用的公共会话存储。当应用服务器收到请求时,它会从会话存储中获取会话状态,并在完成修改该请求的会话状态后,将其写回存储。会话存储可能是共享数据库,也可能是所有应用服务器远程访问的内存缓存。如果应用服务器出现故障,则不会丢失任何会话。但是,每次通过网络读取/写入会话的请求都会产生额外的开销。

  3. 要确定使用哪种方法,您需要考虑在丢失服务器,会话状态大小等时不会杀死会话的重要性。在我看来,常见的会话存储几乎总是可取的,因为它是在操作上更容易处理 - 您可以随时在不杀死会话的情况下重击服务器。

    我不会推测可用于支持实施的产品的可能选择,因为这对于该网站来说纯粹基于意见和偏离主题。可以说有很多好的选择 - 适合您的特殊选择将取决于您的具体要求和专业知识。