最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年04月28日 15:19:00   作者:淺笑·  
這篇文章主要介紹了node.js如何充分利用多核cpu,想了解node.js的同學(xué),可以參考下

概述

Nodejs是基于chrome瀏覽器的V8引擎構(gòu)建的,也就說明它的模型與瀏覽器是類似的。我們的JavaScript會運行在單個進程的單個線程上。

但是V8引擎的單進程單線程并不是完美的結(jié)構(gòu),現(xiàn)如今CPU基本上都是多核的。真正的服務(wù)器往往有好幾個CPU(像我們的線上物理機有12個核),所以,這就將拋出Nodejs實際應(yīng)用中的一個問題:“如何充分利用多核CPU服務(wù)器?”

從嚴格意義上來講,Node其實并不是真正的單線程架構(gòu),因為Node自身還有I/O線程存在(網(wǎng)絡(luò)I/O、磁盤I/O),這些I/O線程是由更底層的libuv處理,這部分線程對于JavaScript開發(fā)者來說是透明的。JavaScript代碼永遠運行在V8上,是單線程的。所以表面上來看NodeJS是單線程的。

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

面對單進程單線程對多核使用率不高的問題,按照之前的經(jīng)驗,每個進程各使用一個CPU即可,以此實現(xiàn)多核CPU的利用。Node提供了child_process模塊,并且也提供了fork()方法來實現(xiàn)進程的復(fù)制(只要是進程復(fù)制,都需要一定的資源和時間。Node復(fù)制進程需要不小于10M的內(nèi)存和不小于30ms的時間)。

這樣的解決方案就是*nix系統(tǒng)上最經(jīng)典的Master-Worker模式,又稱為主從模式。

這種典型并行處理業(yè)務(wù)模式的分布式架構(gòu)具備較好的可伸縮性(可伸縮性實際上是和并行算法以及并行計算機體系結(jié)構(gòu)放在一起討論的。某個算法在某個機器上的可擴放性反映該算法是否能有效利用不斷增加的CPU。)和穩(wěn)定性。

主進程不負責具體的業(yè)務(wù)處理,而是負責調(diào)度和管理工作進程,工作進程負責具體的業(yè)務(wù)處理,所以,工作進程的穩(wěn)定性是開發(fā)人員需要關(guān)注的。

通過fork()復(fù)制的進程都是一個獨立的進程,這個進程中有著獨立而全新的V8實例。雖然Node提供了fork()用來復(fù)制進程使每個CPU內(nèi)核都使用上,但是依然要記住fork()進程代價是很大的。好在Node通過事件驅(qū)動在單個線程上可以處理大并發(fā)的請求。

注意:這里啟動多個進程只是為了充分將CPU資源利用起來,而不是為了解決并發(fā)問題。

Node創(chuàng)建子進程的4種方式

1、spawn()

創(chuàng)建一個子進程來執(zhí)行命令

2、exec()

創(chuàng)建一個子進程來執(zhí)行命令,和spawn()不同的是方法參數(shù)不同,它可以傳入回調(diào)函數(shù)來獲取子進程的狀態(tài)

3、execFile()

啟動一個子進程來執(zhí)行指定文件。注意,該文件的頂部必須聲明SHEBANG符號(#!)用來指定進程類型。

4、fork()

和spawn()類似,不同點在于它創(chuàng)建Node的子進程只需要執(zhí)定要執(zhí)行的JavaScript文件模塊即可。

注意:后面的3種方法都是spawn()的延伸應(yīng)用。

以上就是node.js如何充分利用多核cpu的詳細內(nèi)容,更多關(guān)于node.js充分利用多核cpu的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于node+websocket+html實現(xiàn)騰訊課堂聊天室聊天功能

    基于node+websocket+html實現(xiàn)騰訊課堂聊天室聊天功能

    這篇文章主要介紹了基于node+websocket+html實現(xiàn)騰訊課堂聊天室聊天功能,本文通過截圖實例代碼給大家介紹的非常詳細,對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • nodejs處理tcp連接的核心流程

    nodejs處理tcp連接的核心流程

    這篇文章主要介紹了nodejs處理tcp連接的核心流程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Node 模塊原理與用法詳解

    Node 模塊原理與用法詳解

    這篇文章主要介紹了Node 模塊原理與用法,結(jié)合實例形式詳細分析了node.js模塊基本概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • node.js微信公眾平臺開發(fā)教程

    node.js微信公眾平臺開發(fā)教程

    這篇文章主要為大家分享了node.js微信公眾平臺開發(fā)教程,如何進行微信開發(fā),感興趣的小伙伴們可以參考一下
    2016-03-03
  • 前端包管理器npm、Yarn和pnpm的超全面比較

    前端包管理器npm、Yarn和pnpm的超全面比較

    NPM(Node Package Manager)是Node.js默認的包管理器,這篇文章主要給大家介紹了關(guān)于前端包管理器npm、Yarn和pnpm的超全面比較,文中介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 使用Node.js獲取電腦配置信息的實現(xiàn)方法(CPU型號、內(nèi)存大小、磁盤類型等)

    使用Node.js獲取電腦配置信息的實現(xiàn)方法(CPU型號、內(nèi)存大小、磁盤類型等)

    在日常的開發(fā)工作中,我們有時需要了解電腦的硬件配置,比如CPU型號、內(nèi)存大小、磁盤類型等,這些信息對于性能優(yōu)化、系統(tǒng)配置等場景非常重要,今天,我們就來聊聊如何用Node.js輕松獲取這些信息,感興趣的小伙伴跟著小編一起來看看吧
    2025-04-04
  • Node.js中使用計時器定時執(zhí)行函數(shù)詳解

    Node.js中使用計時器定時執(zhí)行函數(shù)詳解

    這篇文章主要介紹了Node.js中使用計時器定時執(zhí)行函數(shù)詳解,本文使用了Node.js中的setTimeout和setInterval函數(shù),需要的朋友可以參考下
    2014-08-08
  • Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建

    Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建

    本篇文章主要介紹了Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • node跨域請求方法小結(jié)

    node跨域請求方法小結(jié)

    本篇文章主要介紹了node跨域請求方法小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 淺談node模塊與npm包管理工具

    淺談node模塊與npm包管理工具

    這篇文章主要介紹了node模塊與npm包管理工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

仙桃市| 五大连池市| 海林市| 宜都市| 扶沟县| 浮山县| 铁岭县| 大兴区| 夏河县| 平果县| 松桃| 彝良县| 关岭| 黄梅县| 贡觉县| 故城县| 连平县| 万荣县| 东山县| 平武县| 望谟县| 呼玛县| 克什克腾旗| 乌海市| 河南省| 南阳市| 昭平县| 雷山县| 宣威市| 韩城市| 汉阴县| 吉木萨尔县| 丹寨县| 那坡县| 古丈县| 钦州市| 新泰市| 桂林市| 旺苍县| 增城市| 遂平县|