在单个计算机上对node.js服务器实例进行水平扩展

时间:2011-06-15 17:32:07

标签: deployment node.js scalability

在node.js上运行Web服务器是一件很简单的事情(正如其优秀的示例和文档所示),但我想知道如何充分利用专用服务器的CPU资源?

由于node.js是单线程的,因此利用多个处理器的唯一方法是通过多个进程。当然,只有一个进程可以绑定到一个端口,因此似乎必须有一个主/工作模式,其中主分支子进程,绑定到传入端口,并将传入连接(和实际处理工作)委托给子进程。 (也许是通过饥饿的消费模式?)

这是扩展运行node.js的Web服务器的最佳方法吗?如果是这样,是否有库来简化主/工模式?如果没有,建议使用哪种模式或部署设置来最好地使用专用机器的整个资源?

ServerFault这是一个更好的问题吗?)

2 个答案:

答案 0 :(得分:6)

Multi-node是一个提供主/工作模式的库。

如果服务器进程不需要能够相互通信,并且您没有使用Socket.IO,那么一个简单的选择就是启动一个进程/核心,绑定到本地端口,并使用nginxHAProxy之类的内容来加载它们之间的平衡。

答案 1 :(得分:2)

如果您使用快递,我会使用tj的群集:http://learnboost.github.com/cluster/

它提供了基于cpu的'透明'负载均衡,这很好,因为你可以使用现有的快速应用程序,并且它可以相对轻松地跨核心进行扩展。