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

时间:2011-02-07 14:59:08

标签: java asp.net session scaling

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

  • 用户无需启用Cookie
  • 强加了255个字符的URL查询字符串限制
  • 很多GET请求(没有隐藏的表单字段)
  • 应用程序在多个服务器(Web场)上运行
  • 部分用户通过代理(同一IP)连接
  • 用户通过HTTPS连接
  • 50 000个并发用户

5 个答案:

答案 0 :(得分:3)

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

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

当然,你会遇到通常的问题,使用ID欺骗并且会话数据库成为瓶颈。

答案 1 :(得分:1)

首先,恕我直言,没有一个很好的替代会议。问题是如何在禁用cookie时获取它。答案是使用URL参数。因此,您必须为每个请求(包括链接和表单)附加会话ID。所有其他要求并不真正相关。使您的逻辑无状态,因此您没有可扩展性问题:所有请求都应通过负载ballancer到达您的逻辑,因此您可以根据需要添加任意数量的服务器。

答案 2 :(得分:0)

可能是URL Rewriting或某些URI缩短机制,例如http://tinyurl.comhttp://goo.gl,因此您可以在255个字符下很好地传递会话详细信息。
注意:不建议使用这些服务,而是使用机制。

答案 3 :(得分:0)

首先,您的要求非常紧张。 我看到的唯一选择是使用这样的方法:http://code.google.com/p/seaside/

简而言之:您的系统会生成无状态网址 http://host/app/@123445568978 然后,您将继续使用db来获取会话对象。

答案 4 :(得分:0)

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