说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

五步走战略——Avocado在最初几周内迅速扩大30倍

HTML文档下载 WORD文档下载 PDF文档下载
Avocado(鳄梨)是由前Google Reader的员工Chris Wetherell 和 Jenna Bilotta 开发的一款情侣应用,该应用在几周内扩大了30倍。这篇文章总结的就是通过Avocado这个例子,如何迅速扩大你的移动应用。


Avocado(鳄梨)是由前Google Reader的员工Chris Wetherell 和 Jenna Bilotta 开发的一款情侣应用,该应用能够让情侣们在工作和生活中更加亲密的同时,更好的管理自己的生活。

日前,Avocado首席工程师 Mike Maelzer发表了一篇文章,通过 Avocado的规模在几周内扩大了30倍这个例子,分享了如何演进架构来适应迅速扩大的移动应用。如果你的产品刚刚起步,那么这是一个很好的学习例子。

High Scalability的Todd Hoff对这篇文章进行了总结,他表示,Avocado通过五个步骤使移动应用实现了迅速扩大。

以下为文章全文:

他们最大的教训是一个很好的警示:

如果更早进行扩展操作,将是一个伟大的开始。由于时间压力,我们不得不做出妥协——减少我们四个媒体缩放工具盒。虽然投入更多的硬件,解决了一些规模问题,但还是不理想。

下面是我对文章的一些要点总结:

演化步骤之一——使其工作

刚开始的时候,你只是想把事情做好,几乎不管如何实现它。你知道如何修复需要的地方吗?Avacodo有针对性的测试他们的软件,寻找弱点,以更新、修复它们。这是一个非常明智的渐进过程。每一个大系统都是从一个较小的系统发展而来。

第一个问题:你真的需要进行扩展?Avocado需要扩展是因为他们预计将会有更多的访问量,而且他们不能让那些潜在的用户有一个糟糕的用户体验。所以,处理大流量峰值是一个必须考虑的因素。

他们初期使用一个很典型的设置,为每种功能都配备一台服务器:一个前端服务器(存储:API、Web相关、socket.io、HAProxy、安全通道/SSL加密);一个Redis服务器;一个MySQL服务器;一个批处理服务器(运行各种守护进程)。

副本测试设置用来运行常见的场景,如账户创建。

在测试环境中使用较小的EC2实例即省钱又能发现资源相关的错误。

测试脚本用jmeter建立,模拟每分钟数万的用户注册。

针对找到的薄弱点采用不同的方案进行测试,如添加第二台服务器,并使用服务器上所有的CPU。

数万用户同时注册导致性能下降:

  • 创建新的Python进程引起的发送邮件确认和调整个人资料图片造成CPU峰值
  • 这一些都发生在一个服务器里
  • 一些MySQL查询花费很长的时间
  • SSL是一个重大的CPU负载

演化步骤之二——测试驱动的变化

通过测试结果驱动它们:

添加了一些数据库索引以加快访问。在创建表时,你应该已经知道要添加哪些索引。让你的数据库告诉你什么是缓慢发展的产品,尤其在项目的初期。

使用node.js的异步功能重写邮件验证,而不是每次都分开一个单独的Python进程。吞吐量增长了3-5倍,为什么他们还要首先使用Python的方法?这似乎是一个明显的浪费。也许他们已有了代码,也许他们知道如何在Python上做到这一点?或许在更大的机器上这样做可能无关紧要。但这是一个明智的增量变化。虽说在它不工作时可以进行修复,但仍然有一个很大的隐患。如果其中一个进程死掉,那么用户的注册状态机也将会停止。

SSL被转移到它自己的服务器。同样,这个问题相当明显,一个更大的机器可以无视这个问题,但它在一个服务器上更容易开始。

促进四个新实例分配用于调整图像缩放。在促进后,移除这些实例。用一个好的策略来处理预期的流量高峰。

演化步骤之三——生产促进转变

随着我们的生产经验越来越丰富,我们可以看到很多问题正在变成那些奇怪的、难以预测的类型,似乎只能进行很糟的修复。

由于在升级监控警报过程中响应时间慢,所以添加了前端服务器。监控完成后,最终增加了15台服务器。

我们注意到在较大的EC2实例中,只有一个CPU被使用,node.js只是个单处理器解决方案,而每台主机上HAProxy也只被路由给一个实例。由于要读取一个新的配置,需花费几秒的时间重新启动HAProxy,所以他们创造了一个冗余的HAProxy服务器,用来减少停机时间。

