博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用NodeJS实现集群计算
阅读量:5214 次
发布时间:2019-06-14

本文共 1813 字,大约阅读时间需要 6 分钟。

Node的单个实例运行在单个的线程中,要充分利用多核系统,我们可以运行Node进程集群来处理负载。
也就是说,如果系统有8核,单个Node实例只能使用其中1核,可以利用cluster包的workers概念来充分利用所有的核。有趣的是,它们可以共享同一个端口。

该模块还处于实验阶段。

var cluster = require('cluster');var http = require('http');var numCPUs = require('os').cpus().length; if (cluster.isMaster) {  // Fork workers.  require('os').cpus().forEach(function(){    cluster.fork();  });  // In case the worker dies!  cluster.on('exit', function(worker, code, signal) {    console.log('worker ' + worker.process.pid + ' died');  });  // As workers come up.  cluster.on('listening', function(worker, address) {    console.log("A worker with #"+worker.id+" is now connected to " +\     address.address +\    ":" + address.port);  });  // When the master gets a msg from the worker increment the request count.  var reqCount = 0;  Object.keys(cluster.workers).forEach(function(id) {    cluster.workers[id].on('message',function(msg){      if(msg.info && msg.info == 'ReqServMaster'){        reqCount += 1;      }    });  });  // Track the number of request served.  setInterval(function() {    console.log("Number of request served = ",reqCount);  }, 1000); } else {  // Workers can share the same port!  require('http').Server(function(req, res) {    res.writeHead(200);    res.end("Hello from Cluster!");    // Notify the master about the request.    process.send({ info : 'ReqServMaster' });  }).listen(8000);}
在一个4核的计算机上,输出如下:

Number of request served =  0A worker with #2 is now connected to 0.0.0.0:8000A worker with #4 is now connected to 0.0.0.0:8000A worker with #1 is now connected to 0.0.0.0:8000A worker with #3 is now connected to 0.0.0.0:8000Number of request served =  0...Number of request served =  2..Number of request served =  4...Number of request served =  6

转载于:https://www.cnblogs.com/yangjin-55/archive/2012/10/10/2786675.html

你可能感兴趣的文章
微信小程序--每个独立的page的page.json只能修改window属性
查看>>
回顾装饰模式
查看>>
Sring容器技术内幕之InstantiationStrategy类介绍
查看>>
如何用js获取浏览器URL中查询字符串的参数
查看>>
sharepoint2010修改域密码
查看>>
JavaScript 对象,数组等传参
查看>>
Equivalent Sets HDU - 3836 2011多校I tarjan强连通分量
查看>>
不一样的交互组件
查看>>
php 的路由简介 (一个简单的路由模式)
查看>>
算法学习之希尔排序的简洁实现
查看>>
Asp.net中文件的压缩与解压
查看>>
App Framework $.ui.loadContent 参数解释
查看>>
802.11整体框架
查看>>
win8 iis安装及网站发布
查看>>
winform 客户端应用程序(c/s b/s)
查看>>
Java-java中无符号类型的处理
查看>>
[转]推荐系统的循序进阶读物
查看>>
Web服务器的工作原理
查看>>
什么时候用引用,什么时候用指针的一个小例子
查看>>
ggplot2 subscript in x-axis labels(ticks, legend)
查看>>