多个前端,共享后端和处理附加到一个会话的并发请求

时间:2011-01-31 09:36:14

标签: session

假设我有一个简单的架构,会话将通过数据库共享,多个前端(比如F1和F2)与同一个后端通话。

我的问题是两个前端都会收到对应同一会话的请求的情况:一个天真的实现会导致会话相互覆盖(我看着似乎属于这种情况的django)。我可以尝试设计后端,例如它保证不超过一个前端可以处理给定的会话,但这似乎很难正确,特别是如果我想处理前端失败。

我不禁想到这个案件首先是病态的(任何时候都不应该有一个以上的特定会话请求),并且不值得处理,但我没有多少在Web开发方面的经验,也许我错过了一些东西。人们通常如何处理这个案子?

我想避免的可能解决方案:

  • 粘性会话:这是我目前使用的解决方案,一旦你有多个负载平衡器就难以支持,而且首先更明显地违背了负载平衡的精神。
  • 将数据放入cookie:由于我无法控制的技术原因,我无法使用cookie。

1 个答案:

答案 0 :(得分:0)

一种常见的解决方案称为会话持久性。无论您对f1或f2的请求是什么路径,都确保只要会话处于活动状态,具有该会话的客户端只会转到一个前端。

这是几乎所有负载均衡器的常见功能。例如,nginx具有ip_hash http://wiki.nginx.org/NginxHttpUpstreamModule