位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享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)

  • 房产税如何申报流程
  • 小规模纳税人企业所得税多少
  • 办理出口业务流程
  • 什么情况下可以要求员工待岗
  • 个体商户多少钱需要报税
  • 个体户增值税按开票额来申报吗
  • 培训学校教具记在什么费用
  • 滞纳金按什么比例算
  • 挂靠人员帮外单位人员缴纳社保如何做账
  • 净资产出资属于货币出资吗
  • 增值税进项税额转出是什么意思
  • 居民委员会有没有纳税人识别号吗
  • 可税前扣除的捐赠支出
  • 盈余公积为0说明什么问题
  • 定额手撕发票怎么买
  • 事业单位固定资产管理办法
  • 银行汇票超期退回怎么办
  • 城市地下建设
  • 办公用品收据可以入账吗
  • 进项负数发票怎么做账报税
  • 制造费用可以抵扣进项税吗
  • 资本的不同形态
  • 会计分录的正确书写格式图片
  • 以前年度的费用可以入在当年吗?
  • win10右键新建卡死
  • 苹果手机系统升级后电量消耗快
  • 企业重组并购条件
  • 职称评审费计入什么科目
  • php多任务
  • php email
  • 捐资民办学校可以盈利吗
  • 金税三期个税扣缴客户端
  • 车间使用的辅助材料
  • php 字符串处理函数
  • CNN卷积神经网络/手写数字识别[VHDL][MATLAB]带源码
  • laravel运行
  • 残障金什么时候开始交
  • gunzip命令压缩
  • 行政事业单位其他应收款核销分录
  • 支付版权费用账号是什么
  • 代开增值税发票需要预交所得税吗
  • 上年所得税费用借方有余额,怎么调整
  • 研发增值税税率怎么算
  • 电子承兑汇票的最长期限
  • 技术服务费怎么收合理
  • 公司清理固定资产怎样交税
  • 研发支出资本化计入什么科目
  • 合作建房项目
  • 一般纳税人购买原材料会计分录
  • 电子设备折旧残值率
  • 厂商租赁公司
  • 贸易中的发票抵押和发票融资
  • 公账发工资如何记账
  • 减免税款月末是否结平
  • 应付未付款项
  • 物业管理企业应当与居委会共同做好什么工作
  • 会计凭证中阿拉伯数字如何书写
  • windows server特点
  • win7硬盘问题导致windows无法启动
  • win7咋样
  • solaris route add
  • xmpdisabled什么意思
  • win8怎么关闭实时保护
  • win8系统怎么重新安装系统
  • windows打开
  • 一文看懂linux内核
  • win7修改用户密码命令
  • 图片加载完成再加载
  • javascript基础编程
  • android内核剖析代码
  • Node.js中的事件循环是什么
  • android新手入门
  • pygame如何加载图片
  • linux重启关闭打开达梦数据库
  • python如何发送http请求
  • javascript中的匿名函数
  • python excel库哪个好
  • 河南车船税收费标准图片
  • 四川税务干部学校官网
  • 3.0t交强险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号