Java 高流量web应用程序中用户会话的良好替代方案?

Java 高流量web应用程序中用户会话的良好替代方案?,java,asp.net,session,scaling,Java,Asp.net,Session,Scaling,在以下场景中,什么是好的/可扩展的用户会话替代方案: 用户不必启用cookie URL查询字符串限制为255个字符 大量GET请求(没有隐藏的表单字段) 应用程序在多台服务器上运行(web场) 某些用户通过代理连接(相同IP) 用户通过HTTPS连接 50000个并发用户 也许或者某种URI缩短机制,例如,您可以在255个字符以下传递会话详细信息。 注意:不建议使用这些服务,但建议使用机制。首先,IMHO,除了会话,没有好的替代方案。问题是当cookies被禁用时,您如何获得它。答案是使用UR

在以下场景中,什么是好的/可扩展的用户会话替代方案:

  • 用户不必启用cookie
  • URL查询字符串限制为255个字符
  • 大量GET请求(没有隐藏的表单字段)
  • 应用程序在多台服务器上运行(web场)
  • 某些用户通过代理连接(相同IP)
  • 用户通过HTTPS连接
  • 50000个并发用户
也许或者某种URI缩短机制,例如,您可以在255个字符以下传递会话详细信息。

注意:不建议使用这些服务,但建议使用机制。

首先,IMHO,除了会话,没有好的替代方案。问题是当cookies被禁用时,您如何获得它。答案是使用URL参数。因此,您必须将会话id附加到每个请求(包括链接和表单)。所有其他要求并不真正相关。使您的逻辑成为无状态,这样您就不会有可伸缩性问题:所有请求都应该通过load ballancer到达您的逻辑,这样您就可以添加任意数量的服务器

如果可以保证客户端始终连接到同一个web服务器,则可以使用SSL ID作为简单的会话跟踪机制。某些web服务器公开此功能,并在不支持Cookie时自动将其用于会话跟踪

无论在URL本身中包含会话ID是什么,唯一有效的解决方案。向URL添加参数是最简单的方法,但ID可以嵌入URL中的任何位置,即作为路径的一部分。您可以使用此ID从数据库中获取有关用户的信息


当然,您会遇到常见的问题,ID欺骗和会话数据库成为瓶颈。

首先,您的要求非常严格。 我看到的唯一选择是使用以下方法:

简而言之:您的系统将生成无状态URL,如
然后,您将在数据库上获取会话对象

50000用户在做什么?是否每15分钟对服务器进行位置更新的连续拖放或单击文本链接?在最后一种情况下:将所有内容移动到一台具有大量ram的服务器上。

嗯……我已被放下。为什么?我没有投你反对票,我只是解释一下。URL的查询字符串部分是唯一受字符限制的部分,而不是整个URL。查询字符串是URL中“?”后面的部分。您也没有投反对票,但您没有真正回答他们的问题。他们想知道高需求网站会话的替代方案,而不是url缩短器。据我所知,此人有严格的url大小限制,因此我的想法是缩短req/res大小,并继续传递会话和其他详细信息。主要是浏览其帐户中的页面,很少有多步骤表单。