阅读更多

29顶
0踩

编程语言
Ruby on Rails团队正在紧张的工作,将Rails迁移到采用Rack的新层次。什么是Rack?Rack为使用Ruby开发web应用提供了一个最小的模块化和可修改的接口。用可能最简单的方式来包装HTTP请求和响应,它为web 服务器,web框架和中间件的API进行了统一并提纯到了单一的方法调用。实现Rack能够让开发者在应用中使用很多现存的中间件部分。这个附加部分让Rails团队创建了Rails Metal,Rails Metal是一个围绕一般Rack中间件的封装wrapper,能够放在Rails请求的前面并使用Rails的session。Metal的出现给让Rails应用的运行速度极大加快,并且能够每秒钟同时处理成千上万的应用!Rails Metal很酷,它让Rails能够使用Rack中间件的强大性能,用来创建最快速的应用程序。

DHH(David Heinemeier Hansson)发表了一篇Rails Metal on the Ruby on Rails的博客,DHH解释了Metal使用的场景:

DHH 写道
Rails Metal可以用于类似大规模投票服务,必须要每秒处理大量请求和提供实时快速的响应,并且逻辑是非常简单的(2次数据库请求和返回一条string)。这种服务目前是由C来写的,但是我们将转换使用Rails Metal来写,能够提供同样的高性能。(如果C写的应用能用Rails来写,说明Rails的速度相当快了)


Ruby on Rails官网今天给出了一个Metal的测试数据:
引用

Rails action

Time per request : 1.244 [ms]
Throughput : 800 request/second

Metal

Time per request : 0.386 [ms]
Throughput : 3000 request/second

Metal表现强劲,测试详情查看:Performance of Rails Metal



Jesse提供了Metal范例代码:

class Poller < Rails::Rack::Metal
    def call(env)
      if env["PATH_INFO"] =~ /^\/poller/
        [[200], {"Content-Type" => "text/html"}, "Hello, World!"]
      else
        [[404], {"Content-Type" => "text/html"}, "Not Found"]
      end
    end
end


class OldPollerController < ApplicationController
      def poller
        render :text => "Hello World!"
      end
end


详情阅读:Ruby on Rails gets down to the Metal

以及Ruby on Rails官网对Metal的介绍:Introducing Rails Metal

推荐阅读:Ruby on Rack
29
0
评论 共 5 条 请登录后发表评论
5 楼 koalant 2008-12-23 10:51
Rails 和 Merb 的性能差别将逐渐缩小了。 不过两者还是有思想上的不同之处。
4 楼 tensiongyb 2008-12-22 22:59
看代码很像python的wsgi中间件
3 楼 鹤惊昆仑 2008-12-22 20:54
rack,错了,不好意思。。
2 楼 鹤惊昆仑 2008-12-22 20:53
rake和sequel是ruby世界里两颗耀眼的新星。
1 楼 liusong1111 2008-12-22 18:27
实际上merb开发者Ezra Zygmuntowicz早就给rails贡献过这个东西:
http://brainspl.at/articles/2008/04/25/hey-rails-nice-rack
后来由rails core team的Josh Peek引入这个玩意,不得不让人联想到政治问题。

不管怎样,对rack的支持,对rails是个大事件。除了性能提高,精巧的rack之上有相当多的中间件和adapter。
rails也可以提供更灵活的功能,比如类似这个:
http://www.javaeye.com/post/772964

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics