老实说,我还没有完全理解它-我什至确实了解Node.js是如何使用事件模型作为单个线程运行的。我只是不知道它比Apache更好,以及如果它是单线程,它如何水平扩展。
Answers:
我发现Tomislav Capan撰写的此博客文章对此做了很好的解释:
为什么我会使用Node.js?个案介绍
与Apache相比,我对Node 0.10的要点的解释是:
注意:下面列出的大多数不良部分将在即将发布的0.12版本中得到改善,这一点需要注意。
所有服务器平台都有上限。Node.js和Apache都将在某个时候到达它。
这取决于您如何使用它。Node.js默认情况下是单线程的,但是使用(相对)新的集群模块,您可以跨多个线程水平扩展。
此外,您的数据库需求也将决定节点的有效扩展。例如,由于MongoDB和node.js都是事件驱动的,因此将MySQL与node.js结合使用不会带来与使用MongoDB一样多的收益。
以下链接为使用不同设置的系统提供了许多不错的基准测试:http : //www.techempower.com/benchmarks/
Node.js排名不是最高,但是与使用nginx的其他设置(在其表上没有Apache,但足够接近)相比,它的表现很好。
同样,它在很大程度上取决于您的需求。我相信,如果您只是在服务静态网站,建议您坚持使用更传统的堆栈。但是,人们已经为满足其他需求而使用node.js做了一些令人惊奇的事情:http : //blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/(c10k?ha!)
编辑:值得一提的是,您实际上并没有用node.js来“替换” Apache。您将要替换apache和php(在典型的灯堆中)。