Node学习记录之cluster模块


Posted in Javascript onMay 31, 2017

在如今机器的CPU都是多核的背景下,Node的单线程设计已经没法更充分的"压榨"机器性能了。所以从v0.8开始,Node新增了一个内置模块——“cluster”,故名思议,它可以通过一个父进程管理一坨子进程的方式来实现集群的功能。

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length; // 获取CPU的个数
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
 
  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}

通过isMaster属性,判断是否Master进程,是则fork子进程,否则启动一个server。每个HTTP server都能监听到同一个端口。但是在实际项目中,我们的启动代码一般都已经封装在了app.js中,要把整块启动逻辑嵌在上面的if else中实在不优雅。 所以,我们可以这样:

var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  // 其它代码
  
} else {
  require("./app.js");
}

简单之处就在于原本的应用逻辑根本不需要知道自己是在集群还是单边。(当然,如果应用在内存中维护了某些状态,比如session,就需要运用某些机制来共享了,这里不详说)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
document.forms用法示例介绍
Jun 26 Javascript
jquery动态切换背景图片的简单实现方法
May 14 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
node中koa中间件机制详解
Aug 22 Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
JS简单表单验证功能完整示例
Jan 26 Javascript
VSCode插件安装完成后的配置(常用配置)
Aug 24 Javascript
Express框架之connect-flash详解
May 31 #Javascript
node.js中express-session配置项详解
May 31 #Javascript
详解angularjs中如何实现控制器和指令之间交互
May 31 #Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 #Javascript
JS简单实现自定义右键菜单实例
May 31 #Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 #Javascript
基于react框架使用的一些细节要点的思考
May 31 #Javascript
You might like
PHP超级全局变量数组小结
2012/10/04 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
brook javascript框架介绍
2011/10/10 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
js实现放大镜特效
2017/05/18 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
英国女士家居服网站:hush
2017/08/09 全球购物
公司新员工的演讲稿注意事项
2014/01/01 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
临床医师个人自我评价
2014/04/06 职场文书
销售团队获奖感言
2014/08/14 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
2014年领班工作总结
2014/11/25 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
五一劳动节活动总结
2015/02/09 职场文书
护士个人总结范文
2015/02/13 职场文书
逃课检讨书范文
2015/05/06 职场文书
九九重阳节致辞
2015/07/31 职场文书