【问题标题】:Cost of scaling Rails vs cost of scaling PHP vs Python frameworks扩展 Rails 的成本与扩展 PHP 与 Python 框架的成本
【发布时间】:2010-11-12 21:02:49
【问题描述】:

我想这个问题已经被问了很多。我知道 Rails 可以扩展,因为我已经研究过它并且它很棒。就 PHP 框架而言,这一点毫无疑问。

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

假设每月有 100 万次访问的大型应用程序,扩展 Rails 与其他框架(PHP、Python)的成本差异有多大?

这是我经常被问到的问题。我可以向人们解释“Rails 确实可以很好地扩展”,但从长远来看,经济学是什么?

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

【问题讨论】:

  • 我也有点好奇,但我真的怀疑这个问题有没有具体的答案。变数太多了。网站设计、程序员时间与机器时间的价值等。我认为大多数平台都有大型网站的例子,

标签: php python ruby-on-rails scaling


【解决方案1】:

其中一个主要因素是不受框架选择影响的是数据库访问。无论您采用哪种方法,您都可能将数据放入关系数据库中。那么问题是如何有效地从数据库中获取数据。这主要取决于 RDBMS(Oracle vs. Postgres vs. MySQL),而不是框架 - 除了一些数据映射库可能对 SQL 的使用效率低下。

对于纯粹的“访问次数”参数,问题实际上是您的 HTML 模板系统的运行速度。所以问题是:每秒可以渲染多少页?我会将其作为确定系统可扩展性的主要指标。

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

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

【讨论】:

    【解决方案2】:

    恕我直言,我认为这三者之间的扩展成本不会有任何不同,因为它们都没有包含“可扩展性电池”。我只是没有看到这三个选择之间有任何巨大的架构差异会导致缩放的显着差异。

    换句话说,无论三种语言中的哪一种,您的应用程序架构都将主导应用程序的扩展方式。

    如果您需要内存缓存,您至少会使用 memcached(或与所有三种语言交互的类似工具)。也许你使用 nginx 直接从 memcache 服务来帮助你的可扩展性,但这显然不会改变 php/perl/python/ruby 的性能。

    如果您使用 MySQL 或 Postgresql,无论您的应用程序语言如何,您仍然必须正确设计数据库以进行扩展,并且您用于启动集群/镜像的任何工具都将在您的应用程序之外。

    我认为在内存使用方面,Python(使用 mod_wsgi 守护程序模式)和 Ruby(使用乘客/mod_rack 的企业 ruby​​)至少与 fcgi 下的 PHP 相当,并且可能比 mod_php 下的 PHP(即 apache MPM prefork)更好+ 所有 apache 进程中的 php 都会占用大量内存)。

    这个问题可能有趣的地方是尝试将这 3 种语言与 Erlang 之类的语言进行比较,其中您(据说)在所有 Erlang 进程中自动具有廉价的内置可伸缩性,但即便如此,您也会遇到 RDBMS 数据库瓶颈,除非您的应用程序非常适合 Erlang 数据库的一种处理方式,例如沙发数据库。

    【讨论】:

      【解决方案3】:

      不幸的是,我不知道 Rails、PHP 和 Django 的成本比较。但我确实知道一些 Java Web 框架的成本比较: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 更差,这可能意味着它们将代表更高的成本。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2020-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        • 2016-12-06
        • 2017-05-28
        • 2016-12-26
        相关资源
        最近更新 更多