重新连接间隔

问题描述

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

解决方法

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...