文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

node.js如何充分利用多核cpu

2024-04-02 19:55

关注

概述

Nodejs是基于chrome浏览器的V8引擎构建的,也就说明它的模型与浏览器是类似的。我们的JavaScript会运行在单个进程的单个线程上。

但是V8引擎的单进程单线程并不是完美的结构,现如今CPU基本上都是多核的。真正的服务器往往有好几个CPU(像我们的线上物理机有12个核),所以,这就将抛出Nodejs实际应用中的一个问题:“如何充分利用多核CPU服务器?”

从严格意义上来讲,Node其实并不是真正的单线程架构,因为Node自身还有I/O线程存在(网络I/O、磁盘I/O),这些I/O线程是由更底层的libuv处理,这部分线程对于JavaScript开发者来说是透明的。JavaScript代码永远运行在V8上,是单线程的。所以表面上来看NodeJS是单线程的。

node.js充分利用多核cpu的方法

面对单进程单线程对多核使用率不高的问题,按照之前的经验,每个进程各使用一个CPU即可,以此实现多核CPU的利用。Node提供了child_process模块,并且也提供了fork()方法来实现进程的复制(只要是进程复制,都需要一定的资源和时间。Node复制进程需要不小于10M的内存和不小于30ms的时间)。

这样的解决方案就是*nix系统上最经典的Master-Worker模式,又称为主从模式。

这种典型并行处理业务模式的分布式架构具备较好的可伸缩性(可伸缩性实际上是和并行算法以及并行计算机体系结构放在一起讨论的。某个算法在某个机器上的可扩放性反映该算法是否能有效利用不断增加的CPU。)和稳定性。

主进程不负责具体的业务处理,而是负责调度和管理工作进程,工作进程负责具体的业务处理,所以,工作进程的稳定性是开发人员需要关注的。

通过fork()复制的进程都是一个独立的进程,这个进程中有着独立而全新的V8实例。虽然Node提供了fork()用来复制进程使每个CPU内核都使用上,但是依然要记住fork()进程代价是很大的。好在Node通过事件驱动在单个线程上可以处理大并发的请求。

注意:这里启动多个进程只是为了充分将CPU资源利用起来,而不是为了解决并发问题。

Node创建子进程的4种方式

1、spawn()

创建一个子进程来执行命令

2、exec()

创建一个子进程来执行命令,和spawn()不同的是方法参数不同,它可以传入回调函数来获取子进程的状态

3、execFile()

启动一个子进程来执行指定文件。注意,该文件的顶部必须声明SHEBANG符号(#!)用来指定进程类型。

4、fork()

和spawn()类似,不同点在于它创建Node的子进程只需要执定要执行的JavaScript文件模块即可。

注意:后面的3种方法都是spawn()的延伸应用。

以上就是node.js如何充分利用多核cpu的详细内容,更多关于node.js充分利用多核cpu的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