位置: 编程技术 - 正文

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)

  • 如何办理车辆购置置换补贴手续
  • 初级职称经济法基础重点
  • 销售费用福利费编码
  • 个体工商户是对公账户还是个人账户
  • 未达起征点是什么
  • 所得税纳税申报表在哪里打印
  • 企业减免的所得税税率
  • 装修费是否计入固定资产
  • 作为福利手段福利概念的三个条件是
  • 社保补贴收入要交税吗?
  • 销售预付卡的成本是什么
  • 工会经费购买发的东西要算个税吗?
  • 烟酒销售公司要交哪些税
  • 地下建筑如何防潮
  • 企业净资产指的是什么?
  • 增值税进项大于销项月末需要结转吗
  • 补提上个月折旧会计分录
  • 所得税费用可以抵减利润吗
  • 个体户的公账怎么操作
  • 公司支付给个人的货款怎么入账
  • 调整固定资产原值减少
  • 出纳人员发现假章怎么办
  • 员工个税需要计提吗现在
  • win10任务栏不显示最近
  • 基准收益率是
  • 华为鸿蒙harmonyos刷机
  • windows怎么复制
  • 押金未退会计分录
  • 银行对公账户收款码手续费多少
  • 计提个体户经营所得税
  • PHP:pg_close()的用法_PostgreSQL函数
  • 社保挂靠会计处理?
  • 进程mmc.exe
  • PHP:pcntl_wtermsig()的用法_PCNTL函数
  • 处置动产减按2%税率是什么意思
  • 企业中秋晚会主持词
  • 原材料明细账有记税吗
  • 前端uniapp写表格
  • uniapp使用px还是rpx
  • 自然公园在哪
  • 莱辛巴赫瀑布在瑞士哪里
  • cookies方法
  • 差额征税七种业务是什么
  • vue实现路由跳转传参
  • 狗能看懂的电视
  • 出口退税的一般程序
  • 售后租回交易形成融资租赁,销售时不确认处置损益
  • 工程补偿款开什么发票
  • 专用发票货物名称怎么填
  • java线程的执行体
  • 水运企业会计核算办法
  • 增值税主表和附表
  • 增值税发票认证勾选平台
  • 税种认定怎么操作
  • 创投收入
  • 报销费用余额退回
  • 以产品偿还债务怎么算
  • 暂估金额为含税金额
  • 收据为什么不能写今收到
  • 辅导期一般纳税人标准
  • 有限合伙企业应纳税所得额的计算
  • 资产评估费怎么收
  • 房地产开发企业开发成本包括哪些项目
  • mysql获取日期年份
  • win7 64位系统中使用音乐播放器播放音乐很卡该怎么办?
  • win7系统修改
  • linux怎么安装c语言编程软件
  • 最简单最快乐
  • linux磁盘格式化后一定会清空数据吗
  • 浅谈linux的发展方向和应用范围
  • win8计算机配置在哪
  • linux入门学习
  • three.js dispose
  • 粒子form
  • python爬取app数据违法吗
  • linux shell脚本命令
  • javascript获取当前文件夹文件数量
  • jqueryfor循环
  • 出口退税是哪个环节交的
  • 电子税务网上申报平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设