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 請求維護作用域,以避免它與其他請求混合。
如果定義了全域性物件,則任何請求都可以訪問它,這需要開發人員注意。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP