`
止甬V
  • 浏览: 24091 次
社区版块
存档分类
最新评论

对Nodejs的个人理解

阅读更多

相对于apache等的线程模式,nodejs内置了事件处理机制。面对每一个请求,并不是创建一个线程去处理,而是使用一个事件去处理。事件处理可以减少线程的创建。在处理一个事件时,只需要多分配一部分堆内存即可。事件的回调可以通过内部管道通信来完成。

NIO。非阻塞式的IO操作,不会直接去操作IO,而是通过事件回调来实现,减少等待事件。

事件处理机制在内部减少了同步等待的可能性,从而可以处理更高的同步请求,提升系统的吞吐量。

好比银行的排号系统。假设银行网点只有一个柜台(CPU),柜台前可以供5个人排队(同步数),那么这个银行网点支持最大并发就是5,如果多于5人,就只能在银行外面等待了。当银行加入的排号系统后(时间驱动),每个到银行处理事务的人先去拿个号,然后等待叫号,那么银行可以同时发出50个号,拿到号的人在未叫号之前,可以处理自己的事情,甚至可以去旁边喝下午茶都可以。

那么为什么apache不支持事件处理,非阻塞式的IO呢? 历史原因,没有考虑过这么大的请求。比如香港的XX时装店,店里最多只能进入20人,其他人只能在门口排队,里面走了一个顾客,排队的前面就进去一个。浪费了大量的等待时间。但走秀网上去购物,你的等待时间基本上是0.


Nodejs官网中的介绍很值得去研究:

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics