【问题标题】:Choosing Rails vs. Django based on performance and scalability [closed]根据性能和可扩展性选择 Rails 与 Django [关闭]
【发布时间】:2011-11-24 17:23:49
【问题描述】:

我目前正在做一个副项目(希望能发展成更多的东西),现在它是严格静态的前端项目; HTML、CSS 和 jQuery。所以与此同时,我有时间对选择 Ruby on Rails 与 Python/Django 进行大量研究。

我阅读了无数比较这两者的文章,通常归结为“您喜欢哪种语言?”以及开发社区的考虑。

我的问题是严格的技术性质,比较框架(及其各自的语言):

在 Ruby/Rails 与 Python/Django 之间:

  1. 哪个运行时性能更好(任何统计数据或真实世界的例子都很好)?
  2. 已知的可扩展性问题有哪些,从长远来看哪个可扩展性更好(同样,任何技术文档或数据都可以代表这一点)?

我知道可扩展性归结为架构,所以问题是什么框架及其各自的工具、API、插件、社区、文档等“引导”您从“get-去”?

谢谢!

【问题讨论】:

  • 这个问题没有答案,就像“哪个更好”的问题没有答案一样。两者都可以在需要时立即升级的虚拟机上运行。但是,Rails 可以部署在 Heroku 上,它以不同的方式处理可伸缩性的数学问题,您可能会喜欢。 Django 有许多类似的解决方案,但普遍认为它们并不那么好。在某些方面和某些情况下,Rails 现在可能会赢得这场比赛。
  • 顺便说一句,上面关于 Heroku 上仅部署 Rails 的评论现在是错误的。事实上,在 Jasper 发帖 3 天后,它就变成了假的。 blog.heroku.com/archives/2011/9/28/python_and_django

标签: ruby-on-rails django performance scalability


【解决方案1】:

这是思考问题的错误方法。

Web 上的可扩展性来自于扩展应用服务器的数量,而不是加速单个应用服务器。

Ruby 和 Python 都是慢速语言,存在多线程问题和垃圾收集器问题。无论如何,我们都使用它们,因为它们非常擅长允许开发人员编写更简单的程序来更好地完成工作。这两个运行时哪个性能更好这个问题不值得费心。

只要您保持良好的 Web 架构,您的应用程序服务器是无状态的(所有状态都保存在数据库或 cookie 中,但不在服务器端会话中),您就不应该关心个人的实际性能如何要求是,只要是合理的。因为如果您的应用服务器是无状态的,您可以水平扩展该层以满足任何可扩展性需求。

【讨论】:

  • 这个。 Rails 和 Django 都表现得很好,如果你真的想要做一些超级可扩展的东西,你可能应该回避一般的 web 框架。如果它是一个“辅助项目”,请选择您最喜欢的,总有缓存层和其他您可以快速扩展的更改。
  • 感谢@Justice;一切都说得通。我了解应用服务器的水平可扩展性与单个服务器的性能无关。因此,为什么我将这些作为两个独立且不同的问题 #1 和 #2 提出。干杯。
  • 正如我所说,原始的性能问题(根本不是可伸缩性问题)是:Ruby 和 Python 都很慢,多线程和垃圾收集器都很糟糕 - 至少与其他运行时相比具有出色的多线程和垃圾收集功能并且速度很快。如果您要在单个服务器上寻找原始性能,请使用 .NET 或 JVM 语言,或其他高级垃圾收集本机线程无 GIL 运行时,例如 GHC。问两只乌龟中哪一只跑得更快似乎很愚蠢。他们都是乌龟。
  • 话虽如此,JRuby/Jython 是足够好的替代品...你必须小心 JRuby/Rails,如果你不合并几个补丁,HAML 会损害你的性能对流控制异常的依赖。异常在 Ruby 中很便宜,但在 JRuby 中却没有这么多,因为它们使用 Java Exception 框架。如果你能解决这个问题,JRuby 有非 GIL 线程。 :)
  • @yfeldblum 什么是 GHC 和 GIL?
【解决方案2】:

https://stackoverflow.com/questions/91846/rails-or-django-or-something-else
Does Django scale?
Using Rails as a framework for a large website
https://stackoverflow.com/questions/3042259/django-or-rails
Rails or Django?

...

关于这个主题有很多问题,但没有一个回答这个问题 - 没有正确的答案。

我认为您不应该根据这两个指标来选择框架。除非您正在构建下一个 Facebook,否则两者都将根据您的需求进行扩展。同样,两者都应该满足您的需求。相反,请查看语言和框架的哪些功能对您的应用程序等有吸引力。

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 2012-01-31
    • 1970-01-01
    • 2019-05-14
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    相关资源
    最近更新 更多