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

2022-04-15 0 943
目录
  • 概述
  • node.js充分利用多核cpu的方法
  • Node创建子进程的4种方式

概述

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。)和稳定性。

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

node.js如何充分利用多核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的资料请关注NICE源码其它相关文章!

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 JavaScript node.js如何充分利用多核cpu https://www.niceym.com/34100.html