Ruby Web框架

JGW Maxwell在2011年底做了一个 Ruby Web框架的并发处理能力测试 ,还做了node.js的对比测试。用250个并发去做压力测试,后端使用MongoDB数据库,总共跑完10万个请求,测试结果如下:

Web框架 并发模型 吞吐量
Rails 多进程 531 request/s
Sinatra 多进程 576 request/s
Sinatra::Synchrony 纤程 1692 request/s
Goliath 纤程 1924 request/s
Cramp Event IO 3516 request/s
node.js Event IO 3100 request/s

纤程IO模型的性能是传统多进程模型的3-4倍,而Event IO则是多进程的6-7倍。值得一提的是Ruby的Event IO框架Cramp甚至性能超过了node.js。看来并发性能差的原因并不在Ruby。

我们看一个 Ruby web框架请求处理性能评测 ,这个评测不访问数据库,也不测试并发性能,主要是测试框架处理URL请求路由,渲染文本,返回结果的处理速度。

Web框架 处理速度
Rack 1570.43 request/s
Camping 1166.16 request/s
Sinatra 912.81 request/s
Padrino 648.68 request/s
Rails 291.27 request/s

这里我想简单介绍3个Ruby轻量级框架,性能都远远超过Rails,很适合做Web Service:

  • Sinatra

    Sinatra本身也是Ruby社区非常流行和著名的轻量级Web框架,核心源代码不超过1000行,文档只有1页。对于Rails开发者来说,花了几个小时,就可以快速使用Sinatra开发Web Service了。Sinatra对多线程支持的非常好,可以用rainbows 来跑多线程Sinatra,IO并发处理能力很好。Github也是用它来提供开放API服务的。我自己写了一个 Sinatra的项目模版 ,如果你用Sinatra开发Web Service,可以参考。

  • Padrino

    Padrino是一个基于Sinatra之上的轻量级Web框架,在Sinatra基础之上提供了命名路由,模块化项目组织,页面helpers和generators等等。Padrino是一个高度模仿Rails的框架,API的命名和Rails很像,Rails开发者花1-2天看看文档就可以快速上手开发了。Padrino相比Rails易学易用,多线程支持良好,性能比Rails好很多,开发Website推荐使用。我自己的网站也是用Padrino开发的,源代码在: robbin_site

  • Goliath

    Goliath是一个Ruby的纤程开发框架,性能非常好,作者本身是在开发PostRank产品过程中开发的Goliath。PostRank是一个用户社交行为实时跟踪工具,需要很高的性能来支撑,PostRank被Google收购了,作者现在在Google工作。Goliath适合用来开发对性能非常敏感的Web Service或者real-time的应用,但使用Goliath有一些门槛,你不能使用普通的阻塞IO库,必须使用作者封装的一些纤程的库。

比较适合写Web服务接口的轻量级Web框架我推荐两个:Grape和Sinatra,两个的区别主要是:

Grape是个纯粹的写API的框架,提供了很多写API很方便的功能,用Grape写API很爽,应该是首选,他只提供json/xml/txt格式输出。

Sinatra是个相对完善点的Web框架,带有模板渲染功能,但单纯写API的话,没有Grape爽。不过如果你的API Server有可能输出HTML页面片段,需要模板功能的话,还是Sinatra更合适,否则用Grape在代码里面拼字符串还是很麻烦的事情。

Grape和Sinatra都是基于Rack之上很轻量级的封装,我做了框架处理请求速度的测试,以及多线程并发的简单测试,基本上性能差异非常小,Grape稍微快一点点,但不超过5%。

Ruby Web框架

时间: 2024-08-29 16:10:09

Ruby Web框架的相关文章

开源Web框架PHP与Ruby on Rail的比较

PHP与Ruby on Rails两大阵营均拥有大量各自的忠实粉丝.拿两者作比较,本身就是难以取舍.无论谁赢了,都会引来对方粉丝的口水.受此影响,在两者选其一这个问题上,开发者通常会显得犹豫不决.这篇文章的出发点虽然是比较,但并不是一边倒式地唱盛唱衰,而是辩证式的综合对比.没有好坏,适合自己的才是最好的. 实际上,拿PHP与Ruby on Rails比较是个伪命题,是不公平的.相比于Ruby on Rails语言加框架的完整性,PHP仅是一门编程语言.你看,PHP已经输在起跑线上了.但PHP拥有

开源Web框架PHP与Ruby on Rail对决

