在node.js上运行Web服务器是一件很简单的事情(正如其优秀的示例和文档所示),但我想知道如何充分利用专用服务器的CPU资源?
由于node.js是单线程的,因此利用多个处理器的唯一方法是通过多个进程。当然,只有一个进程可以绑定到一个端口,因此似乎必须有一个主/工作模式,其中主分支子进程,绑定到传入端口,并将传入连接(和实际处理工作)委托给子进程。 (也许是通过饥饿的消费模式?)
这是扩展运行node.js的Web服务器的最佳方法吗?如果是这样,是否有库来简化主/工模式?如果没有,建议使用哪种模式或部署设置来最好地使用专用机器的整个资源?
(ServerFault这是一个更好的问题吗?)
答案 0 :(得分:6)
Multi-node是一个提供主/工作模式的库。
如果服务器进程不需要能够相互通信,并且您没有使用Socket.IO,那么一个简单的选择就是启动一个进程/核心,绑定到本地端口,并使用nginx或HAProxy之类的内容来加载它们之间的平衡。
答案 1 :(得分:2)
如果您使用快递,我会使用tj的群集:http://learnboost.github.com/cluster/
它提供了基于cpu的'透明'负载均衡,这很好,因为你可以使用现有的快速应用程序,并且它可以相对轻松地跨核心进行扩展。