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中的非阻塞方法介绍
Jun 05 NodeJs
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
使用nodejs开发cli项目实例
Jun 03 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 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
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
python 写一个文件分发小程序
2020/12/05 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
介绍一下gcc特性
2015/10/31 面试题
专业销售业务员求职信
2013/11/18 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
房屋转让协议书范本
2014/04/11 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
法学专业求职信范文
2015/03/19 职场文书
裁员通知
2015/04/25 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
Java完整实现记事本代码
2022/06/16 Java/Android