著做权归做者全部。
商业转载请联系做者得到受权,非商业转载请注明出处。
做者:FengqiAsia
连接:http://www.zhihu.com/question/19653241/answer/15993549
来源:知乎
要讲清楚这个问题,先讲讲整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈。瓶颈在于服务器可以处理的并发链接的最大数量。Node.js解决这个问题的方法是:更改链接到服务器的方式。每一个链接发射一个在Node.js引擎的进程中运行的事件,而不是为每一个链接生成一个新的OS线程(并为其分配一些配套内存)。Node.js不会死锁,由于它根本不容许使用锁,它不会直接阻塞 I/O 调用。Node.js还宣称,运行它的服务器能支持数万个并发链接。 Node自己运行V8 JavaScript。V8 JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎。Google使用V8建立了一个用C++编写的超快解释器,该解释器拥有另外一个独特特征:您能够下载该引擎并将其嵌入任何应用程序。V8 JavaScript引擎并不只限于在一个浏览器中运行。所以,Node.js实际上会使用Google编写的V8 JavaScript引擎,并将其重建为可在服务器上使用。 Node.js优势: 一、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性很是适合事件驱动、异步编程。并且JavaScript也简单易学,不少前端设计人员能够很快上手作后端设计。 二、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,很是适合用做依赖其它IO资源的中间层服务。三、Node.js轻量高效,能够认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node很是适合以下状况:在响应客户端以前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不必定不少。 Node.js缺点: 一、可靠性低 二、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。