Websocket 重新连接间隔

Websocket 重新连接间隔,websocket,server,continuous-deployment,reconnect,Websocket,Server,Continuous Deployment,Reconnect,我正在寻找处理服务器重启的最佳实践。具体来说,我使用websockets为一个日交易模拟web应用程序向用户推送股票价格。我有10000个并发用户。为了确保响应性ux,我在触发onclose事件时重新连接到websocket。随着用户群的增长,我们不得不扩展硬件。除了更好的硬件外,我们还实现了重新连接前的随机延迟。这样做的目的是在服务器每晚重新启动时(连续部署),分散握手的流入。然而,我们的一些用户的互联网(isp和/或wifi)很差。他们之间的联系不断减少。对于这些用户,我希望他们立即重新连接

我正在寻找处理服务器重启的最佳实践。具体来说,我使用websockets为一个日交易模拟web应用程序向用户推送股票价格。我有10000个并发用户。为了确保响应性ux,我在触发onclose事件时重新连接到websocket。随着用户群的增长,我们不得不扩展硬件。除了更好的硬件外,我们还实现了重新连接前的随机延迟。这样做的目的是在服务器每晚重新启动时(连续部署),分散握手的流入。然而,我们的一些用户的互联网(isp和/或wifi)很差。他们之间的联系不断减少。对于这些用户,我希望他们立即重新连接。对于这个问题,有没有一个解决方案不需要上述权衡?

这个问题需要一个主观的回答,这是我的:)

  • 区分客户端断开连接和服务器关闭: 这可以通过在websocket上发送关机消息来实现,以便活动客户端可以准备并重新连接随机延迟。因此,如果客户端遇到
    onclose
    事件而没有正确的关机广播,则可以尽快重新连接。这意味着需要修改客户端应用程序以考虑此特殊关闭事件

  • 处理握手负载:一些web服务器可以将传入连接作为异步并行事件队列来处理,因此最多可以同时初始化X个连接(并行),其他服务器将在队列中等待轮到它们。这允许保护服务器性能,因此websocket握手将根据服务器的实际处理能力自动延迟。当然,这意味着web服务器技术的改变,这取决于您的用例


单一服务器可能是瓶颈。与其在硬件上进行扩展(垂直),不如水平扩展(添加同一服务的多个实例),然后进行滚动更新(逐个更新并重新启动每个实例)。