Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?咱们来作个数学题。在 Java™ 和 PHP 这类语言中,每一个服务器
链接都会生成一个新线程,每一个新线程可能须要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发链接数量是 4,000 个用户。随着您的客户群的增加,网络
若是但愿您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。固然,这会增长服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技架构
术问题,即用户可能针对每一个请求使用不一样的服务器,所以,任何共享资源都必须在全部服务器之间共享。鉴于上述全部缘由,整个 Web 应用程序架构(包括流量、处理器并发
速度和内存速度)中的瓶颈是:服务器可以处理的并发链接的最大数量。线程
Node 解决这个问题的方法是:更改链接到服务器的方式。每一个链接发射一个在 Node 引擎的进程中运行的事件,而不是为每一个链接生成一个新的 OS 线程(并为其分配设计
一些配套内存)。Node 声称它毫不会死锁,由于它根本不容许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发链接。进程
如今您有了一个能处理数万个并发链接的程序,那么您能经过 Node 实际构建什么呢?若是您有一个 Web 应用程序须要处理这么多链接,那将是一件很 “恐怖” 的事!那是一种 “若是您有这个问题,那么它根本不是问题” 的问题。在回答上面的问题以前,咱们先看看 Node 的工做原理以及它的设计运行方式。事件