如果我有一个 Web 应用程序在 3 台支持 Web 套接字的机器上运行,并且一个客户端连接到其中一台,那么每个请求是否总是发送到同一台机器,或者负载均衡器可以将它发送到不同的机器吗?
基本上,一旦网络浏览器通过网络套接字建立连接,负载平衡器可以将每个请求发送到不同的服务器吗?
如果是这样,哪些负载均衡器可以做到这一点?
此外,如果我使用类似框架的氛围来检测浏览器兼容性并选择适当的协议,这将如何影响负载平衡机会?
如果我有一个 Web 应用程序在 3 台支持 Web 套接字的机器上运行,并且一个客户端连接到其中一台,那么每个请求是否总是发送到同一台机器,或者负载均衡器可以将它发送到不同的机器吗?
基本上,一旦网络浏览器通过网络套接字建立连接,负载平衡器可以将每个请求发送到不同的服务器吗?
如果是这样,哪些负载均衡器可以做到这一点?
此外,如果我使用类似框架的氛围来检测浏览器兼容性并选择适当的协议,这将如何影响负载平衡机会?
正如在通过 HTTP 协议完成握手后Wikipedia 上 websockets 协议的基本描述中所述,其他通信是通过与确切服务器的持久TCP 连接执行的。
因此,通常的 HTTP 含义中不会有“请求”,只有 2 个端点(服务器和客户端)交换数据。这就是为什么通常意义上的负载平衡是不可能的(并且通常不需要,因为服务器能够同时处理很多同时的 TCP 连接——关于这一点的很好的讨论在这里)。这就是为什么通过 websocket 发送的数据总是会被正确的服务器机器(期待它的机器)接收。
如果你真的需要这个,你可以使用上面提到的帖子中描述的 L3 负载均衡器。
“基本上,一旦网络浏览器通过网络套接字建立连接,负载平衡器可以将每个请求发送到不同的服务器吗?”
如果这是您想要的操作,是的。
Riverbed 有一个软件负载均衡器可以实现这一点。 https://splash.riverbed.com/docs/DOC-1451