11

我一直在和大学里的一些朋友争论,我们无法确定哪个框架对 Web 应用程序具有更高的可扩展性(并且仍然非常快)。

一个调用jsp,另一个调用ruby,另一个调用php,以此类推。我能否请您澄清一下什么是更具可扩展性的潜力?

Tks,希望我没有重复我搜索过的任何内容,但没有发现任何以前的问题。

编辑:如果您可以对此进行比较,那就太好了:)

4

12 回答 12

24

Ruby 和 PHP 不是 webapp 框架。它们是在 Web 开发中流行的编程语言。

一般来说,webapp 的可扩展性不是编程语言的属性,给定的 webapp 框架最多不会妨碍可扩展性。良好的可扩展性更多是应用程序设计的属性。

有太多的 webapp 框架无法进行逐点比较,这简直就是百科全书。

此外,您可以通过多种方式处理给定应用程序的可伸缩性。一种方法是定义明确且狭窄的范围,并以出色的原始性能为目标,这样一台机器就可以服务于无数个工作单元。最好的例子是Mailinator

另一种方法是通过“仅”添加更多硬件来更轻松地服务于不断增加的负载。几乎任何数据库支持的 webapp 框架都可以通过这种方式扩展:只需在负载均衡器和共享数据库后端之间添加更多应用程序服务器。如果您以这种方式解决问题,您主要关心的是设计应用程序以最小化 1. 数据库争用 2. 数据库负载。

最后一种方法是将系统设计为一路疯狂并行。谷歌就是最好的例子。

总而言之:语言或框架不会产生可扩展的应用程序,软件架构师会。

编辑:要清楚,我的答案是关注可扩展性,即在不改变设计的情况下处理不断增加的负载的能力。这是与执行速度不同的属性。

于 2008-10-21T18:59:19.927 回答
4

算法将比使用的语言更重要的可扩展性。

也就是说,语言之间的执行速度会有差异。我相信 Java(Servlet 和 JSP 编译成 servlet,即本机代码)会比 Ruby 和 PHP 快一些)。还有大量用于 Java 的 Web 框架将鼓励您以最佳方式来实现可伸缩性。

还要设计您的应用程序,以便它可以在负载均衡器后面愉快地运行,并且可扩展性变得容易得多:) 然而,这不是我的专业领域。

于 2008-10-21T18:50:42.173 回答
3

您还可以查看“什么更快?PHP vs ASP vs JSP vs CGI 等

我认为 Java/Java EE 是唯一从头开始设计用于开发分布式/集群应用程序的“框架”,它鼓励从规范(EJB、JTA ...)中实现它的良好实践。

但像往常一样,这取决于。这类问题往往会引发战争:)

于 2008-10-21T18:56:16.920 回答
3

Web 框架的可扩展性是一个有点过分思考的问题(有人会说 p155ing 竞赛)。除非您获得巨额资金(这些天祝您好运)并且可以确保每天有数百万访问者,所有这些框架都可以很好地处理它(ASP.NET 也可以)。

就我个人而言,我总是会选择 ASP.NET。它与任何东西一样可扩展,并拥有最好的开发工具。唯一的缺点是托管和操作系统成本。

于 2008-10-21T21:47:59.087 回答
3

(五年后...)

我发现这篇博客文章对多种语言相关的 Web 框架进行了基准测试。现在这几乎回答了我在 2008 年提出的问题。

http://www.techempower.com/blog/2013/03/28/framework-benchmarks/

于 2013-03-28T16:26:16.957 回答
2

我不确定您提到的任何框架都会严重阻碍可伸缩性。

这一切都取决于实施。

我会先集中精力让您的 Web 应用程序运行良好,然后在它成为问题时担心可扩展性。换句话说,“当我们到达它时,让我们越过那座桥”。

于 2008-10-21T21:33:33.420 回答
2

答:C ISAPI dll(或自定义 apache 模块):)

即使这样,Web 服务器的开销、解析 http 请求和提供 html 页面也使得应用程序的执行时间几乎无关紧要。如果您将应用程序作为 CGI 应用程序运行,那么预计性能会更低。

对于 Web 中的可扩展性,您实际上是在谈论添加更多服务器和负载平衡,通过将数据库(如果大量使用)放在单独的服务器上来减轻服务器的负载。

这些语言的原始性能几乎不用担心。使用您想要使用的那个,您将最有效率地使用它。担心您会遇到的其他问题 - 网络 io、安全性、正确性。

于 2008-10-21T21:34:57.863 回答
1

已经有几个优点了。我的主要观点是:一个对 python 了如指掌的人可能能够使用 python 编写比使用 Java 更具可扩展性的代码。并且有许多大型网站使用您提到的所有技术,所以我认为这两种方式都没有任何大的优势。

在大多数情况下,你应该坚持你熟悉的东西,除非有一个真正重要的理由去另一种方式。

于 2008-10-21T21:47:53.813 回答
1

我碰巧遇到了这个问题,并注意到有些人谈论速度,其他人谈论可扩展性。我写了一篇博客文章解释了差异:

http://www.fransekman.com/scalability-or-performance-what-do-you-mean/

“高扩展性网站是一个网站,当负载增加时,可以通过增加更多容量来维持其性能水平”。这可以在任何编程语言和几乎任何框架中实现。一些框架具有内置功能,这可能会使一些常见的可伸缩性事物更快地实现。

于 2013-09-18T18:01:25.723 回答
0

编译型语言通常比解释型语言运行得更快,所以我认为 Ruby 和 PHP 从八球后面开始,但这实际上取决于你如何使用语言以及如何构建代码。

所有语言都有自己的最佳实践和模式来构建可扩展的应用程序,并且通常会根据提议的应用程序的功能进行妥协。

于 2008-10-21T18:53:18.173 回答
0

如果你想知道各大网站如何使用 LAMP 来实现可扩展性,你应该看看数据库分片

于 2008-11-21T16:14:18.637 回答
0

与站点架构相比,Web 框架的选择对可扩展性(扩展能力)的影响较小。大多数现代 Web 框架都非常适合扩展,因此真正需要注意的是您的部署设置。

于 2010-08-16T15:54:17.833 回答