Node.js是一套
用來編寫高性能網絡服務器
的JavaScript工具包。Node.js是一個能夠快速構建網絡服務及應用的平臺,該平臺的構建是基於GoogleV8引擎(應用於Google Chrome瀏覽器,
執行Javascript的速度很是快,性能很是好
)。
Node對V8一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好(
例如,在服務器環境中,處理二進制數據一般是必不可少的,但Javascript對此支持不足,所以,V8.Node增長了Buffer類,方便而且高效地 處理二進制數據。
)。它主要爲解決服務器高併發而生。
在 Java™ 和 PHP 這類語言中,每一個鏈接都會生成一個新線程,每一個新線程可能須要 2 MB 的配套內存。在一個擁有 8 GB RAM 的系統上,理論上最大的併發鏈接數量是 4,000 個用戶。隨着您的客戶羣的增加,若是但願您的 Web 應用程序支持更多用戶,那麼,您必須添加更多服務器。固然,這會增長服務器成本、流量成本和人工成本等成本。除這些成本上升外,還有一個潛在技術問題,即用戶可能針對每一個請求使用不一樣的服務器,所以,任何共享資源都必須在全部服務器之間共享。鑑於上述全部緣由,整個 Web 應用程序架構(包括流量、處理器速度和內存速度)中的瓶頸是:
服務器可以處理的併發鏈接的最大數量
。
Node 解決這個問題的方法是:爲每個鏈接在 Node 引擎的進程中產生事件而不是爲每一個鏈接生成一個新的 OS 線程(併爲其分配一些配套內存)。Node 聲稱它毫不會死鎖,由於它根本不容許使用鎖,它不會直接阻塞 I/O 調用。Node 還宣稱,運行它的服務器能支持數萬個併發鏈接。
nodeJS的第一原則
事件驅動編程
事件發生時調用的回調函數能夠在捕獲事件處進行編寫。這樣可使代碼容易編寫和維護,沒有複雜的面向對象框架,沒有接口,沒有過分設計的可能性。只需監聽事件,編寫一個回調函數,其餘事情均可以交給系統處理。
nodeJS的知識結構