使用 node.js 工作线程“向外扩展”socket.io

问题描述

早在 node.js 添加 cluster module 之前,我就一直在使用 worker threads 来“扩展”单线程 socket.io 应用程序。

但是由于有多个进程涉及(在我的情况下)大量使用 IPC,将相同的高带宽数据复制到所有工作人员会导致大量开销。所以与其 - socket.io 是否可以使用工作线程?我们的目标是使用多个内核。

我可以想到两种不同的方法

  • 有多个完全独立的 socket.io 实例,每个实例都在自己的工作线程上运行(例如,每个实例都服务于不同的 tcp 端口 - 这就是我当前的 cluster 解决方案的工作原理)
  • 一个 socket.io 实例在内部使用多个线程(在这种情况下它可能必须执行类似 epoll 的操作 - 所以我有点怀疑 socket.io 是否内置了)

注意由于工作线程应该用于执行 cpu 密集型 JavaScript 操作,因此从多进程切换到多线程可以获得多少收益还有待观察。但总的来说,我不希望进程内通信比进程间通信慢。此外,在工作线程的情况下,数据可以共享(而不是复制)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)