Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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集群_Node.js - Fatal编程技术网

多核系统上的Node.js集群

多核系统上的Node.js集群,node.js,Node.js,目前,我正在我的节点.js应用程序上使用集群模块,以防止应用程序在未处理的Exception上崩溃和退出。然而,我发现了这段据称利用多核系统的代码 const cluster = require('cluster'); const http = require('http'); if (cluster.isMaster) { for (var i = 0; i < require('os').cpus().length; i++) { cluster.fork()

目前,我正在我的
节点.js
应用程序上使用集群模块,以防止应用程序在
未处理的Exception上崩溃和退出。然而,我发现了这段据称利用多核系统的代码

const cluster = require('cluster');
const http = require('http');

if (cluster.isMaster) {
    for (var i = 0; i < require('os').cpus().length; i++) {
        cluster.fork();
    }
    cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
    });
} else {
    http.createServer((req, res) => {
        res.writeHead(200);
        res.end('hello world\n');
    }).listen(3008);
}
const cluster=require('cluster');
const http=require('http');
if(cluster.isMaster){
对于(var i=0;i{
log(`worker${worker.process.pid}`);
});
}否则{
http.createServer((req,res)=>{
书面记录(200);
res.end('hello world\n');
}).听(3008);
}
问题:
  • 这有什么好处吗
  • 它处理负载平衡吗
  • 如果它进行了一些负载平衡,那么它与通过
    NGINX
    进行的负载平衡相比如何
  • 有什么反对的理由吗


注意:我试图查找这项技术以避免问一个多余的问题,但老实说,我不知道该搜索什么,因为我不知道这项技术叫什么。首先,我建议您在退出时启动新的流程

cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
    console.log('Starting new process.....Since a worker died')
    cluster.fork();//new process.
});
所以集群允许所有进程共享同一端口

  • 是的,它有好处,因为它利用了计算机上所有可用的内核 机器
  • 是的,它在集群中以循环方式进行负载平衡 过程
  • Nginx允许您在多个服务器之间实现平衡。(在 不同的机器或端口)
  • 见下文
  • 例如,假设您有4台机器,每台机器有4台 您可以在集群中的这4台机器上运行4台服务器 模式。这将在多个模式之间提供内部级别的负载平衡 使用nginx时,这将提供外部级别的负载平衡 在这些机器中


    尽管如此(对于最后两个问题),网络上仍然有很多讨论和争论

    首先,我建议您在退出时启动新流程

    cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
        console.log('Starting new process.....Since a worker died')
        cluster.fork();//new process.
    });
    
    所以集群允许所有进程共享同一端口

  • 是的,它有好处,因为它利用了计算机上所有可用的内核 机器
  • 是的,它在集群中以循环方式进行负载平衡 过程
  • Nginx允许您在多个服务器之间实现平衡。(在 不同的机器或端口)
  • 见下文
  • 例如,假设您有4台机器,每台机器有4台 您可以在集群中的这4台机器上运行4台服务器 模式。这将在多个模式之间提供内部级别的负载平衡 使用nginx时,这将提供外部级别的负载平衡 在这些机器中

    尽管如此(对于最后两个问题),网络上仍然有很多讨论和争论