将双向实时连接扩展到数十万个的最佳方法?

时间:2018-06-21 21:03:45

标签: javascript node.js sockets websocket socket.io

我想构建一个可以与许多客户进行实时轮询的应用程序(想想总部问答)。 以最快的速度和最低的成本实现这一目标的最佳技术/方法是什么?

我以前使用过socket.io,但是对于我要连接的大量客户端来说,这并不足够。

我的服务器在node.js上运行

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题,实际上只能通过非常广泛的建议和建议来解决。

基本上,它可以归结为:

  • 使用节点的内置clustering来利用每台服务器上的所有CPU,
  • 可能还在多个服务器之间使用某种负载平衡。

Socket.io实际上与连接数无关。通过基于本机http / https模块编写自己的websocket库,也许可以减少CPU周期或内存使用,但是可能会牺牲稳定性,安全性和/或功能。不管您使用什么,只要有足够的流量,最终您都会遇到瓶颈。可能是网络带宽,CPU使用率,内存等。

遇到瓶颈时,您只需要制定一个解决方案即可。您可以通过升级服务器以具有更多的CPU,内存或带宽来做到这一点,或者可以进行负载平衡设置并扩展服务器数量。