多核系统上的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时,这将提供外部级别的负载平衡
在这些机器中
尽管如此(对于最后两个问题),网络上仍然有很多讨论和争论