Http 需要服务器状态的负载平衡长寿命会话

Http 需要服务器状态的负载平衡长寿命会话,http,session-state,load-balancing,Http,Session State,Load Balancing,假设一个用户的会话与服务器#8负载平衡,并且在服务器#8上维护一些状态。用户的下一个操作需要再次路由到服务器#8,因为这是其服务器状态的唯一位置。是否有一个标准的解决方案来维护长期会话从用户会话到服务器号的映射?在许多服务器中,将用户会话映射到特定服务器的问题似乎是标准“教科书式”解决方案的常见问题,该解决方案的cpu和内存效率都很高。最好的解决方案不是依赖于服务器亲缘关系,它会使系统变得脆弱。我不会期望教科书上的答案,就像我不会期望教科书上关于如何在浴缸里玩烤面包机或如何用螺丝刀进行脑部手术的

假设一个用户的会话与服务器#8负载平衡,并且在服务器#8上维护一些状态。用户的下一个操作需要再次路由到服务器#8,因为这是其服务器状态的唯一位置。是否有一个标准的解决方案来维护长期会话从用户会话到服务器号的映射?在许多服务器中,将用户会话映射到特定服务器的问题似乎是标准“教科书式”解决方案的常见问题,该解决方案的cpu和内存效率都很高。

最好的解决方案不是依赖于服务器亲缘关系,它会使系统变得脆弱。我不会期望教科书上的答案,就像我不会期望教科书上关于如何在浴缸里玩烤面包机或如何用螺丝刀进行脑部手术的答案一样

如果您必须使用粘性路由,那么如何实现它在很大程度上取决于您打算如何处理不可用的服务器—您是否对请求进行故障切换?或者只是停止处理本应定向到该服务器的请求

我最初认为这是一个非常愚蠢的问题-除非您正在编写自己的代理/负载平衡器(在这种情况下,您应该已经知道他的答案),否则相关性是什么?但是有一些代理允许您实现自己的控制器


因此,最终它归结为会话的哪些特征在HTTP请求中是可见的。由于IP Adders可以更改中流,因此您可以使用的唯一实用特性是会话标识符-通常作为cookie实现。

一个简单的解决方案是将负载平衡器配置为使用粘性会话。负载平衡器将用户会话与服务器8关联,然后来自同一会话的后续请求将自动转发到同一服务器(服务器8)。

考虑10台后端服务器。通过将这些服务器中的每台复制3次,可以实现容错。假设你有扑克服务。然后必须维护服务器状态。每个扑克牌都必须在某个服务器上维护,因为您不能将状态信任给客户端。因此,依赖服务器维护状态的需要毕竟并不罕见。不-会话数据不必绑定到集群中的特定节点。那么如何维护每个扑克手的状态呢?在会话数据中。还有哪里?我不明白你在说什么。如果我试图阻止客户端操纵手,那么完整的数据怎么可能不在服务器上呢。