【问题标题】:Reconnect Interval重新连接间隔
【发布时间】:2021-03-31 13:00:10
【问题描述】:

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

【问题讨论】:

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

标签: websocket server continuous-deployment reconnect


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多