WebSockets和负载平衡是一个瓶颈?

在这些无人机前面有一堆充当WebSocket无人机和负载均衡器的系统时。 当WebSocket请求进入LB时,它会选择一个WebSocket无人机,并建立WebSocket。 (我在ELB使用AWS ELB tcp SSL终止)

问题:现在创建的WebSocket是通过LB,还是LB将WebSocket请求转发给WebSocket寄存器,因此客户端和WebSocket寄存器之间有直接链接?

如果WebSocket连接通过LB,这会使LB成为一个巨大的瓶颈。

移除LB并向客户端提供WebSocket无人机的直接IP可以绕过这个瓶颈,但需要自己创建这个逻辑,我打算这样做(取决于这个问题的答案)。

那么,我的想法是如何运作正确的?


AWS ELB作为LB

在查看Pavel KI建议的可能重复之后,得出结论:WebSocket连接将通过AWS ELB,如下所示:

Browser <--WebSocket--> LB <--WebSocket--> WebSocketServer

这使ELB成为瓶颈,我想要的是:

Browser <--WebSocket--> WebSocketServer

ELB仅用于为客户端提供可用WebSocketServer的主机名/ IP。

DNS作为LB

上面的问题可以通过在DNS级别上进行平衡来解决,如可能的重复中所述。 既然这样,当请求ws.myapp.com时,DNS将给出可用WebSocketServer的IP。

缺点是,这将需要不断更新DNS上/下WebSocketServer的变化(如果你的应用程序是弹性的,这将成为更多的问题)。

自定义LB

另一种选择是创建一个自定义LB,它可以持续监视WebSocketServers,并在客户端请求时返回可用WebSocketServer的IP。

缺点是客户端需要执行单独的(AJAX)请求来获取可用WebSocketServer的IP,而使用AWS ELB时,负载平衡会隐式发生。

结论

选择更好的邪恶..

链接地址: http://www.djcxy.com/p/15279.html

上一篇: WebSockets and Load Balancing, a bottleneck?

下一篇: How do I implement the type of page curl used in Google Play Books?