扩展Rails的成本vs扩展PHP和Python框架的成本

2024-05-23 16:58:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想这个问题已经被问了很多次了。我知道Rails可以伸缩,因为我做过这方面的工作,非常棒。就PHP框架而言,这一点毋庸置疑。在

我不想知道哪个框架更好。在

假设一个大型应用程序每月访问量为100万次,那么扩展Rails和其他框架(PHP、Python)的成本有多大差别?在

这是我经常被问到的问题。我可以向人们解释“Rails的扩展性相当好”,但从长远来看,经济性如何?在

如果有人能提供一些指标,那就太好了。在


Tags: 框架应用程序指标成本railsphp扩展性经济性
3条回答

我不认为这三种产品的扩展成本会有什么不同,因为它们都没有“可扩展电池”。我只是看不出这三种选择之间存在任何巨大的架构差异,而这些差异会导致伸缩性的显著差异。在

换句话说,无论三种语言是哪种,应用程序体系结构都将主导应用程序的扩展方式。在

如果你需要内存缓存,你至少要使用memcached(或者类似的东西,可以与所有三种语言交互)。也许使用nginx直接从memcache提供服务有助于提高可伸缩性,但这显然不会改变php/perl/python/ruby的性能。在

如果你使用MySQL或Postgresql,无论你的应用语言是什么,你仍然需要正确地设计你的数据库来进行扩展,并且你用来启动集群/镜像的任何工具都将不在你的应用程序之外。在

我认为在内存使用方面,Python(使用mod wsgi守护程序模式)和Ruby(企业级Ruby with passenger/mod_rack)至少可以与fcgi下的PHP相媲美,而且可能比mod_PHP下的PHP更好(即所有apache进程中的apache MPM prefork+PHP会占用大量内存)。在

这个问题可能有意思的地方是尝试比较这3种语言与类似Erlang的语言,在Erlang进程中,你(应该)有廉价的内置可伸缩性,但是即使这样,你也会遇到RDBMS数据库瓶颈,除非你的应用很好地适应Erlang数据库的一种工作方式,e、 g.库奇德。在

不幸的是,我不知道Rails、PHP和Django的成本比较。但是我知道一些javaweb框架的成本比较:Spring(9k$)、Wicket(59k$)、GWT(6k$)和JSF(49k$)。在

这里有原始会议:

http://www.devoxx.com/display/DV11/WWW++World+Wide+Wait++A+Performance+Comparison+of+Java+Web+Frameworks

你有一篇关于它的帖子(更短):

http://blog.websitesframeworks.com/2013/03/web-frameworks-benchmarks-192/

如果你想推断这个费用。您可以将此数据与Techempower提出的bencharmk交叉:

http://www.techempower.com/benchmarks/

因此,如果你知道Spring与Wicket和Django相比是相当便宜的,那么Rails在基准测试中的表现比Wicket和Spring差,这可能意味着它们的成本会更高。在

希望有帮助。在

其中一个主要因素是数据库访问不受框架选择的影响。无论采用什么方法,都可能将数据放入关系数据库中。然后问题是如何有效地从数据库中获取数据。这主要依赖于RDBMS(Oracle vs.Postgres vs.MySQL),而不是框架——除了某些数据映射库可能会低效地使用SQL。在

对于纯“访问次数”参数,问题实际上是HTML模板系统的工作速度。所以问题是:你每秒能呈现多少页?我将把它作为确定一个系统伸缩性的主要指标。在

当然,不同的页面可能有不同的成本;对于某些页面,您可以使用缓存,但对于其他页面则不行。因此,在衡量可伸缩性时,将你的100万次访问分成便宜和昂贵的页面,并分别进行衡量。综合起来,它们应该能很好地估计系统可以承受的负载(或者满足需求所需的系统数量)。在

还有内存使用的问题。如果您有SQL中的数据,这应该不重要-但是对于缓存,您可能还需要考虑wrt的可伸缩性。主内存使用情况。在

相关问题 更多 >