我最近开始使用node,我已经阅读了很多关于它是单线程的限制以及它如何不利用你的内核然后我读了这个
qazxsw poi(谈论用于负载平衡的节点js的新集群模块)
现在我不确定我是否完全赞同它:)因为在开始使用节点之前我想到的第一件事就是如何利用具有适当负载平衡的内核来通过web-server,就像nginx这样的http://bit.ly/1n2YW68模块
喜欢做这样的事情
upstream
所以我的问题是使用这样的集群模块进行负载平衡以利用核心有一个优势它是否具有优于Web服务器负载平衡的任何显着优势,或者是博客文章与实际使用相距甚远。
注意:我不关心各种应用服务器(如乘客)的负载均衡处理(乘客也有nodejs支持,但我不想回答:))我已经知道因为我主要是红宝石程序员
可用于群集NodeJ应用程序的另一个选项是使用PM2部署应用程序。
集群很容易,因此,您不需要手动实现集群
upstream domain1 {
server http://nodeapp1;
server http://nodeapp2;
server http://nodeapp3;
}
PM2是自动检测可用CPU数量并运行尽可能多的进程的专家
在这里阅读有关PM2集群模式的pm2 start app.js -i max
为了控制IO操作的负载,我使用memoization概念编写了一个名为QueueP的库。您甚至可以自定义记忆逻辑并获得超过10的加速值
据我所知,内置节点集群还不是一个好的解决方案(负载不是均匀分布在核心上)。直到v0.12:https://www.npmjs.com/package/queuep
所以你应该在那之前使用nginx。之后我们将看到一些基准比较两个选项,看看内置的集群模块是否是一个不错的选择。