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 Express框架中处理404页面一个方式
May 28 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 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+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
javascript 面向对象 function类
2010/05/13 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
Linux机考试题
2015/10/16 面试题
不假外出检讨书
2014/01/27 职场文书
高校教师岗位职责
2014/03/18 职场文书
房屋出租委托书格式
2014/09/23 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
利用Python实现模拟登录知乎
2022/05/25 Python