Nodejs中的负载平衡

时间:2014-07-08 08:29:53

标签: node.js nginx load-balancing

我最近开始使用node并且我已经阅读了很多关于它是单线程的限制以及它如何不利用你的内核然后我读了这个

http://bit.ly/1n2YW68(谈论用于负载均衡的nodejs的新集群模块)

现在我不确定我是否完全赞同它:)因为在开始使用节点之前我想到的第一件事是如何利用具有适当负载平衡的核心来通过web-server,例如{{3} }模块,如nginx

喜欢做这样的事情

 upstream domain1 {
   server http://nodeapp1;
   server http://nodeapp2;
   server http://nodeapp3;
 }

所以我的问题是使用这样的集群模块进行负载平衡以利用核心是否有优势它是否具有优于Web服务器负载平衡的任何显着优势 或博客文章离实际使用太远了。

注意:我并不关心各种应用服务器(如乘客)的负载均衡处理(乘客也有nodejs支持,但我不想回答:))我已经知道了,因为我主要是一个红宝石程序员

2 个答案:

答案 0 :(得分:3)

可用于群集NodeJ应用程序的另一个选项是使用PM2部署应用程序。

群集非常简单,您不需要手动实施群集

pm2 start app.js -i max

PM2是自动检测可用CPU数量并运行尽可能多的进程的专家

在此处阅读有关PM2群集模式的信息 http://pm2.keymetrics.io/docs/usage/cluster-mode/

为了控制IO操作的负载,我使用memoization概念编写了一个名为QueueP的库。您甚至可以自定义memoization逻辑并获得超过10的加速值,有时

https://www.npmjs.com/package/queuep

答案 1 :(得分:0)

据我所知,内置节点集群还不是一个好的解决方案(负载不是均匀分布在核心上)。直到v0.12:http://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing/

所以你应该在那之前使用nginx。之后我们将看到一些基准比较两个选项,看看内置的集群模块是否是一个不错的选择。