问题描述
|
在node.js上运行Web服务器是一件简单的事情(从其出色的示例和文档中可以看出),但是我想知道如何充分利用专用服务器的cpu资源?
由于node.js是单线程的,因此利用多个处理器的唯一方法是通过多个进程。当然,只有一个进程可以绑定到端口,因此似乎必须有一个主/工作模式,其中主控器派生子代,绑定到传入的端口,并将传入的连接(以及实际的处理工作)委托给子代。 。 (也许是通过饥饿的消费者模式吗?)
这是扩展运行node.js的Web服务器的最佳方法吗?如果是这样,是否有一些库可以简化主/工人模式?如果不是,建议使用哪种模式或部署设置来最佳利用专用计算机的全部资源?
(对于ServerFault,这是一个更好的问题吗?)
解决方法
多节点是提供主/工人模式的库。
如果服务器进程不需要能够相互通信,并且您没有使用Socket.IO,则一个简单的选择是仅启动一个进程/核心,绑定到本地端口,然后使用某些东西。例如nginx或HAProxy,以在它们之间进行负载平衡。
, 如果您使用的是Express,我将使用tj的集群:http://learnboost.github.com/cluster/
它提供了基于“透明” cpu的负载平衡,这很不错,因为您可以使用现有的express应用程序,并且可以相对轻松地跨内核扩展它。