首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

可伸缩的高性能 Rails 应用程序开发和部署实践(1)

可伸缩的高性能 Rails 应用程序开发和部署实践(1)

简介Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可实现非常易用的持久化,Github 和 Rubygems 上丰富多样的 Rails 插件是 Rails 开发高效率的又一有力保障。Rails 是一个真正彻底的 MVC(Model-View-Controller) 框架,Rails 清楚地将你的模型的代码与你的控制器的应用逻辑从 View 代码中分离出来。Rails 开发人员很少或者可能从未遇到过某些代码该放于哪一层的困扰,在 Rails 的世界中,你的代码的职责很清楚的被定位,你可以轻松的决定出它们应该位于哪一层。Rails1.2 之后的版本开始支持 Rest Service,通过这些内嵌的特别,你在开发你 Web 应用,展现给用户 HTML 的页面的同时,几乎不费吹灰之力,就可又提供基于 Rest API 的 Web Service,另外,你也可以方便的像使用基本数据的 Model 一样的去消费第三方提供的基于 Rest API 的 Web Service。
通过搜索引擎,你可以找到很多类似于用 Ruby On Rails 十五分钟创建 Blog 系统等类似的使用 Rails 进行快速开发的文章。 Ruby On Rails 对于敏捷开发过程的也是非常友好,在 Rails 框架中集成了 Unit Test, Function Test 对你的 Model 和应用逻辑进行测试。通过这些,你不需要再安装任何插件或者程序库便可方便的进行测试驱动开发,通过 Watir 的支持,你可以轻松的用 Ruby 代码实现基于浏览器的自动测试。 另外,在 Rspec 等插件的支持下,你甚至可以进行行为驱动开发(Behaviour Driven Development),让你的测试代码变得更加有意义,也更加容易被客户所接受。
虽然 Rails 的优点你可以一下子列出很多,你也可能会拿出用 Java/Hibernate/Spring/Struts 和 Ruby On Rails 开发同样功能 Web 应用程序的代码行比较来举例,或者提供进行 Java/Hibernate/Spring/Struts 和 Ruby On Rails 开发所需要接受的培训资料的书籍的对比照片来举例,但我们都不可避免的会面对可伸缩性(Scalability)的问题。很多 Web 应用会面对大量的用户群,这样的应用会遇到很大的并发带来的性能的考验。 Rails 在这一点上,并没有让所有人信服,依然有很多的系统架构师和工程师对 Rails 是否适用于开发高负载高并发的 Web 应用持怀疑的态度。但不可否认,随着 twitter, friends for sale,basecamp 这类大负载量的应用的出现,Rails 也越来越被认识是可扩展的,这些成熟的应用也告诉我们,开发出同时处理数百万用户请求的 Rails 应用是可能的。Ruby On Rails 框架在可伸缩性上为人诟病无非集中于以下几点,Ruby 语言本身性能问题,Ruby On Rails 缺少成熟的高性能的应用服务器,对数据库扩展的支持,互联网上缺乏可熟可靠的网络提供商等等。 本文将从这些点出发,介绍具可伸缩性的 Rails 应用程序的部署架构,以及开发高性能的 Rails 应用程序的一些比较好的具体实践。
通常的 Web2.0 应用,特别是高负载的应用,除了 Web 和应用服务器选择 , 负载均衡这类部署需要面对的问题之外,通常还必须得面对后台任务,高性能全文搜索这些开发上的问题,这些在 Java 或者 PHP 这些比较成熟的开发环境里面都有比较成熟的方案,开发和架构人员通常都会有多种选择,结合具体应用做出架构设计。在新兴的 Rails 社区,这些还并不完善和成熟,本文将介绍一些高性能可伸缩的 Rails 应用程序的开发和部署的具体实践,针对通常 Web 2.0 网站所遇到的具体问题做出分析和解决方案,旨在给 Rails 开发者提供具体的参考。本文将介绍的内容可以用下图来综合表示:
图 1. 本文总体结构
返回列表