優(yōu)勢
- 高并發(fā),也即 I/O 密集
- 單進程使得程序不會額外分配資源給其他進程,線程管理本就很復(fù)雜,另外CPU在處理任務(wù)的時候也避免了切換上下文/線程帶來的消耗,具體可參考:http://iamzhongyong.iteye.com/blog/1895728
- 非阻塞IO
- 開發(fā)中可能遇到硬盤,數(shù)據(jù)庫,網(wǎng)絡(luò)請求等阻塞,使用異步處理能使程序更流暢。
- 適合前端JS人員開發(fā)后臺
- NodeJS雖然跟JS完全不是一碼事,但是設(shè)計者將語法兼容JS,故開發(fā)NodeJS將會跟開發(fā)JS的難度差不多,另外NodeJS用的虛擬機(V8)可以使用最新的ES6,因為部署在服務(wù)器端,不需要瀏覽器支持。
- 輕量級
- Node進程消耗的資源更少,在同種功能下的Tomcat跟Node,Node占用的內(nèi)存更少。
- 與NoSQL結(jié)合
- 像Redis , MongoDB這種NoSQL與NodeJS結(jié)合開發(fā),使應(yīng)用更快捷,更輕量級,MongoDB的管理和查詢語言都是JavaScript。
劣勢
- 不適合CPU密集型應(yīng)用
- 單線程導(dǎo)致只能使用單核,導(dǎo)致CPU的處理能力更弱。
- 可靠性低
- 一個線程導(dǎo)致如果程序某個環(huán)節(jié)崩潰,整個系統(tǒng)都會崩潰。
- 開源組件庫質(zhì)量參差不齊,更新快,向下不兼容。
- Debug不方便,錯誤沒有stack trace。
適用場景
- RESTful API
- 高并發(fā)、I/O密集、少量業(yè)務(wù)邏輯
####### 參考自:《Node.js實戰(zhàn)》- Mike Cantlon 等著
| 上一篇 | 下一篇 |
|---|---|
| - | Node.js 第一步 |