NodeJS父进程与子进程资源共享原理与实现方法


Posted in NodeJs onMarch 16, 2018

本文实例讲述了NodeJS父进程与子进程资源共享原理与实现方法。分享给大家供大家参考,具体如下:

实验目标:实现父进程与子进程间资源共享

使用模块:cluster

简介:建立node集群,实现多进程,利用child_process来实现IPC,解决多核利用率,提高性能。

原理:

1 Master-worker主从模式的多进程架构

2 fork()复制进程,充分利用cpu资源(根据内核数决定)

3 每个进程都有自己的区域,如果在各自区域内执行操作,资源并未共享。通过监听message事件和send实现消息传递,达到资源共享的效果

4  globalDataError为错误的资源共享方式, globalDataSuccess为正确的资源共享方式。

实现代码:

var cluster = require('cluster');
var cpus = require('os').cpus();
// 传递的事件名
var triggerEvent = {
    inc: 'inc',
    dec: 'dec'
}
// 错误的数据共享方式
var globalDataError = 0;
if (cluster.isMaster) {
  // 正确的数据共享方式
  var globalDataSuccess = 0;
  globalDataError++;
  // 启动多个进程,取决于内核数
  for (var i = 0; i < cpus.length; i++) {
    var worker = cluster.fork();
    worker.on('message', function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
      }
    });
  }
  console.log('Master globalDataError = ', globalDataError);
} else {
  globalDataError++;
  console.log('Worker globalDataError = ', globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 #NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 #NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 #NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 #NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 #NodeJs
nodejs acl的用户权限管理详解
Mar 14 #NodeJs
You might like
Terran魔法科技
2020/03/14 星际争霸
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Django操作session 的方法
2020/03/09 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
一套C++笔试题面试题
2012/06/06 面试题
国庆节文艺活动方案
2014/02/03 职场文书
股权转让意向书
2014/04/01 职场文书
和解协议书
2014/04/16 职场文书
化学专业自荐信
2014/05/28 职场文书
干部对照检查材料范文
2014/08/26 职场文书
家长学校教学计划
2015/01/19 职场文书
小浪底导游词
2015/02/12 职场文书
地道战观后感500字
2015/06/04 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
工作简历的自我评价
2019/05/16 职场文书
基于Python实现股票收益率分析
2022/04/02 Python