假设用户的会话负载平衡到服务器#8,某些状态维护在服务器#8。用户的下一个操作需要再次路由到服务器#8,因为这是唯一具有服务器状态的地方。是否有标准解决方案来维护从用户会话到长期会话的服务器编号的映射?看起来这个将用户会话映射到许多服务器中的特定服务器的问题应该是标准的“教科书”解决方案的常见问题,该解决方案能够提高CPU和内存的效率。
答案 0 :(得分:1)
一个简单的解决方案是配置负载均衡器以使用粘性会话。负载均衡器会将用户会话关联到Server#8,然后来自同一会话的后续请求将自动转发到同一服务器(服务器8)。
答案 1 :(得分:0)
最好的解决方案不是依靠服务器亲和力 - 它会使您的系统变得脆弱。我不希望教科书的答案与我不希望教科书回答关于如何在浴室中使用烤面包机以及如何使用螺丝刀进行脑部手术的方式相同。
如果你必须有粘性路由,那么你如何实现它取决于你如何建议处理服务器不可用 - 你是否对请求进行故障转移?或者只是停止处理本地服务器的请求?
我最初认为这是一个非常愚蠢的问题 - 除非您编写自己的代理/负载均衡器(在这种情况下您应该已经知道他的答案),但是有什么相关性,但是有一些代理可以让您实现你自己的导演。
因此,最终归结为会话的哪些特征在HTTP请求中可见。由于IP加法器可以在中途更改,因此您可以使用的唯一实用特性是会话标识符 - 通常实现为cookie。