Node异步I/O、事件驱动与高性能服务器

事件循环、观察者、请求对象、I/O线程池这四者共同构成了Node异步I/O模型的基本要素。服务器

异步I/O流程:并发

事件驱动的实质,即经过主循环加事件触发的方式来运行程序。异步

利用Node构建Web服务器的流程图:性能

经典服务器模型:操作系统

  • 同步式。
  • 每进程/每请求。为每一个请求启动一个进程,这样能够处理多个请求,可是它不具有扩展性,由于系统资源只有那么多。
  • 每线程/每请求。为每一个请求启动一个线程来处理。尽管线程比进程要轻量,可是因为每一个线程都要占用必定内存,当大并发请求到来时,内存将会很快用光,致使服务器缓慢。目前被Apache采用。

Node经过事件驱动的方式处理请求,无须为每一个请求建立额外的对应线程,能够省掉建立线程和销毁线程的开销,同时操做系统在调度任务时由于线程较少,上下文切换的代价很低。这使服务器可以有条不紊地处理请求,即便在大量链接的状况下,也不受线程上下文切换开销的影响,这是Node高性能的一个缘由。线程

参考《深刻浅出Node.js》对象

相关文章
相关标签/搜索