ELB被用来将流量路由到两个HAProxy服务器以及处理SSL,这将减少代理服务器数量并节省资金。

这引起了多个服务器socket.io的问题,用户需要用一台服务器维护一个会话。所以他们转向粘性会话,这需要一些繁琐的变化。

有趣的发现:Websockets并不适用于所有的蜂窝网络。因为这是一个移动应用程序的关键。同时,ELB不支持websockets。所以他们使用XHR-polling。一个令人惊讶的命运转折。

看起来有很多socket服务器。为了减少被使用的数据库连接池的数量,最初每个socket.io服务器有一个数据库连接,排队到数据库的工作,通过socket.io,8个CPU每个要使用60%的性能。而在每个服务器实例中使用2到10个数据库连接池,可让CPU使用率下降3%,并显著改善相应时间。

为什么不从一开始就使用连接池?这是按标准来的。我很惊讶他们没有使用连接池,但会有各种各样的问题,关键并不是这问题,而是你发现并克服它们。

演化步骤之四——走向全球

世界各地都存在“移动情侣”,所以他们调整了在世界各地推出的服务器,通过延迟指导亚马逊路由。这是多么疯狂的一件事。在同一时间推出一个国际版本将是一个巨大的交易。现在,它只是你要做的另一件事。

移动性能是关键,但他们是否应该较早走向全球?这将是疯狂的举动,在你走向世界之前,你必须有运作系统的相关经验。

演化步骤之五——现在使其更好地工作

在处理初始推广负载后,要了解系统是如何运作的,以及如何解决问题,现在的时间去考虑自动化和自动部署策略。一开始就实施自动化是很复杂的事情,因为那时候你还不知道它应该如何工作。要有更完善的增量思维。 (王旭东/编译 仲浩/审校)

本文来自: High Scalability

“ 第五届中国云计算大会 ”将于2013年6月5-7日在北京国家会议中心隆重举行。猛击报名! 

相关活动已经火热启动:

2013中国云计算大调查,每周大奖等你拿! “ 

Innovation Cloud 2013云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加! 

利用delphi美化你的菜单 面向组件的系统开发方法-Delphi资料 强大的树型编程控件TeeTree1.01-Delphi资料 确定MEMO控件中的当前行和列-Delphi资料 让字体左、右对齐-Delphi资料 如何给TListBox加上水平的滚动条?-Delphi资料 如何快速选择一个组件的父亲-Delphi资料 如何用Delphi编写自己的可视化控件 如何用VB创建控件-Delphi资料 生成程序组和项-Delphi资料 实现超级链接-Delphi资料 实战Delphi数据网格色彩特效 使dbgrid的某几笔资料变色-Delphi资料 树形图(Treeview)的使用概述-Delphi资料 透明FORM-Delphi资料 为列表框添光彩-Delphi资料 限制FORM的大小-Delphi资料 用Delphi开发分隔线组件 用Delphi设计拨动、跳线开关组件 用Delphi 设 计 拨 动、 跳 线 开 关 组 件 用Delphi实现JPEG格式图像的显示 用Delphi制作动态有声标签 运行时生成控件-Delphi资料 在DBGRID中实现COPY、PASTE功能-Delphi资料 在Delphi程序的About窗口中建立URL连接 在Delphi中利用Tbatch组件完成数据批处理 在Delphi中巧改窗体文件实现控件数组化 在Delphi中实现不同风格的SPEED和BUTTON 在Delphi中实现类似VB中的控件数组。 在RichEdit中的串查找-Delphi资料 在按钮中快速启动程序-Delphi资料 为什么用oledbadapter不能更新数据库阿? 软件陷阱问题 请问哪里有VTune Profiler下载?据说它能分析VC代码中各函数所占用的开销 在weblogic7.0上面jsp文件运行问题 请教关于打印遇到的问题 谁能个--报表例子(水晶报表。vb.net)--报表的数据源要是动态生成的。 利用WMI管理WINDOWS 请教:如何在chm帮助文件中执行应用程序。谢谢 Weblogic+Mysql的Jsp/Java程序的数据库该怎样连接?? 在java代码中引用php的变量?请问如何写? tclientdataset问题 急!!!!VFP触发器取值问题 怎么样才能卸载REDHAT8.0下的XMMS,而装7.3下的XMMS? 请教一个有关于对话框上控件重画的问题!谢谢! 有谁知道上海高程查分方法?急!!! 请教OleDbDataReader的用法 请教一个有关于对话框上控件重画的问题!谢谢! 请教一个简单问题,显示图形滞后的问题,有人回答过,但不正确。谢谢 大家有没有见过IIS不支持数据库的? 1700--2100 之间的手机,请大家帮我推荐一下,在NOKIA,MOTOROLA,厦新,波导……中选择!! 请问谁有?divx的资料?能提供下载也行! 请问如何把从数据库中读出来的数据显示在在线编辑器里? 请教:log,乘方(pow(x, y))运算用C语言如何实现? 如何在Domino designer中添加图像资源,在线等候 所有分求asp2dll破解版,急!在线等待!! zhwdan 还是朋友!多谢你了!快来看看啊! 多文档程序,怎样在选择某一菜单命令时使窗口最大化且不能改变大小,而不是在PreCreateWindow函数中设定?在线等待 LINUX 好多问题呀! 给高分 html文件在Unix系统下有大小写之分吗??我只知道他对CGI有大小写之分。在线等待。 在线等待 怎样使单文档程序中间凹下去的部分 变成 不是凹下的,使得整个界面看上去是一个平面的~~~谢谢~~~ 存储过程怪问题 哪个更划算? 关于delphi的ISAPI开发 用标准的C++怎么样才能调用Win系统API? 一点看法 自动运行的程序!!! 月薪2000加提成,怎么样? 请各位兄弟帮个忙 谁有JAVA与模式的电子版? 怎样更改一个按钮的标签?怎样知道我按的按钮是哪一个?(答对结帖) 请教关于远距离局域网连接的问题 如何遍历DataList中的TextBox? asp连数据库的问题? 在Linux 7.03中怎样在文本模式与X Window模式转化。 关于MS SQL里的时间问题,请帮忙 teechart pro5 的正式版哪里有下,能用的话马上给分. 参数 急急急急急!!!!!!!!!!!!! 为什么我用JSP做出来的程序输出的文字都是乱的文字呢? 怎么停用一个触发器? 怎样在Excel中插入总和 赵本山小女儿甜美私照曝光 揭秘奢华豪素颜女神王丽坤身材衣品鉴定 网友:不盘点各大车展车模造型 挤深沟超短裙整邓雯心三栖发展自爆:范冰冰是学习榜样彭于晏刘诗诗半裸玩湿吻 盘点女星喷鼻苍井空自爆是处女 曝光娱乐圈自称仍是王菲罕见出道旧照被早年搭档曝光(图)盘点曾让赵薇被封票房毒药的十部影片《盛夏晚晴天》热播 杨幂刘恺威服装大《中国合伙人》5月18日全国公映 邓电影《倾城》5月10号上映 黄觉与磐《疯狂原始人》经典画面大合辑高群书评"值得看五遍&qu《钢铁侠3》连破5项纪录首日便斩获1韩国男团Notice首次抵京 机场遭刘涛《勇敢爱情》MV上线 首试水诸多《江南Style》男孩因混血遭韩网友米兰达性感亮相春季嘉年华派对张柏芝携子贺好友婚礼 小家伙调皮献吻谢娜庆祝33岁生日秀甜蜜 张杰送玫瑰熊黛林心烦意燥逆线行车 透露心声欲“四招唤醒工资卡里的闲钱防震减灾摄影比赛启事铜陵市规模以上高新技术工业企业增加值安庆116名残疾人参加计算机培训乌民间武装关键人物大起底莎娃夺冠后要喝香槟庆祝 称与新教练是传承与融合种植罂粟800多株 亳州利辛一七旬老下雨路面湿滑 小货车失控翻进路边麦田“修正液毒死小白鼠”视频再被热传点烟器“乔装改扮”难过机场安检关美因茨主帅功成身退世相百态德国汉学家顾彬:中国还欠缺代表自己的鸿海宣布加薪 吴敦义:展示郭台铭的豪关于印发《2014年度中国注册会计师东海部分水域17日起将实施临时交通管乌克兰东部公投结果12日公布 美国重中国买家2700万美元摘走莫奈《睡莲乌克兰东部公投结束 “是否独立”投票糗!歹徒闯派出所抢枪 新北一窝囊警察
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