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 相关文章推荐
nodejs文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
js对象的比较
2011/02/26 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
趣味游戏活动方案
2014/02/07 职场文书
IT工程师岗位职责
2014/07/04 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
库房管理员岗位职责
2015/02/12 职场文书
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python