站長資訊網
        最全最豐富的資訊網站

        node的異步機制是基于什么

        node的異步機制是基于“事件”的,所有的I/O、網絡通信、數據庫查詢都以非阻塞的方式執行,返回結果由事件循環來處理。Node在同一時刻只會處理一個事件,完成后立即進入事件循環檢查后面事件。這樣CPU和內存在同一時間集中處理一件事,同時盡量讓耗時的I/O等操作并行執行。

        node的異步機制是基于什么

        本教程操作環境:windows7系統、nodejs16版,DELL G3電腦。

        NodeJS是單線程,單線程有以下好處:

        • 簡單

        • 高性能,避免了頻繁的線程切換開銷

        • 占用資源小,因為是單線程,在大負荷情況下,對內存占用仍然很低

        • 線程安全,沒有加鎖、解鎖、死鎖這些問題

        如何解決高并發?

        node使用異步IO和事件驅動(回調函數)來解決高并發這個問題。

        一般來說,高并發解決方案會提供多線程模型,為每個業務邏輯提供一個線程,通過系統線程切換來來彌補同步I/O調用的時間開銷。像apache,是一個請求一個線程。

        而NodeJS使用的是單線程模型,對所有I/O都采用異步的請求方式,避免頻繁的上下文切換,在NodeJS執行的時候維護著一個事件隊列;程序在執行時進入事件循環等待下一個事件到來,每個異步I/O請求完成后都會被推送到事件隊列中的等待執行。

        NodeJS的異步機制是基于事件的,所有的I/O、網絡通信、數據庫查詢都以非阻塞的方式執行,返回結果由事件循環來處理。如圖:

        node的異步機制是基于什么

        Node.js 進程在同一時刻只會處理一個事件,完成后立即進入事件循環檢查后面事件。這樣做的好處是,CPU和內存在同一時間集中處理一件事,同時盡量讓耗時的I/O等操作并行執行。對于低速連接攻擊,Node.js只是在事件隊列中增加請求,等待操作系統的回應,因而不會有任何多線程開銷,很大程度上可以提高 Web 應用的健壯性,防止惡意攻擊。

        事件循環機制

        所謂事件循環是指NodeJS會把所有的異步操作使用事件機制解決,有個線程在不斷地循環檢測事件隊列。

        NodeJS中所有的邏輯都是事件的回調函數,所以NodeJS始終在事件循環中,程序入口就是事件循環第一個事件的回調函數。事件的回調函數中可能會發出I/O請求或直接發射( emit)事件,執行完畢后返回事件循環。事件循環會檢查事件隊列中有沒有未處理的事件,直到程序結束。NodeJS的事件循環對開發者不可見,由libev庫實現,libev不斷檢查是否有活動的、可供檢測的事件監聽器,直到檢查不到時才退出事件循環,程序結束。

        node的異步機制是基于什么

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品无码免费一区二区三区 | 最新亚洲精品国自产在线观看| 无码人妻丰满熟妇精品区| 黑人巨大精品欧美一区二区| 国产精品免费久久久久电影网| 一区二区三区四区精品视频| 精品在线免费观看| 无码国产精品一区二区免费式芒果| 亚洲精品欧美精品日韩精品 | 国产精品美脚玉足脚交欧美| 三上悠亚久久精品| 精品国产第一国产综合精品| 久久精品国产69国产精品亚洲| 青青青国产精品国产精品久久久久 | 国语自产精品视频在线观看| 久久精品国产精品亚洲| 亚洲欧洲国产精品香蕉网| 孩交VIDEOS精品乱子| 久久这里只精品国产99热| 777被窝午夜精品影院| 久久亚洲精品无码播放| 大伊香蕉精品一区视频在线| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久99国产精品久久久| 国产精品99久久精品爆乳| 亚洲欧美日韩精品久久亚洲区| 国产欧美亚洲精品A| 国产精品视频色视频| 精品久久久久久无码专区| 国产乱人伦精品一区二区在线观看| 久久水蜜桃亚洲av无码精品麻豆| 在线电影国产精品| 久久水蜜桃亚洲av无码精品麻豆| 精品欧洲av无码一区二区三区 | 中文字幕久久精品无码| 久久99国产精品一区二区| 亚洲国产精品成人久久蜜臀 | 中文成人无字幕乱码精品区| 免费精品一区二区三区第35| 亚洲国产精品成人一区| 国产精品男男视频一区二区三区|