Node异步I/O、事件驱动与高性能服务器
2024-08-31 05:15:00
事件循环、观察者、请求对象、I/O线程池这四者共同构成了Node异步I/O模型的基本要素。
异步I/O流程:
事件驱动的实质,即通过主循环加事件触发的方式来运行程序。
利用Node构建Web服务器的流程图:
经典服务器模型:
- 同步式。
- 每进程/每请求。为每个请求启动一个进程,这样可以处理多个请求,但是它不具备扩展性,因为系统资源只有那么多。
- 每线程/每请求。为每个请求启动一个线程来处理。尽管线程比进程要轻量,但是由于每个线程都要占用一定内存,当大并发请求到来时,内存将会很快用光,导致服务器缓慢。目前被Apache采用。
Node通过事件驱动的方式处理请求,无须为每个请求创建额外的对应线程,可以省掉创建线程和销毁线程的开销,同时操作系统在调度任务时因为线程较少,上下文切换的代价很低。这使服务器能够有条不紊地处理请求,即使在大量连接的情况下,也不受线程上下文切换开销的影响,这是Node高性能的一个原因。
参考《深入浅出Node.js》
最新文章
- SSH免手动输入密码和设置代理
- 《CDN技术详解》 - CDN知多少?
- 自动布局之autoresizingMask
- Xamarin for Visual Studio 破解日志
- hdu1051 Wooden Sticks
- linux启动报错:kernel panic - not attempted to kill init
- Fractal(递归,好题)
- Flash中用AS3做的游戏,导出apk安装到手机上滤镜效果出不来为什么?
- Mac os 下使用gem命令的坑
- vim 设置默认显示行号
- 初始化Direct3D
- Lucky7(容斥原理)
- 关于Java解压文件的一些坑及经验分享(MALFORMED异常)
- 抓包工具 fiddler
- 图片处理之 Base64
- 定时任务Crontab
- IDEA 小白采坑
- BZOJ1856 [Scoi2010]字符串 数论
- LINUX修改、增加IP的方法,一张网卡绑定多个IP/漂移IP【转】
- linux用户权限 ->; 系统基本权限