Javascript 多个WebSocket客户端连接到不同WebSocket服务器的Node.js群集?
我正在使用Node.js实现一个Websocket客户端,该客户端订阅来自多个Websocket服务器的数据源Javascript 多个WebSocket客户端连接到不同WebSocket服务器的Node.js群集?,javascript,node.js,websocket,load-balancing,node-cluster,Javascript,Node.js,Websocket,Load Balancing,Node Cluster,我正在使用Node.js实现一个Websocket客户端,该客户端订阅来自多个Websocket服务器的数据源 foo = new WebSocket('ws://foo.host ...') bar = new WebSocket('ws://barhost ...') baz = new WebSocket('ws://baz.host ...') qux = new WebSocket('ws://qux.host ...') foo.on('data', data => doSo
foo = new WebSocket('ws://foo.host ...')
bar = new WebSocket('ws://barhost ...')
baz = new WebSocket('ws://baz.host ...')
qux = new WebSocket('ws://qux.host ...')
foo.on('data', data => doSomething(data)) // 5 events per second
bar.on('data', data => doSomething(data)) // 1 events per second
baz.on('data', data => doSomething(data)) // 1 events per second
qux.on('data', data => doSomething(data)) // 1 events per second
问题:如果我们有一个多核系统(例如4个核),是否可以使用Node.js Cluster对传入Websocket数据的处理进行负载平衡,以便每个核每秒大约接收2个要处理的事件
或者最好手动启动8个node.js实例并向其传递一个参数[foo | bar | baz | qux]以选择它将连接到的Websocket服务器?nodejs群集模块解决了一个特定问题。当您有一个http服务器并且希望在多个进程之间平衡传入连接时,nodejs集群模块就是这样做的。那不是你所拥有的。您有多个客户端传出webSocket连接,并且显然希望应用多个进程来处理传入数据。这与nodejs集群模块的功能完全不同 首先,重要的是要理解接收数据对于NodeJ来说不是CPU密集型的过程。实际的套接字处理和接收传入的数据到计算机上是由操作系统处理的,并且在nodejs进程之外 因此,如果您实际上需要多个CPU来处理这个问题,那么必须处理传入的数据,而不仅仅是接收数据 有几种不同的方法可以构建它