如果我有一个 Web 应用程序在 3 台支持 Web 套接字的计算机上运行,并且客户端连接到其中一台计算机,则每个请求是否始终发送到同一台计算机,或者负载均衡器可以将其发送到不同的计算机吗?
基本上,一旦网络浏览器通过网络套接字建立连接,负载均衡器是否可以将每个请求发送到不同的服务器?
如果可以,哪些负载均衡器可以做到这一点?
此外,如果我使用类似氛围的框架来检测浏览器兼容性并选择适当的协议(protocol),这将如何影响负载平衡机会?
最佳答案
如 basic description of websockets protocol on Wikipedia 中所述通过 HTTP 协议(protocol)完成握手后,将通过与确切服务器的持久 TCP 连接执行其他通信。
因此,不会有通常 HTTP 含义中的“请求”,只有 2 个端点(服务器和客户端)交换数据。这就是为什么通常意义上的负载平衡是不可能的(并且通常不需要,因为服务器能够同时处理相当多的并发 TCP 连接 - 关于这一点的很好的讨论 here )。这就是为什么通过 websocket 发送的数据总是会被正确的服务器机器(期望它的机器)接收。
如果您确实需要这个,您可以使用L3负载均衡器,如上面提到的帖子中所述。
关于http - 负载平衡 Web 套接字和长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182494/