位置: 编程技术 - 正文

node 利用进程通信实现Cluster共享内存(node 线程 进程)

编辑:rootadmin

推荐整理分享node 利用进程通信实现Cluster共享内存(node 线程 进程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node子进程,node子进程,node 线程 进程,node多进程,node获取某个进程pid,node进程通信,node 进程管理,node子进程,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.js的标准API没有提供进程共享内存,然而通过IPC接口的send方法和对message事件的监听,就可以实现一个多进程之间的协同机制,通过通信来操作共享内存。

##IPC的基本用法:

在Node.js中,通过send和on(‘message', callback)实现的IPC通信有几个特点。首先,master和worker之间可以互相通信,而各个worker之间不能直接通信,但是worker之间可以通过master转发实现间接通信。另外,通过send方法传递的数据,会先被JSON.stringify处理后再传递,接收后会再用JSON.parse解析。所以Buffer对象传递后会变成数组,而function则无法直接传递。反过来说,就是可以直接传递除了buffer和function之外的所有数据类型(已经很强大了,而且buffer和function也可以用变通的方法实现传递)。

基于以上特点,我们可以设计一个通过IPC来共享内存的方案:

1、worker进程作为共享内存的使用者,并不直接操作共享内存,而是通过send方法通知master进程进行写入(set)或者读取(get)操作。

2、master进程初始化一个Object对象作为共享内存,并根据worker发来的message,对Object的键值进行读写。

3、由于要使用跨进程通信,所以worker发起的set和get都是异步操作,master根据请求进行实际读写操作,然后将结果返回给worker(即把结果数据send给worker)。

node 利用进程通信实现Cluster共享内存(node 线程 进程)

##数据格式

为了实现进程间异步的读写功能,需要对通信数据的格式做一点规范。

首先是worker的请求数据:

master在接到数据后,会根据method执行相应操作,然后根据requestMessage.id将结果数据发给对应的worker,数据格式如下:

规范数据格式的意义在于,master在接收到请求后,能够将处理结果发送给对应的worker,而worker在接到回传的结果后,能够调用此次通信对应的callback,从而实现协同。

规范数据格式后,接下来要做的就是设计两套代码,分别用于master进程和worker进程,监听通信并处理通信数据,实现共享内存的功能。

##User类

User类的实例在worker进程中工作,负责发送操作共享内存的请求,并监听master的回信。

##Manager类

Manager类的实例在master进程中工作,用于初始化一个Object作为共享内存,并根据User实例的请求,在共享内存中增加键值对,或者读取键值,然后将结果发送回去。

##使用方法

标签: node 线程 进程

本文链接地址:https://www.jiuchutong.com/biancheng/368541.html 转载请保留说明!

上一篇:基于Datatables跳转到指定页的简单实例(datatable.load)

下一篇:Express系列之multer上传的使用(express model)

  • 税务局开票需要交钱吗
  • 代扣代缴个人所得税会计分录怎么做
  • 城建税是什么税率
  • 适用增值税零税率的有
  • 哪些单位须执行国家政策
  • 递延所得税资产和递延所得税负债
  • 购买水果属于什么费用
  • 股权转让与增资扩股的税务
  • 增值税出口退税政策
  • 挂失的存单还有记录吗
  • 固定资产暂估折旧能税前扣除吗
  • 修理费的定额发票还可以报销吗?
  • 购买货物待销售会计分录
  • 补贴收入需要缴纳增值税吗为什么
  • 超豪华小汽车消费税起征点
  • 小规模纳税人补缴增值税
  • 速达财务软件使用说明
  • 建筑工程发票抵扣有时间限制吗
  • 怎么确认权益性投资收益收入?
  • 总额法和净额法哪个合理
  • 小规模纳税人减按1%如何填报申报表
  • 电子税务局印花税税种认定
  • 专用发票验旧后还领不到发票
  • 母公司对子公司的控股比例
  • 出纳电汇流程
  • excel中如何选择只能选择的项
  • i7笔记本cpu性能天梯图
  • 声卡无声音怎么回事
  • 关于商品退换
  • 什么叫交付使用
  • 购入固定资产的借款利息支出
  • 接受捐赠的固定资产可以入账依据是哪些?
  • 营改增会计分录
  • php rewind
  • 个人通讯费可以税前扣除吗
  • 建筑企业项目部开户
  • 偏食和挑食会有什么不良后果?
  • 竣工结算与竣工决算的主要区别是什么
  • 自查补缴增值税如何申报
  • 赤狐 (© Yossi Eshbol/Minden Pictures)
  • 残疾人保障金工资总额包括年终奖吗
  • 企业生产车间发生的费用会计科目
  • 城建税退回与不退税区别
  • 子公司借钱给母公司使用
  • 企业销售旧车增值税处理
  • 装修公司开的劳务发票
  • python字典遍历key
  • 分页 php
  • 自产自用车辆购置税组成计税价格
  • 企业自产自用产品要确认收入吗
  • 企业会计准则和企业会计制度的区别
  • 个税跨月更正申报怎么做
  • 行政事业单位工作时间
  • 月末无收入如何申请补贴
  • 坏账准备贷方余额期末如何处理
  • 预收账款怎么用
  • 强化劳务输出
  • 开具的发票是否为印花税的应税凭证?
  • 进项税额转出的分录怎么做
  • 分公司开票总公司付款可以吗
  • 接受投资者投入的资产
  • 预收账款账务处理分录
  • 单位给员工购买公积金流程
  • 施工企业内部管理制度
  • sql server内存怎么设置合理
  • windows server 2008 r2激活密钥
  • mac怎么传输文件夹
  • 安装windows7所需的条件
  • 电脑网页字体设置
  • ubuntu虚拟机apt安装tools
  • 卸载软件后整个盘都清空了
  • win7电脑dpi怎么设置800
  • xshell如何使用
  • 运维是什么的
  • nodejs的require
  • shell命令行参数个数
  • python 嵌套
  • jquery网页
  • python操作access数据库
  • python之父推荐的书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设