您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Nodejs能夠應用于什么場景的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
優點:支持多線程并發
缺點:阻塞
線程是可以獨立運行的最小的 CPU 單位,可以在同一個進程里并發運行,共享該進程下的內存地址空間。
當不同的線程需要占用同一個變量時,根據先到先得的原則,先到的線程在運作時,后來的線程只能在旁邊等待,也就是加入到了阻塞排隊序列。就造成了線程阻塞。
類似場景:銀行柜臺辦理業務
優點:高并發(最重要的優點)、適合 I/O 密集型應用
缺點:
不適合CPU密集型應用(CPU密集型應用給Node帶來的挑戰主要是:由于JavaScript單線程的原因,如果有長時間運行的計算(比如大循環),將會導致 CPU 時間片不能釋放,使得后續 I/O 無法發起)
只支持單核CPU,不能充分利用CPU
可靠性低,一旦代碼某個環節崩潰,整個系統都崩潰
原因:單進程、單線程
解決方案:
(1)Nnigx 反向代理,負載均衡,開多個進程,綁定多個端口;
(2)開多個進程監聽同一個端口,使用cluster模塊
(3)線上使用 PM2 管理進程,出現問題自動重啟項目
Debug 不方便,錯誤沒有 stack trace
NodeJS 基于事件循環,每一條 NodeJS 的邏輯寫在回調函數里面,回調函數在返回之后異步執行。【推薦學習:《nodejs 教程》】
NodeJS 不是沒有阻塞,而是阻塞不發生在后續回調的流程,而會發生在 NodeJS 本身對邏輯的計算和處理。
NodeJS 它的所有 I/O、網絡通信等比較耗時的操作,都可以交給 worker threads 執行再回調,所以很快。但 CPU 的正常操作,它只能自己操作。
類似場景:排隊點餐后叫號取餐。
NodeJS 處理并發的能力強,但處理計算和邏輯的能力反而很弱。
因此,我們把復雜的邏輯運算搬到前端(客戶端)完成,而 NodeJS 只需要提供異步 I/O,這樣就可以實現對高并發的高性能處理。
這是 NodeJS 最理想的應用場景,可以處理數萬條連接,本身沒有太多的邏輯,只需要請求 API,組織數據進行返回即可。
它本質上只是從某個數據庫中查找一些值并將它們組成一個響應。
由于響應是少量文本,入站請求也是少量的文本,因此流量不高,一臺機器甚至也可以處理最繁忙的公司的 API 需求。
實時聊天、客戶端邏輯強大的單頁 APP,具體的例子比如說:本地化的在線音樂應用,本地化的在線搜索應用,本地化的在線 APP 等。
Apache 由于其多線程高并發共享內存地址空間的特性,那就意味著如果服務器足夠強大,處理器足夠高核,Apache 的運作將會非常良好,所以適用于(并發)異步處理相對較少,后臺計算量大,后臺業務邏輯復雜的應用程序。
感謝各位的閱讀!關于“Nodejs能夠應用于什么場景”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。