深入淺出Node.js讀書心得(ㄧ)

Chapter 1 : Node 簡介

Node的特點:

  • 非同步 (Asynchronous) I/O
  • 事件 (Events) 與回呼函數 (Callback functions)
  • 單執行緒 (Single thread)
    • 優點:
      1. 不用像多執行緒那般處處在意狀態的同步問題
      2. 不會有鎖死 (deadlock) 的情況
      3. 沒有執行緒上下文交換 (content switch) 時帶來的額外性能代價
    • 缺點:
      1. 無法利用多核 CPU
      2. 錯誤會引起整個應用程式退出 (crash?),值得一再考驗其健壯性
      3. 大量計算佔用 CPU,導致無法繼續呼叫非同步 I/O
        Node 採用和 Html5 的 Web Workers 相同概念來解決單執行緒中大量計算的問題:child_process
  • 跨平台

Node的應用場景

  • I/O 密集型
  • 是否不擅長 CPU 密集型
    適當調整和分解大型運算為多個小任務,便能讓運算適時釋放,不阻塞 I/O 呼叫的啟動,這樣既可同時享受並行非同步 I/O 的好處,又能充分利用 CPU。
  • 與就有系統和平共存
  • 分散式應用