node 簡介

Nodejs有幾個特性:異步IO,事件驅動,單線程,跨平臺javascript

  異步IO能夠保證在CPU計算的同時,異步的加載IO,加快了應用的訪問。不像傳統的服務器是使用什麼阻塞IO啊、輪訓IO等等,它至關於在發送處理請求時,直接傳一個回調函數,當異步的IO結束後,會自動的執行回調。java

  事件驅動,則是把粒度下降到事件級別。傳統的服務器是一個請求分配一個線程進行處理,這樣就會增長多線程通訊的複雜性。而事件驅動,則簡化了事件模型。node

  單線程其實主要是由於Nodejs是基於V8瀏覽器引擎,所以具備單線程的特色,並且內存很小。這樣就引出了Node的劣勢——沒法利用多核CPU、若是應用出現問題整個系統也會崩潰、CPU繁忙將會影響IO。(所以Node中也提供了child_process模塊建立子進程,以此來利用多核;引入了一些集羣特性,增長健壯性)。瀏覽器

  最後就是跨平臺,Nodejs其實並不是所有用javascript編寫,只是表面的業務語言以及開放的模塊才使用js。底層的大部分的模塊仍是使用C++構建,所以經過切換系統級別的組件,能夠直接切換平臺。服務器

單線程的弱點多線程

   一、沒法利用多核cpu異步

   二、錯誤會引發整個應用的退出,應用的健壯性值得考驗函數

   三、大量計算佔用cup致使沒法繼續調用異步的I/O;線程

 

node的擅長 I/O密集型的業務(絕大多數時間在計算上)進程

(cpu密集型業務指 等待I/O上花費了大可能是時間 )

相關文章
相關標籤/搜索