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

异步I/O流程:

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

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

经典服务器模型:

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

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

参考《深入浅出Node.js》

最新文章

  1. SSH免手动输入密码和设置代理
  2. 《CDN技术详解》 - CDN知多少?
  3. 自动布局之autoresizingMask
  4. Xamarin for Visual Studio 破解日志
  5. hdu1051 Wooden Sticks
  6. linux启动报错:kernel panic - not attempted to kill init
  7. Fractal(递归,好题)
  8. Flash中用AS3做的游戏,导出apk安装到手机上滤镜效果出不来为什么?
  9. Mac os 下使用gem命令的坑
  10. vim 设置默认显示行号
  11. 初始化Direct3D
  12. Lucky7(容斥原理)
  13. 关于Java解压文件的一些坑及经验分享(MALFORMED异常)
  14. 抓包工具 fiddler
  15. 图片处理之 Base64
  16. 定时任务Crontab
  17. IDEA 小白采坑
  18. BZOJ1856 [Scoi2010]字符串 数论
  19. LINUX修改、增加IP的方法,一张网卡绑定多个IP/漂移IP【转】
  20. linux用户权限 -> 系统基本权限

热门文章

  1. LeetCode - Populating Next Right Pointers in Each Node
  2. foreach DataTable或Table时要略过第一行。
  3. 编写高性能SQL
  4. 不用插件 让Firefox 支持网页翻译
  5. HDU 5792---2016暑假多校联合---World is Exploding
  6. [翻译]:SQL死锁-死锁排除
  7. 分享25个新鲜出炉的 Photoshop 高级教程
  8. 详细讲解nodejs中使用socket的私聊的方式
  9. CSS的简介
  10. mongodb 数据库操作--备份 还原 导出 导入