我正在两端使用 node.js 构建文件同步程序(与 Dropbox 不同)。我需要有成千上万的客户同时请求数据。
这是我目前的系统:
- 服务器通过 websocket 向客户端推送通知(文件已更新)
- 客户端将下载排队并在空闲时发出 HTTP 请求
我将以压缩块的形式提供数据,例如每个 50 MB,因此 HTTP 请求开销(标头)可以忽略不计。
如果我使用 websockets 进行请求和推送通知,会有:
- 显着的整体速度提升?(减少延迟、身份验证等)
- 服务器上保持连接打开的额外开销?
- 推送二进制数据的问题?
我认为我需要通过专用的 websocket 发送通知,因为我不希望它们在下载时在服务器上排队(大量开销)。
注意:只要客户端的系统处于开启状态,这些 websocket 将长期打开。
编辑:我将在不同端口上的不同 http 服务器上使用 websocket,以便将它们移动到不同的 CPU 内核。我可能会打开数千个(如果不是数十万个)并发 websockets...