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实用示例 缩址还原
Dec 28 NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
对python周期性定时器的示例详解
2019/02/19 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
python开发一款翻译工具
2020/10/10 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
团支书的期末学习总结自我评价
2013/11/01 职场文书
心得体会怎么写
2013/12/30 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
校园安全标语
2014/06/07 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
英文版辞职信
2015/02/28 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python