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

一个调用jsp,另一个调用ruby,另外调用php等等。我可以请你澄清一下可扩展性的潜力吗?

Tks,希望我不会复制我搜索过的任何内容,但没有发现任何先前的问题。

编辑:如果你可以指出一个比较,这将是好的:)

有帮助吗?

解决方案 4

(五年后......)

我发现这篇博客文章基于多个语言相关的Web框架进行基准测试。现在这几乎解决了我在2008年的问题。

http://www.techempower.com/blog/2013 / 04/28 /框架的基准/

其他提示

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

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

有太多的webapp框架用于逐点比较,这些都是百科全书式的。

此外,您可以通过多种方式处理给定应用程序的可伸缩性。一种方法是具有明确的和狭窄的范围,并且目标是令人敬畏的原始性能,因此单个机器可以服务于数十亿的工作单元。最好的例子是 Mailinator

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

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

总结:语言或框架不构建可扩展的应用程序,软件架构师也这样做。

编辑:要明确,我的回答是关注可伸缩性,即能够在不改变设计的情况下处理不断增加的负载。这与执行速度不同。

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

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

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

Web框架可扩展性是一个过度思考的问题(有人会说p155ing竞赛)。除非你获得巨额奖金(这些日子好运)并且每天可以确保数百万访问者所有这些框架都可以很好地处理它(就像ASP.NET一样)。

我个人总是选择ASP.NET。它具有可扩展性,并且拥有最好的开发人员工具。唯一的缺点是托管和操作系统成本。

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

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

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

我不确定你提到的那些框架是否会严重阻碍可扩展性。

这完全取决于实施。

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

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

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

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

这些语言的原始性能几乎无需担心。使用您想要使用的那个,您将获得最高效率。担心你会遇到的其他问题 - 网络io,安全性,正确性。

已有好几点。我的主要观点是:一个知道内部和外部python的人可能会使用python而不是使用Java来制作更具伸缩性的代码。有许多大型网站使用你提到的所有技术,所以我认为无论哪种方式都没有任何大的优势。

在大多数情况下,你应该坚持自己所熟悉的内容,除非有另一种方式的重要理由。

我偶然遇到过这个问题并注意到有些人谈论速度,其他人谈论可扩展性。我写了一篇博文来解释其中的差异:

http://www.fransekman.com/scalability - 或 - 性能 - 什么-DO-您均值/

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

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

所有语言都有自己的最佳实践和模式来构建可伸缩的应用程序,并且通常会有所妥协,具体取决于所提议的应用程序的功能。

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

Web框架的选择对可扩展性(扩展能力)的影响小于站点的体系结构。大多数现代Web框架非常适合扩展,因此您的部署设置确实需要引起注意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top