nodejs是什么

nodejs是什么

nodejs是js runtime
使用事件驅(qū)動 和 非阻塞I/O 模型

非阻塞I/O

阻塞: I/O時進(jìn)程等待I/O完成時進(jìn)行下一步
非阻塞: I/O時函數(shù)立即返回,進(jìn)程不等待I/O完成 (異步的感覺)

事件驅(qū)動

  • I/O等異步操作結(jié)束后的通知(遇到I/O,不等I/O執(zhí)行完直接執(zhí)行下面程序,等其執(zhí)行完發(fā)射一個事件,對事件找其相應(yīng)的處理程序)
  • 觀察者模式

為什么偏愛nodejs

  • 前端職責(zé)范圍變廣
  • 適合I/O密集,高并發(fā)

cpu密集: 壓縮,解壓,加密,解密
I/O密集: 文件操作,網(wǎng)絡(luò)操作,數(shù)據(jù)庫

web常用場景

  • 靜態(tài)資源讀取
  • 數(shù)據(jù)庫操作
  • 渲染頁面

高并發(fā)應(yīng)對之道

高并發(fā): 單位時間訪問量很大

  • 增加機(jī)器數(shù)
  • 增加每臺機(jī)器的cpu數(shù) - 多核

進(jìn)程

  • 進(jìn)程: 計算中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位
  • 多進(jìn)程: 啟動多個進(jìn)程,多個進(jìn)程可以一塊執(zhí)行多任務(wù)

nodejs工作模型

cpu處理 -> I/O
cpu處理的速度遠(yuǎn)遠(yuǎn)大于I/O的
cpu相當(dāng)于服務(wù)員 I/O相當(dāng)于大廚 一個大廚對應(yīng)一個服務(wù)員
這樣其實(shí)減少服務(wù)員 減少到一個 就是開一個進(jìn)程
這樣沒有占用cpu

線程

線程 :進(jìn)程內(nèi)一個相對獨(dú)立的,可調(diào)度的執(zhí)行單元,與同屬一個進(jìn)程的線程共享進(jìn)程的資源
多線程: 啟動一個進(jìn)程,在一個進(jìn)程內(nèi)啟動多個線程,這樣多個線程也可以一塊執(zhí)行多個任務(wù)

nodejs的單線程

  • 單線程只是針對主進(jìn)程,I/O操作系統(tǒng)底層多線程調(diào)度
  • 單線程不是單進(jìn)程

nodejs常用場景

  • web server
  • 本地代碼構(gòu)建
  • 實(shí)用工具開發(fā)(小爬蟲,但不是最佳的)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 不是一門語言 nodejs 是基于Chrome V8 的JavaScript運(yùn)行環(huán)境nodejs 是事件驅(qū)動、非阻...
    bby365閱讀 622評論 0 0
  • Nodejs是什么 傳統(tǒng)意義上的 JavaScript 運(yùn)行在瀏覽器上,這是因?yàn)闉g覽器內(nèi)核實(shí)際上分為兩個部分:渲染...
    mo_unique閱讀 2,736評論 0 1
  • nodejs是非阻塞異步操作。 特點(diǎn) 1、Chrome V8引擎 2、事件驅(qū)動 3、非阻塞 I/O 4、單線程 如...
    SailingBytes閱讀 7,429評論 0 4
  • 什么是NodeJS Node.js采用模塊化結(jié)構(gòu),按照CommonJS規(guī)范定義和使用模塊。模塊與文件是一一對應(yīng)關(guān)系...
    風(fēng)起云涌Hal閱讀 759評論 0 6
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,822評論 16 22

友情鏈接更多精彩內(nèi)容