Node異步I/O、事件驅動與高性能服務器

事件循環、觀察者、請求對象、I/O線程池這四者共同構成了Node異步I/O模型的基本要素。服務器

異步I/O流程:併發

事件驅動的實質,即經過主循環加事件觸發的方式來運行程序。異步

利用Node構建Web服務器的流程圖:性能

經典服務器模型:操作系統

  • 同步式。
  • 每進程/每請求。爲每一個請求啓動一個進程,這樣能夠處理多個請求,可是它不具有擴展性,由於系統資源只有那麼多。
  • 每線程/每請求。爲每一個請求啓動一個線程來處理。儘管線程比進程要輕量,可是因爲每一個線程都要佔用必定內存,當大併發請求到來時,內存將會很快用光,致使服務器緩慢。目前被Apache採用。

Node經過事件驅動的方式處理請求,無須爲每一個請求建立額外的對應線程,能夠省掉建立線程和銷燬線程的開銷,同時操做系統在調度任務時由於線程較少,上下文切換的代價很低。這使服務器可以有條不紊地處理請求,即便在大量鏈接的狀況下,也不受線程上下文切換開銷的影響,這是Node高性能的一個緣由。線程

參考《深刻淺出Node.js》對象

相關文章
相關標籤/搜索