老实说,我还没有完全理解它——我甚至知道 Node.js 是如何工作的,作为一个使用事件模型的单线程。我只是不明白这怎么会比 Apache 好,如果它是单线程的,它怎么会水平扩展。
这取决于你如何使用它。Js 默认是单线程的,但是使用(相对而言)新的集群模块可以横向扩展多个线程。
此外,您的数据库需求还将决定节点的伸缩效率。例如,由于 MongoDB 和 node.js 都是事件驱动的,因此在 node.js 中使用 MySQL 不会获得与使用 MongoDB 一样多的好处。
以下连结提供很多不同设定的系统基准: Http://www.techempower.com/benchmarks/
Js 的排名不是最高的,但与其他使用 nginx 的设置相比(表上没有 apache,但足够接近) ,它表现得相当不错。
不过,这也很大程度上取决于您的需求。我相信,如果你只是为静态网站服务,建议你坚持使用更传统的堆栈。然而,人们已经用 node.js 为其他需求做了一些了不起的事情: http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/(c10k?哈!)
编辑: 值得一提的是,您实际上并没有用 node.js“替换”Apache。您将替换 apache 和 php (在一个典型的灯堆栈中)。
我发现 Tomislav Capan 的这篇博文很好地解释了这一点: 我为什么要使用 Node.js
我对 Node 0.10和 Apache 的要点的解释是:
注意: 下面列出的大多数不好的部分将会在即将到来的0.12版本中得到改进,这是需要注意的。
所有的服务器平台都有一个上限,Node.js 和 Apache 都会在某个时候达到这个上限。