我一直在与大学的一些朋友争论,我们无法明确哪个框架具有更高的Web应用程序可伸缩性(并且仍然非常快)。
一个调用jsp,另一个调用ruby,另外调用php等等。我可以请你澄清一下可扩展性的潜力吗?
Tks,希望我不会复制我搜索过的任何内容,但没有发现任何先前的问题。
编辑:如果你可以指出一个比较,这将是好的:)
答案 0 :(得分:24)
Ruby和PHP不是webapp框架。它们是用于Web开发的流行编程语言。
一般来说,webapp可伸缩性不是编程语言的属性,并且给定的webapp框架最多可能不妨碍可伸缩性。良好的可扩展性更适合应用程序设计。
有太多的webapp框架用于逐点比较,这些都是百科全书式的。
此外,您可以通过多种方式处理给定应用程序的可伸缩性。一种方法是具有明确的和狭窄的范围,并且目标是令人敬畏的原始性能,因此单个机器可以服务于数十亿的工作单元。最好的例子是Mailinator。
另一种方法是通过“添加更多硬件”来更轻松地为增加的负载提供服务。几乎任何数据库支持的webapp框架都可以这种方式扩展:只需在负载均衡器和共享数据库后端之间添加更多应用程序服务器。如果以这种方式构建问题,那么主要关注的是设计应用程序以最小化1.数据库争用2.数据库负载。
最后一种方法是将系统设计为疯狂并行。谷歌就是最好的例子。
总结:语言或框架不构建可扩展的应用程序,软件架构师也这样做。
编辑:要明确,我的回答是关注可伸缩性,即能够在不改变设计的情况下处理不断增加的负载。这与执行速度不同。
答案 1 :(得分:4)
算法的可扩展性将比使用的语言更多。
也就是说,语言之间的执行速度会有所不同。我相信Java(Servlet和JSP编译成servlet,即本机代码)将比Ruby和PHP快一些)。还有一大堆用于Java的Web框架,它们将鼓励您以最佳方式实现可伸缩性。
还要设计您的应用程序,以便它可以在负载均衡器后面愉快地运行,并且可扩展性变得更加容易:)但这不是我的专业领域。
答案 2 :(得分:3)
您还可以查看“What’s faster? PHP vs ASP vs JSP vs CGI etc”
我认为Java / Java EE是从头开始设计的唯一“框架”,用于开发分布式/集群应用程序,并鼓励从规范(EJB,JTA ......)实现它的良好实践。
但像往常一样,这取决于。这类问题往往会引发火焰战争:)
答案 3 :(得分:3)
Web框架可扩展性是一个过度思考的问题(有人会说p155ing竞赛)。除非你获得巨额奖金(这些日子好运)并且每天可以确保数百万访问者所有这些框架都可以很好地处理它(就像ASP.NET一样)。
我个人总是选择ASP.NET。它具有可扩展性,并且拥有最好的开发人员工具。唯一的缺点是托管和操作系统成本。
答案 4 :(得分:3)
(五年后......)
我发现这篇博客文章基于多个语言相关的Web框架进行基准测试。现在这几乎解决了我在2008年的问题。
http://www.techempower.com/blog/2013/03/28/framework-benchmarks/
答案 5 :(得分:2)
我不确定你提到的那些框架是否会严重阻碍可扩展性。
这完全取决于实施。
我会集中精力让您的网络应用程序首先运行良好,然后在成为问题时担心可扩展性。换句话说,“当我们来到它时,让我们穿过那座桥梁。”
答案 6 :(得分:2)
答:C ISAPI DLL(或自定义apache模块):)
即使这样,Web服务器的开销,解析http请求和提供html页面也会使应用程序的执行时间几乎无关紧要。如果您将应用程序作为CGI应用程序运行,那么性能会更低。
对于Web中的可伸缩性,您实际上是在谈论添加更多服务器和负载平衡,通过将数据库(如果使用频繁)放在单独的服务器上来加载服务器负载。
这些语言的原始性能几乎无需担心。使用您想要使用的那个,您将获得最高效率。担心你会遇到的其他问题 - 网络io,安全性,正确性。
答案 7 :(得分:1)
已有好几点。我的主要观点是:一个知道内部和外部python的人可能会使用python而不是使用Java来制作更具伸缩性的代码。有许多大型网站使用你提到的所有技术,所以我认为无论哪种方式都没有任何大的优势。
在大多数情况下,你应该坚持自己所熟悉的内容,除非有另一种方式的重要理由。
答案 8 :(得分:1)
我偶然遇到过这个问题并注意到有些人谈论速度,其他人谈论可扩展性。我写了一篇博文来解释其中的差异:
http://www.fransekman.com/scalability-or-performance-what-do-you-mean/
“高可扩展性网站是一个网站,可以通过在负载增加时添加更多容量来维持性能级别”。这可以用任何编程语言和几乎任何框架来实现。一些框架具有内置功能,这可以使一些常见的可伸缩性更快地实现。
答案 9 :(得分:0)
编译语言通常比解释语言运行得更快,所以我认为Ruby和PHP是在八球之后开始的,但这实际上取决于你如何使用这种语言以及如何构建代码。
所有语言都有自己的最佳实践和模式来构建可伸缩的应用程序,并且通常会有所妥协,具体取决于所提议的应用程序的功能。
答案 10 :(得分:0)
如果您想知道主要网站如何使用LAMP来实现可扩展性,您应该看看database sharding。
答案 11 :(得分:0)
Web框架的选择对可扩展性(扩展能力)的影响小于站点的体系结构。大多数现代Web框架非常适合扩展,因此您的部署设置确实需要引起注意。