堵塞与非堵塞原理

传统硬件的堵塞以下,从内存中读取数据,而后写到磁盘,而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。

相关文章
相关标签/搜索