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教程之制作一个简单的文章发布系统
Nov 21 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 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格式化MYSQL返回float类型的方法
2016/03/30 PHP
form自动提交实例讲解
2017/07/10 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
高考考python编程是真的吗
2020/07/20 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
七年级地理教学反思
2014/01/26 职场文书
校园文化建设方案
2014/02/03 职场文书
软件项目开发计划书
2014/05/01 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
辩护词格式
2015/05/22 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js