2012-02-26 21 views
0

我有一个nodejs tcp服务器,它处理许多子服务器的状态,当发生状态服务器告诉子服务器执行一个动作时,它可能会很昂贵,大多数情况下它会非常昂贵(大约一分钟),在某些情况下它会在几秒钟内完成。执行潜在的昂贵任务

原因是什么孩子的服务器都在做(监听的WebSockets和传球相当大量的数据来回非常频繁),我不能有孩子服务器摊位同时经营这昂贵的任务。

很明显,nodejs没有能力产生新的线程,没有一些凌乱的实现。是否值得产生一个新的过程来执行这个潜在的昂贵的任务,我可以通过从父服务器发送的命令来确定它何时会很昂贵。

+0

是不是可以使用消息队列和创建几个工作进程呢? – Alfred 2012-02-26 20:46:15

回答

1

Node.js确实能够产生其他进程,并且它可以很好地处理它们。检查node.js文档中的child_processes,特别是fork命令,它允许您生成其他node.js作业并通过消息通道与它们进行通信。

Node.js Child Processes Node.js Fork

http://nodejs.org/docs/latest/api/child_processes.html#child_process.fork

+0

那些不是线程,那些是进程。 – Raynos 2012-02-26 20:06:22

+0

你当然是对的。我需要咖啡!答案已更新。 – 2012-02-26 20:46:47

+0

正如文档所言:“这些孩子节点仍然是V8的全新实例,假设每个新节点至少有30ms启动和10MB内存,也就是说,你无法创建数千个节点。”你不能创造很多这些。但是如果你没有产生这么多的过程,它可能会奏效。 – Alfred 2012-02-28 07:52:03