Node.js 後臺工作原理 - 簡要分析


Node.js 僅使用一個 JavaScript 執行執行緒。

問題是 - Node.js 如何處理多個 http 或其他請求,以及可能存在關於效能和安全性的問題?

  • Node.js 在應用程式啟動時啟動事件迴圈,並使用它來處理回撥函式。Node.js 維護一個工作池。長時間執行的操作被轉移到此工作池,事件池僅在任務完成後處理來自此工作池的響應。

  • 工作池與作業系統協作,完成繁重的工作並管理任務排程。

  • 工作池完成任務後,使用回撥函式響應事件迴圈。

  • 事件迴圈維護適當事件的執行順序。

事件迴圈 -

  • 它首先檢查任何計時器事件,例如 setTimeout 或 setInterval。

  • 其次,它檢查掛起的回撥函式,例如待執行的與 I/O 相關的回撥函式。

  • 下一步是輪詢;Node 將嘗試查詢新的 I/O 以執行其回撥函式。

  • 檢查階段,在此階段 Node 將立即執行回撥函式。它使用 setImmediate 呼叫

  • 關閉回撥 - 最後,Node 將執行已註冊的關閉回撥函式。

  • 如果沒有剩餘的已註冊事件待執行,則 Node 才會執行 process.exit 。

  • Node 維護一個 ref 變數來儲存事件計數器,每次有新事件時,計數器都會遞增。

  • 在伺服器環境中,我們使用 createServer 建立伺服器,該伺服器沒有關閉事件,因此除非手動停止程序,否則 Node.js 不會自動關閉它。

  • 預設情況下,Node 為每個 http 請求維護作用域,以避免它與其他請求混合。

  • 如果定義了全域性物件,則任何請求都可以訪問它,這需要開發人員注意。

更新於: 2020年5月13日

296 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.