Page 14 - Node.js开发指南
P. 14

1.4  Node.js 的性能    5


               的方式请求,返回的结果由事件循环来处理。图1-1 描述了这个机制。Node.js 进程在同一时                                        1
               刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。这样做的好处是,
               CPU 和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。对于低速
               连接攻击,Node.js 只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多
               线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击。                                                      2





                                                                                                      3





                                                                                                      4





                                                                                                      5


                                                  图1-1  事件循环
                                                                                                      6
                   这种异步事件模式的弊端也是显而易见的,因为它不符合开发者的常规线性思路,往往
               需要把一个完整的逻辑拆分为一个个事件,增加了开发和调试难度。针对这个问题,Node.js
               第三方模块提出了很多解决方案,我们会在第6章中详细讨论。
                                                                                                      7
               1.4  Node.js 的性能

               1.4.1  Node.js 架构简介

                                                                                                      8
                   Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。Node.js 除了使
               用 V8 作为JavaScript引擎以外,还使用了高效的 libev 和 libeio 库支持事件驱动和异步式 I/O。
               图1-2 是 Node.js 架构的示意图。
                                                                                        ①
                   Node.js 的开发者在 libev 和 libeio 的基础上还抽象出了层 libuv。对于 POSIX 操作系统,                       9
               libuv 通过封装 libev 和 libeio 来利用 epoll 或 kqueue。而在 Windows 下,libuv 使用了 Windows


               ——————————
                  ① POSIX(Portable Operating System Interface)是一套操作系统 API 规范。一般而言,遵守 POSIX 规范的操作系统    10
                     指的是 UNIX、Linux、Mac OS X 等。
   9   10   11   12   13   14   15   16   17   18   19