`
javasee
  • 浏览: 975838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Ruby on Rails真实案例三则

阅读更多
(正如前一篇文章里所许诺的,这里将列出三个采用RoR开发的真实案例。以下内容出自《应用Rails进行敏捷Web开发》一书第22章。)

22.7 案例分析:每天运行的Rails

要证明Rails的伸缩性,最好的办法莫过于考察一个确实有效伸缩的应用程序。在这一节中,我们将考察三个真实应用遇到的性能问题,以及它们如何解决这些问题。

37signals开发的Basecampwww.basecamphq.com

Rails就诞生于Basecamp项目。这是一个基于web的项目管理工具,它的用户需要每月付款。Basecamp服务器为成千上万的用户提供项目管理所需的功能服务。

在为Basecamp进行性能优化时,最大的难题在于很难使用缓存:每个人都来自不同的公司、有着不同的权限,因此看到的数据也各有不同。(不过从好的方面来说,只有那些拥有注册账号的人才能访问Basecamp,所以不用担心它会被Slashdot介绍而带来一大堆未授权的用户。)

Basecamp每天处理大约40万个动态请求(从看到登录页面开始算起,直到浏览项目记录板,所有的请求都包含在内)。在无法做任何缓存的情况下,这个负载量是相当可观的。目前有两台web/应用服务器来处理这些请求,每台服务器都有两个至强2.4GHz CPU2GB内存,运行15FastCGI进程和50-100Apache 1.3.x进程。服务器的负荷比通常在0.51.5之间。

MySQL数据库服务器是独立的,但37signals的另外两个应用程序(Ta-da ListBackpack)也使用这个数据库。数据库里的记录数在十万级别上,最大的一张表有大约50万条记录。虽然要为三个应用程序提供服务,但数据库服务器的负荷比通常在0.10.3之间——数据库不是Basecamp的瓶颈所在,这是一个好消息。如果当前的两台服务器不堪重负,只要再加上新的服务器就可以解决问题,而且我们也确实这样做了。

Robot Co-op开发的43 Thingswww.43things.com

43 Things是一个用于“追踪人生目标”的站点。你可以在这里写上你的目标,譬如“我要学日语”,围绕着这个目标撰写blog,并阅读别的有同样目标的人在干什么。这个应用程序的一部分需要身份认证;更多的部分则是公开的,允许未经授权的用户访问。公开内容访问量常有剧烈的变化;不过还好可以对它们进行缓存。

缓存的存储策略采用了memcached——为了改善性能,这个网站大量使用了memcached。由于将用户的session数据保存在memcached中,任何一台服务器都可以在任何时候处理来自任何用户的请求,而不需要任何session同步措施。对于开销较大的数据库查询,其结果也以ActionRecord对象的形式被序列化到memcached中,并打上适当的时间戳。

上线三个月之后,43 Things每天处理约20万个动态请求。它使用了两台web/应用服务器,以及一台专用的数据库服务器,三台机器都有两个3GHz的至强CPU2GB内存。两台web/应用服务器上分别运行着Apache 1.3.x服务器和25FastCGI进程。服务器负荷比很少超过0.3CPU空闲时间经常在80%左右。

抵押处理引擎(www.rapidreporting.com

Rapid Reporting将他们的“身份及收入验证引擎”运行在Rails系统上。美国1000强的抵押担保商有80%都使用这套引擎,每月处理2百万次抵押申请交易。

一开始,Rapid Reporting希望检验Rails是否能够胜任,因此他们从10台集群机器向一个应用程序进行压力测试,每秒发起3千次请求。真实的应用程序大概需要每秒处理300次请求,并执行一系列的业务逻辑。此外,处理抵押业务必须遵循格莱姆-布里勒法规(GLBA),因此很多地方都需要检查授权许可、生成查账索引。

应用程序使用PostgreSQL作为数据库,lighttpd作为web服务器,每台应用服务器运行大约10FastCGI进程,在一台虚拟服务器上用IP隧道技术实现负载均衡(参见http://www.linuxvirtualserver.org/VS-IPTunneling.html<!--[if !supportFootnotes]-->。使用这种部署方式,就可以随时增减FastCGI进程,而不必重启web服务器。由此又可以实现进程管理的自动化:用一个守护进程监视负载情况,当负载达到峰值时分配更多的FastCGI进程。

这是一个真正的商业应用。这些东西听起来也许很乏味,但是否了解它们也许会决定你是否能够得到客户的认可。
分享到:
评论

相关推荐

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    举例理解Ruby on Rails的页面缓存机制

    Ruby on Rails 是一个流行的 web 开发框架,以其高效和简洁的代码著称。在 Ruby on Rails 中,页面缓存是一种优化性能的技术,尤其适用于那些内容相对静态或者对用户个性化要求不高的网页。页面缓存的工作原理是将...

    Ruby on Rails 学习案例

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。本学习案例将带你深入理解Rails的核心概念和技术,帮助你成为...

    ruby on rails 实践

    本书《Ruby on Rails 实践》是一本指南,旨在向读者介绍Ruby on Rails框架的使用,并通过实践案例帮助读者掌握其全貌。本书适合已经了解HTML、JavaScript和CSS,并且对Ruby基础语法有所认识的开发者。即便读者没有...

    Wrox - Beginning Ruby on Rails

    ### Wrox - Beginning Ruby on Rails 知识点详解 #### 一、书籍基本信息与版权信息 - **书名**:《Beginning Ruby on Rails》 - **作者**:Steven Holzner - **出版社**:Wiley Publishing, Inc. - **出版地**:...

    Ruby on Rails环境搭建(基于WinXP & RadRails)

    在本教程中,我们将深入探讨如何在Windows XP操作系统上搭建Ruby on Rails开发环境,特别强调使用RadRails作为集成开发环境(IDE)。Ruby on Rails(RoR)是一个强大的Web应用程序框架,它基于Ruby编程语言,提供了...

    Ruby.on.Rails.Enterprise.Application.Development

    2. **编程阶段**:本书将详细介绍如何使用Ruby on Rails进行编码,涵盖模型、视图、控制器等方面的知识点,并通过实际案例来演示具体操作。 3. **扩展性考虑**:随着应用规模的增长,如何保持系统的可扩展性是一个...

    基于Ruby语言的Ruby on Rails项目及其代码方案

    ### 基于Ruby语言的Ruby on ...这不仅是一个基础的学习案例,也是进一步深入学习Ruby on Rails框架的良好起点。随着对框架了解的加深,开发者可以尝试更复杂的业务逻辑和更高级的功能,从而构建出更加完善的应用系统。

    ruby on rails web敏捷开发第四版(英文)

    《Ruby on Rails Web 敏捷开发第四版》是一本面向 Ruby on Rails 3 的详细指南。它不仅覆盖了 Rails 的基础知识,还深入探讨了一些高级主题。通过本书的学习,读者将能够建立起对 Rails 框架的强大理解,并掌握如何...

    Ruby on rails 教程

    ### Ruby on Rails 教程知识点概述 #### 一、引言 《Ruby on Rails 教程》是一本全面深入介绍Ruby on Rails框架的书籍。它不仅涵盖了Rails的基础知识,还深入探讨了高级技术和最佳实践,是众多开发者推荐的学习资源...

    学习Ruby on Rails进行Web开发(英文版)

    本资料介绍了使用Ruby on Rails进行Web开发的相关知识。本书从对Rails的初印象讲起,包括其安装的困难到后来发现其使用的便捷性。接着详细介绍了Rails的开发环境、版本控制、应用部署等内容,通过实际案例逐步引导...

    ruby on rails入门基础

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发更简洁、高效。Rails强调“约定优于配置”,大大减少了开发者在项目设置上的工作...

    ruby on rails 笔记(陈刚)

    从给定的文件信息来看,这份文档是陈刚关于Ruby on Rails的学习笔记,旨在帮助初学者更好地理解并掌握Ruby on Rails这一流行的Web开发框架。以下是对文档中提及的关键知识点的详细解析: ### 安装与配置 #### Ruby...

    Ruby on Rails实践之路给PHP和Java开发者的书

    Ruby on Rails,简称RoR,是由David Heinemeier Hansson基于Ruby语言开发的一款开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,使得开发者能够更快速地构建功能丰富的web...

    jRuby On Rails WEB2.0

    3. **实战项目**:通过具体的Web 2.0项目案例,读者可以亲自动手实践,加深对jRuby on Rails的理解和应用能力。 4. **前沿技术**:本书覆盖了当时最新的jRuby版本和Rails框架特性,让读者了解并掌握最前沿的开发技术...

    ruby on rails 学习资料汇总

    本资料汇集了关于Ruby on Rails的学习资源,尤其是《Rails Recipes》这本书,它包含了丰富的实践案例和解决方案,适合初学者和进阶者参考。 在Rails框架中,"源码"标签意味着我们将深入理解其内部工作机制,包括...

Global site tag (gtag.js) - Google Analytics