-1

我的目的是将 WebSockets 与自己的 TCP/IP 或 ISO/OSI 堆栈一起使用。我想对从客户端到应用程序服务器的所有请求进行负载平衡(我们知道 WebSockets 只能与已建立连接的一台服务器一起使用)。我希望能够连接到一个节点并向任何节点发送请求。

算法如下:
1. 客户端与负载均衡器后面的一个节点建立连接。
2. 客户端通过 WebSocket 向负载均衡器发送数据。
3. 负载均衡器接收数据并将其发送到任何服务器。
4. 服务器看到数据并将其发送给应用程序。即使尚未建立连接,服务器也不会丢弃数据包,它只是将数据包发送到应用程序。

在这种情况下,我们可以轻松地对 WebSockets 请求进行负载平衡。我试图了解如何重写 TCP/IP 堆栈并让数据包直接进入用户空间中的应用程序,但我很困惑。

我们需要使用 DPDK 吗?是的,那么您能否展示一个如何直接接收和发送数据包或如何跳过连接检查的最小示例?如果没有,那么在这种情况下我们需要使用什么?

4

1 回答 1

1

如果您只是希望能够重新平衡现有的 webSocket 连接,那么通过几行客户端代码,您可以向客户端发送“重新连接”消息,客户端将断开当前的 webSocket 连接,然后重新连接新连接。

此重新连接将允许您的服务器场重新平衡该新连接。

请记住,传入的 webSocket 连接以带有“升级”标头的 HTTP 请求开始生命,因此这就是您将在负载平衡中寻找的内容。

如果您在客户端和服务器上都使用 socket.io(webSocket 之上的消息传递层),那么它将自动重新连接,因此您甚至可以在服务器上断开连接,然后 socket.io 将自动重新连接而无需任何新的客户端代码.

于 2016-10-25T13:20:34.857 回答