点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

高性能 Ruby MVC 框架:Merb

  • 2007-08-30
  • 本文字数:1038 字

    阅读完需:约 3 分钟

对 Rails 性能的争论由来已久。当 Web 应用要处理大量的文件交换或并发连接时,Rails 真的会变得很慢,而这正是 Merb 要解决的问题。来自 Engine Yard Ezra Zygmuntowicz ,从 10 个月前开始开发 Merb (Mongrel+Erb),并在本月的 Ruby Hoedown 大会上做了相关演示。Ezra 本来是在线程安全方面对 Rails 进行一下优化,结果他发现,重新开发一个框架比试图改变 ActionPack(Rails 的 View 和 Controller 部分)要来的简单的多。

Merb 在很多方面都与 Rails 有相似之处。Merb 与 Rails 的区别之处在于:

  • 它没有cgi.rb
  • 它拥有 ActionPack 的一个很干净的实现
  • 使用可配置的互斥锁(Mutex Locks)机制,它是线程安全的(路由机制也是线程安全的)
  • 它的设计简单明了
  • 通过深入研究,可以很容易地对 Merb 的轻量级核心框架进行扩展

关键的区别是:

  • 没有自动呈现(auto-render),控制器 action 的返回值直接返回给客户端。如果需要进行呈现的话,必须显式地调用呈现方法。
  • Merb 的呈现方法仅仅返回一个字符串,相对 Rails 的类似功能来说,这样就允许多次呈现并且有更强的灵活性。
  • PartControllers 支持封装的应用,并且没有太大的性能损失。

Zack Chandler 提供了一个 Merb 示例应用 Merb v0.4 核心已经完成,Ezra 保证它会保持轻量级,并通过插件来提供额外的特性。

下一个版本将提供哪些特性呢?

  • 文档、规范、入门手册
  • 兼容 Rubinius
  • 更多的性能分析(profiling)和优化
  • 更多的工具和便利性

说到性能,Phil Misiowier 发布了 Merb 与 Rails 的详细对比(使用 Swiftiply Nginx )。 Phil 的目的是要测试在真实世界中集群配置的表现。他试图发现在不同的会话管理选项(Disabled,Database stored,Memcached)和日志配置下,分别使用 Rails 与 Merb,并发是如何对应用的运行产生影响的。在所有的测试中,Merb 比 Rails 表现好,而且根据不同的应用服务器和 HTTP 服务器,性能表现要超过 Rails 5% 到 20%。

Phil 得出了下面的结论:

与 Merb 一起使用 Evented Mongrels,在具有高并发性能的同时,还可以为你的投资带来最好的回报 [……] 要保证理解你的应用的使用模式,并且不要过度工程化你的解决方案。在绝大多数情况下,使用标准的 Mongrel 集群运行 Rails,对你来说可能就够用了。

查看英文原文: High Performance Ruby MVC: Merb - - - - - -

译者简介:郑柯,目前任职《程序员》杂志社高级编辑,有志于在中国的软件开发业界推广 Agile 的理念和方法论,笃信以人为本,关注 Ruby,关注敏捷,关注人。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-08-30 19:306573
用户头像

发布了 479 篇内容, 共 145.6 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

还在为产品的客户服务而烦恼?来搭建在线客服中心!

Baklib

大数据开发应用场景解读&需求产品初探

Jackchang234987

大数据 数据开发

字符串哈希

留白的艺术

好的代码是优质资产、莫让代码成为负债

葡萄城技术团队

打破线上社交“不可能三角”,语音社交可以做到既要、又要、还要

擎声科技

音视频 sdk 语音社交 实时互动 擎声Qtt

新品速递|海泰边缘安全网关护航工控数据采集

电子信息发烧客

OptaPlanner场景和示例

成长兔🐇

iMazing传输 iPhone 备忘录和通话记录功能

淋雨

ios iphone

GPU是AI时代的算力核心

Finovy Cloud

人工智能 云渲染

【译】日志:每个软件工程师都应该了解实时数据的统一抽象【三】

Rae

kafka 日志 原理

面试官问我 JS 中 foreach 能不能跳出循环

茶无味的一天

JavaScript js foreach for

Databricks Data Science&Engineering模块介绍

Jackchang234987

大数据 数据产品经理 数据产品 大数据开发 Databricks

NFTScan 与 PANews 在 NFT 数据层面进行战略合作

NFT Research

API NFT 合作 MetaMask

Java: 压缩PDF文档

Geek_249eec

Java PDF 压缩

zookeeper集群之间如何通讯

浅羽技术

zookeeper 通信 集群 ZooKeeper原理 9月月更

leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

okokabcd

LeetCode 数据结构与算法

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

基于边缘计算的渲染新应用

火山引擎边缘云

边缘计算 渲染 边缘云 渲染性能 渲染服务

NFT代币质押公排互助模式系统开发

l8l259l3365

给你一本武林秘籍,和KeeWiDB一起登顶高性能

腾讯云数据库

redis 腾讯云 NoSQL 数据库 腾讯云数据库 KeeWiDB

分享|破世界纪录的OceanBase,如今入选了国际顶会VLDB 2022

OceanBase 数据库

还不知道产品帮助中心怎样制作?,来看看这个吧

Baklib

产品的帮助中心怎么建设?关于编辑帮助文档的几个小技巧~

Baklib

使用WIX 进行商业智能OEM打包

葡萄城技术团队

安利几款简单好用的帮助文档制作工具

Baklib

帮助文档

Alluxio与北京大学计算机学院签署合作框架协议,推动产学研深度融合

Alluxio

开源 云原生 产学研用 Alluxio 北京大学

无线网络安全技术中的王牌标准:WPA到底是个什么东东?解决了什么问题?

wljslmz

网络安全 无线技术 9月月更 WAP

国庆数字游,融云都为您准备好了

融云 RongCloud

重磅发布!Orbit 云原生应用全生命周期管理工具上线啦!

CODING DevOps

云原生 Orbit CODING

第56届世乒赛团体赛开幕!三思近900㎡ LED显示点燃赛事激情

电子信息发烧客

葡萄城受邀参加WOT全球技术创新大会

葡萄城技术团队

高性能Ruby MVC框架:Merb_Ruby_Sebastien Auvray_InfoQ精选文章