PHP与Ruby on Rails两大阵营均拥有大量各自的忠实粉丝.拿两者作比较,本身就是难以取舍.无论谁赢了,都会引来对方粉丝的口水.受此影响,在两者选其一这个问题上,开发者通常会显得犹豫不决.这篇文章的出发点虽然是比较,但并不是一边倒式地唱盛唱衰,而是辩证式的综合对比.没有好坏,适合自己的才是最好的.     实际上,拿PHP与Ruby on Rails比较是个伪命题,是不公平的.相比于Ruby on Rails语言加框架的完整性,PHP仅是一门编程语言.你看,PHP已经输在起跑线上了.但P

调查:Java程序员最亲睐的Web框架

这是关于Java的第二个调查,第一个调查请点这里查看. 这一次,我们要讨论的是web框架. 只有少数几种语言像Java一样提供了各种各样的web框架,上面的统计图就是一个证据.下面是其他开发者所使用web框架列表: Spring MVC/Spring Boot :Spring可以帮助各地的开发团队构建简单轻便.快捷灵活基于JVM的系统和应用程序 Vert.x :一个用于在JVM上构建反应式应用程序的工具包 JSF :官方的Java EE web框架 Play Framework :更容易地使用J

转-基于NodeJS的14款Web框架

基于NodeJS的14款Web框架 2014-10-16 23:28 作者: NodeJSNet 来源: 本站 浏览: 1,399 次阅读 我要评论暂无评论 字号: 大 中 小 摘要: 在几年的时间里,Node.js逐渐发展成一个成熟的开发平台,吸引了许多开发者.有许多大型高流量网站都采用Node.js进行开发,像PayPal,此外,开发人员还可以使用它来开发一些快速移动Web框架. 下面就介绍14款基于Node.js的Web应用框架,大家不... 在几年的时间里,Node.js逐渐发展成一个成

从零开始搭建论坛(一):Web服务器与Web框架

之前用 Django 做过一个小的站点,感觉Django太过笨重,于是就准备换一个比较轻量级的 Web 框架来玩玩.Web.py 作者已经挂掉,项目好久没有更新,所以不准备用它.而 Flask 也是一个成熟的轻量级 Web 框架,在 github 上有众多的 Star 和 Fork,文档和扩展也很丰富,值得学习. 学习一个框架最好的方式就是用框架做一个项目,在实战中理解掌握框架.这里我用 Flask 框架,使用 Mysql 数据库做了一个论坛系统.麻雀虽小,五脏俱全,论坛效果图如下: 下面是论坛

极简主义(Minimalist)Web 框架大汇总

极简主义(Minimalist)Web 框架大汇总 罗列了一系列极简主义的框架(简单.轻量级),按编程语言分好类,按字母顺序排序. 列表 CSS 框架 C 写的 Web 框架 PHP 写的 数据库 框架 前端 JS 的框架 Go 写的 Web 框架 Haskell 写的 Web 框架 Java 写的 Web 框架 JavaScript 写的 Web 框架 Lua 写的 Web 框架 Node.js 写的 Web 框架 Perl 写的 Web 框架 PHP 写的 Web 框架 Python 写的

浅谈五大Python Web框架

http://www.csdn.net/article/2011-02-17/292058 导读:作者飞龙写了一篇<浅谈Python Web框架>,文中他介绍了几个Python Web框架和自己对选择框架的分析.在他看来,用Django来快速开发一些Web运用是很不错的选择.以下是文章内容: 说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: http://wik

nginx+unicorn部署ruby web环境

最近接手了一个ruby的web项目,由于之前没有接触过ruby以及相关的web开发,而且项目当中文档缺失,所以在部署该项目的时候很是走了一些弯路.最后参照多篇ruby on rails的开发环境部署,以及学习了下ruby当中的gem/bundler等的关系,成功部署项目.在这儿记一下,算是一个小的总结,也可以对ruby web开发刚入门部署环境时提供一个参照. 我们的项目是基于padrino,如果是基于rails的项目,部署应该也是差不多的. 1.安装ruby 由于系统中可能有多个ruby相关的

FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性能相比难说

摘自:http://www.infoq.com/cn/news/2017/06/freewheel-experience-on-go Go语言是FreeWheel公司目前主要力推的一个方向,在其看来,面向服务的架构的大环境中,Go非常适合做一些功能相对独立.功能比较明确的微服务的语言.在结合已有的各种编程语言,计算框架(如Hadoop.Java.Ruby.C++)的基础上,FreeWheel把Go语言定位成用来实现轻量级服务或API的缺省编程语言,将之与用来完成更小粒度工作的Python结合在一