【发布时间】:2013-05-10 20:11:05
【问题描述】:
说实话,我还没有完全理解它——我什至理解 Node.js 是如何工作的,作为使用事件模型的单线程。我只是不明白这比 Apache 好,以及如果它是单线程的,它是如何水平扩展的。
【问题讨论】:
标签: apache node.js scalability
说实话,我还没有完全理解它——我什至理解 Node.js 是如何工作的,作为使用事件模型的单线程。我只是不明白这比 Apache 好,以及如果它是单线程的,它是如何水平扩展的。
【问题讨论】:
标签: apache node.js scalability
我发现 Tomislav Capan 的这篇博文解释得很好:
Why The Hell Would I Use Node.js? A Case-by-Case Introduction
与 Apache 相比,我对 Node 0.10 要点的解释:
注意:下面列出的大部分不好的部分将在即将发布的 0.12 版本中得到改进,请注意。
所有服务器平台都有上限。 Node.js 和 Apache 都将在某个时候达到它。
【讨论】:
这取决于你如何使用它。 Node.js 默认是单线程的,但是使用(相对)新的集群模块,您可以跨多个线程水平扩展。
此外,您的数据库需求还将决定节点扩展的有效性。例如,将 MySQL 与 node.js 一起使用不会像使用 MongoDB 那样为您带来几乎一样的好处,因为 MongoDB 和 node.js 都是事件驱动的性质。
以下链接提供了许多不同设置的系统基准测试: http://www.techempower.com/benchmarks/
Node.js 的排名不是最高的,但与使用 nginx 的其他设置相比(他们的桌子上没有 apache,但足够接近),它的表现相当不错。
不过,这在很大程度上取决于您的需求。我相信如果您只是为静态网站提供服务,建议您坚持使用更传统的堆栈。然而,人们用 node.js 做了一些令人惊奇的事情来满足其他需求:http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/(c10k?哈!)
编辑:值得一提的是,您实际上并没有用 node.js “替换” apache。您将替换 apache AND php(在典型的灯堆栈中)。
【讨论】: