透明思考@CSDN

思考着的程序员,程序员的思考

熊节ID:gigix
939735次访问,排名30好友0人,关注者11
gigix的文章
原创 361 篇
翻译 1 篇
转载 3 篇
评论 1822 篇
最近评论
shendl:public static AuthorizationService getInstance()

{

if(null == instance){

instance = new AuthorizationService();

}

return instanc……
lishali12345:你真的需要一直那些所谓的大师来摆弄吗?
我只是一个简单的读者而已,你总是拿一些所谓的名人大家的话来盖人,一个目的无非是想增加你自己说话的分量,其实你自己的话就压根没什么分量,基于对自己的不自信才会导致你在所有的文章中,开头以及结尾经常借大家之口来表达你要意淫的某些观点。
实在不忍心那些大家,经常就从你口之中说出来啊!
carry1002:你好,我是猎头公司carry,我们服务的对象主要是世界500强企业,现在有thougthtworks公司的职位机会,TW是敏捷方法领域的领头羊,有兴趣的朋友请和我联系,我的msn:carry.1@hotmail.com
zdonking:很好,感谢gigix前辈的经验分享。
zhouxz1026:不错!
蜂胶
蜂蜜
文章分类
收藏
    相册
    我的图片
    测试
    Arrays.asList("Rod", "Jane", "Freddy");(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Ruby on Rails真实案例三则收藏

    新一篇: [讨论]谈谈Ruby on Rails的性能问题 | 旧一篇: [讨论]Ruby/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。使用这种部署方式,就可以随时增减FastCGI进程,而不必重启web服务器。由此又可以实现进程管理的自动化:用一个守护进程监视负载情况,当负载达到峰值时分配更多的FastCGI进程。

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

    发表于 @ 2006年06月27日 16:07:00|评论(loading...)|编辑

    新一篇: [讨论]谈谈Ruby on Rails的性能问题 | 旧一篇: [讨论]Ruby/Rails是虚妄还是真实

    评论

    #纯月 发表于2006-06-27 17:32:00  IP: 222.186.123.*
    看了,这些程序的确很成功。但是这些系统显而易见是经过精心设计的。对于很多初学者,或者小规模软件开发者,很难熟悉这些优化的过程。 我想一但他们掌握优化的细节,用Python(google的最爱)或者J2EE同样可以开发出性能更高的程序。而且用户该如何应付日本人的Rudy的语言和Rails的各种调试技术呢?
    #ksk 发表于2006-06-27 22:49:00  IP: 219.140.246.*
    这幅图能代表你的观点吗:)

    http://blog.csdn.net/snakeguang/archive/2006/06/09/782241.aspx
    #whxbb 发表于2006-07-03 11:05:00  IP: 218.249.105.*
    现在正在用rails开发,但是对他的性能越来越不放心了,虽然有你提的这几个网站摆在面前,但似乎不能说明问题,比如yahoo也用php,可是他们用的php都是向zend公司定制的,作为小开发团队,我们实在没有太多的功夫去关心业务之外的东西。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 透明@CSDN