Jas*_*son 1 ruby ruby-on-rails ruby-on-rails-3
我已经看到一些开发人员在用户负载增加时必须用Ruby(Java或C)之外的语言编写其rails应用程序的某些部分(后台处理,执行密集型任务)的几个参考(似乎Twitter是一个例子.这个).这些问题可能主要出现在Rails 1.0 -2.0时代.但是,如果确实如此,我想与运行真实生产应用程序的开发人员确认.
根据我的经验,很少(如果有的话)需要用除Ruby之外的语言编写Rails应用程序的服务器端部分.
像Twitter这样的公司遇到的问题远远超出了大多数Web应用程序必须处理的范围,因此为了讨论起见,应该排除这些问题.Twitter是一个极端的异常值.
但是,在大多数非平凡的Rails应用程序中,通常需要后台作业排队和处理,尽管这些作业通常也是用Ruby编写的.
要遵守的一个好规则是,您永远不应该让用户等待,并立即返回对HTTP请求的响应,而不会不必要地占用(Ruby支持的)请求处理器.例如,如果上传大图像并且需要大量密集转换 - 这应该是异步和离线完成的.其他Web应用程序框架和语言也是如此,无论其性能如何.
如果您需要更多后台作业性能,则可以简单地扩展处理作业的工作进程数.对于提供Rails请求也是如此 - 例如,您可以添加更多Unicorn工作进程来处理更多请求.
虽然Ruby确实比C或温暖的JVM慢得多,但它通常"足够快".
如果您使用的是MRI Ruby,那么您应该使用Ruby 1.9.3,它至少是1.8.x系列的两倍,并且略微改进了垃圾收集.JRuby也表现良好,每次发布都能获得更高的性能.
最后,现代Rails应用程序为客户端卸载了大量处理,并且通常包含比以前更多的JavaScript/CoffeeScript.他们经常对View使用更多部分AJAX更新,这导致Rails堆栈渲染所花费的时间更少,而且服务器端Ruby处理的数据更少,更轻,比4年前所见.
您的应用程序面临的最大风险与性能无关,通常是快速变化的需求以及按时交付和按预算交付的需求.任何技术选择都是如此,尽管众所周知Rails可以帮助缓解这些领域.我是从多年来使用过许多框架和语言的开发人员那里写的,包括可测量的更快的语言和堆栈,即PHP,C#/ ASP.NET MVC.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |