堵塞與非堵塞原理

傳統硬件的堵塞以下,從內存中讀取數據,而後寫到磁盤,而CPU一直等到磁盤寫完成,磁盤的寫操做是慢的,這段時間CPU被堵塞不能發揮效率。服務器

  使用非堵塞的DMA以下圖:CPU只是發出寫操做這樣的指令,作一些初始化工做,DMA具體執行,從內存中讀取數據,而後寫到磁盤,當完成寫後發出一箇中斷事件給CPU。這段時間CPU是空閒的,能夠作別的事情。這個原理稱爲Zero.copy零拷貝。線程

  Netty底層基於上述Java NIO的零拷貝原理實現:3d

比較

  • Tomcat是一個Web服務器,它是採起一個請求一個線程,當有1000客戶端時,會耗費不少內存。一般一個線程將花費 256kb到1mb的stack空間。
  • Node.js是一個線程服務於全部請求,在錯誤處理上有限制
  • Netty是一個線程服務於不少請求,以下圖,當從Java NIO得到一個Selector事件,將激活通道Channel。

相關文章
相關標籤/搜索