Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs中的负载平衡_Node.js_Nginx_Load Balancing - Fatal编程技术网

Node.js Nodejs中的负载平衡

Node.js Nodejs中的负载平衡,node.js,nginx,load-balancing,Node.js,Nginx,Load Balancing,我最近开始使用node,我读了很多关于它的单线程限制以及它如何不利用您的内核的内容,然后我读了这篇文章 (其中谈到用于负载平衡的nodejs的新集群模块) 现在我不确定我是否完全同意:)因为在开始使用node之前,我想到的第一件事是如何通过web服务器(比如nginx模块)实现核心的负载平衡 像这样做 upstream domain1 { server http://nodeapp1; server http://nodeapp2; server http://nodeapp

我最近开始使用node,我读了很多关于它的单线程限制以及它如何不利用您的内核的内容,然后我读了这篇文章

(其中谈到用于负载平衡的nodejs的新集群模块)

现在我不确定我是否完全同意:)因为在开始使用node之前,我想到的第一件事是如何通过web服务器(比如nginx模块)实现核心的负载平衡

像这样做

 upstream domain1 {
   server http://nodeapp1;
   server http://nodeapp2;
   server http://nodeapp3;
 }
因此,我的问题是,使用这样的集群模块进行负载平衡是否有优势,以利用核心,与web服务器负载平衡相比,它是否有任何显著的优势 或者是博客文章离实际用途太远了


注意:我不关心诸如passenger之类的各种应用服务器的负载平衡处理(passenger也支持nodejs,但我不想寻找答案:)。我已经知道了,因为我大部分是ruby程序员

据我所知,内置节点集群还不是一个好的解决方案(荷载未均匀分布在堆芯上)。在v0.12之前:


因此,在此之前,您应该使用nginx。之后,我们将看到一些基准测试,比较这两个选项,并查看内置集群模块是否是一个不错的选择。

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

集群就这么简单,您不需要手动实现集群

pm2 start app.js -i max
PM2是自动检测可用CPU数量并运行尽可能多进程的专家

在这里阅读PM2集群模式

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


我确实读到过,即使采用循环调度,它还能带来什么好处,因为我相信nginx上游在发生负载时也会使用循环调度策略(即用于负载平衡),这有一个区别:通过集群,您可以将工作人员的信息发送给父级和副级(例如:计算所有工作人员服务的请求数).但是关于性能,我不知道使用集群或nginx是否有任何优势对不起,这是一个有趣的问题。有用但离题。