nodejs

时间:2017-12-27 07:40:24

标签: javascript node.js

当我正在讨论集群的主题时,仍然对集群的最佳用例感到困惑。 任何人都可以帮助和使用相同的用例。

2 个答案:

答案 0 :(得分:0)

NodeJS进程在单个进程上运行,这意味着默认情况下它不会从多核系统中获益。如果您有一个8核CPU并通过$ node app.js运行NodeJS程序,它将在一个进程中运行,浪费其余的CPU。

NodeJS提供的集群模块包含一组函数和属性,可帮助我们创建使用所有CPU的程序。

答案 1 :(得分:0)

群集可以被视为在节点本身内置的负载平衡,可以利用系统中的多CPU。

如果您不使用群集,那么节点'将使用单CPU,并将产生一些性能影响。

当您将节点作为中间件(Express Server)运行以提供API请求时,您将看到群集的优势,其中请求可以由在不同CPU上工作的不同群集提供服务。 ,导致更好的表现。

侧注:使用群集,您还可以确保您的节点服务器永远不会被任何未捕获的异常杀死(尽管应该已经处理了这个条件),即,如果其中一个群集得到了已杀死,您可以处理该条件并创建新的群集节点,并确保您的服务器始终正常运行。

let numWorkers = require('os').cpus().length;
for (let i = 0; i < numWorkers; i++) {
        cluster.fork();
    }

// if one of the worker died, create new one immediately
cluster.on('exit', function (worker, code, signal) {
        console.log('Worker ' + worker.process.pid + ' died with code: ' + code + ', and signal: ' + signal);
        console.log('Starting a new worker');
        cluster.fork();
    });

cluster.on('online', function (worker) {
    console.log('Worker ' + worker.process.pid + ' is online');
});