位置: 编程技术 - 正文

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)

  • 出口退税超期未缴税
  • 分配股东利润分录
  • 企业所得税人数包括劳务派遣吗
  • 停车费增值税税率
  • 社保阶段性减免延长到年底
  • 盈余公积在现金流量表中哪里体现
  • 母公司捐赠资金给子公司
  • 代扣代缴个税对企业所得税的影响
  • 设备配件定义
  • 自然人独资企业是什么意思
  • 劳务派遣怎么做起来
  • 盈余公积补亏什么科目
  • 承租人转租是否要交税
  • 预付设备款如何缴纳印花税
  • 所得税季报中的利润总额包括哪些
  • 当月增次月是什么意思
  • 旅行社的税
  • 售后回购的实质
  • 外汇扣税是多少钱啊
  • 分包给总包开什么发票
  • 隔月的发票能作废吗
  • 广播影视服务需要交文化事业建设费吗
  • html5 video标签
  • 安全的无线连接软件
  • 何为小规模
  • 公司购买理财产品账务处理
  • linux系统的文件与目录操作
  • 百内国家公园塔状尖峰
  • window10安装教程u盘
  • 商票贴现 银票贴现
  • 哪些货物出口不需要运输条件
  • php gtk
  • 基于Laravel5.4实现多字段登录功能方法示例
  • 国税代开普票能作废吗
  • php处理数据
  • 如何购买增值税发票需要什么资料
  • 调入的无形资产记入哪里
  • vue实例完整项目源码
  • HttpServletRequest 获取参数
  • pytorch .pt
  • 面试官问:mysql 的自增 id 用完了,怎么办?
  • 带息应收票据账务处理分录
  • 原材料被盗如何报案
  • 财务章有几种样式
  • 如果没有抄税就申报了
  • 收据入帐
  • 社保缴费是当月扣当月的吗
  • 个人所得税应补退税额怎么查
  • 一般纳税企业增值税的核算应当使用
  • 材料报废属于正常损失吗
  • c#获取局域网ip
  • 处置使用过的固定资产,税率按多少
  • 无形资产加计扣除怎么算举例
  • 基建罚款支出计算方法
  • 核算费用
  • 城乡居民死亡后需要办理什么手续
  • 哪些企业可以减免企业所得税
  • 小规模纳税人能抵扣进项税额吗
  • 减免税款月末是否结平
  • 现金日记账怎么填写规范
  • 会计科目的设置应该符合国家统一会计准则的规定
  • bios如何关闭网卡
  • 在ubuntu上安装gcc
  • 一个mac多重
  • mac识别文字软件
  • linux邮件设置方法
  • git 进阶
  • win10系统怎么拦截广告弹窗
  • win10系统笔记本怎么连接wifi
  • win8怎么添加wifi
  • win8点设置没反应
  • 清除文件内容 linux
  • jQuery+AJAX实现遮罩层登录验证界面(附源码)
  • UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
  • android系统分区理解及分区目录细解
  • 上海市税务官方网站网址
  • 千元版的发票
  • 沈阳市地方税务局
  • 关于返回
  • 国税局发票查询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设