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

五步走战略——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云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加! 

玩转Google I/O 2015:Android M、IoT、Glass 2.0、VR、ATAP ARC中Retain Cycle揭秘 失控与逆转!企业移动化2.0时代下如何求变? 玩转物联网之MQTT 专访都灵创客教育奚炎:被忽视的Maker教育 13岁iOS开发者:Swift开发Sprite Kit游戏实践 专访豌豆荚「自动装」开发团队:无需Root即可批量点击「下一步」 iOS项目的持续集成与管理 《近匠》谛听科技,探索智慧家庭的智能网关 【简讯】Python 3.5.0b1发布 《算法的乐趣》作者王晓华访谈:多看、多做、多想是秘诀 专访李祎:Java在Testin的技术应用 React首部经典图书推荐:全程经典实例,360度剖析React.js 再做一个Android!Google发布第二代VR眼镜Cardboard Go语言开发常见陷阱,你遇到过几个? 奏响年度最强音 第七届中国云计算大会日程全公布(表) 【CTO讲堂】请在还年轻的时候,尽量多踩些坑 以细分使用场景为突破点 探究墨迹天气的体验创新 熟练成就创造——MathWorks全球副总裁Richard Rovner、产品市场经理赵志宏专访 Objective-C编码规范:26个方面解决iOS开发问题 豌豆机器小组发布最新WRTnode2R,支持华为Liteos、QQ物联与AllJoyn [新书推荐]Node.js项目实践:构建可扩展的Web应用 【简讯】Perl 5.22.0 发布,大幅改进代码! 【征文】特别策划——群雄逐鹿共话新型数据库 针对DCloud侵权质疑,APICloud发布声明 《近匠》小鱼天气,中国风与细粒度空气质量检测 Xcode 7 beta发布,Swift 2.0带来哪些新变化? 【有奖征集】MDCC 2015演讲议题征集全面启动 Swift语言那些鲜为人知的特性 《开源者说》08期:聊聊Java那些事儿 专访唐成:从小工到专家,PostgreSQL的修炼之道 关于文本框的问题 在菜单项中加入小图标 求救: 这是什么语言!!!! "::="??? 100分请教,如何将DBGrid中某字段为空的记录全部删除, 和过滤掉重复的记录? 繁体版的软件选什么字体? 关于虚拟主机的问题 DELPHI7带了一个挺不错的工具:ModalMake 6.2 如何得到文件控件中的值? SOS!!!在线等待,立即给分 关于密匙的问题? 关于Kylix unix系统有中间件吗? 架設smtp的問題??? FastNet组件 怎样在sql语句中进行数据转换啊 在线等 ,,,怎样获得汉字的编旁 在程序中用函数设置session的时效、存放路径 如何在ms-dos下降低cpu的运行速度?(汇编,C高手请进) 求解决链表问题 请教:如何在linux嵌入系统中编写外设驱动程序.谢谢 Micrsoft JDK nmake生成的EXE文件反编译问题!!! 多态问题 专业调查:军训练什么,学到什么!!????? 使用IS for Delphi 4制作安装盘.安装时时出现401号错误(字符串变量不够长) 介绍几本VC入门的好书 大家谈谈,数据库应用程序如何设计及使用类! Oracle的登录问题! 请问如何在VC中取得传入的参数? 现在的浏览器还支持不支持applet啊?高手救我!--------怎么写一个applet兼容更多的浏览器? 请问那里有这种工具??近来看看!! 请capboy等写过filter的各位前辈指点 利用DW制作一张确定最佳分辨率为800*600或者1024*768的页面, 急 求助: 怎样获得系统当前可用的字体? 如何打印FormView? 如果你是VC高手,对COM有深入了解,欢迎! 我今天看了我英语过级的公布成绩,我得了一个天险数字60。5分,请问。。。。。? 谁有linux下的mod_webapp.so DW UltraDev里rs.source="select * from stu where banci=request.QueryString("banci")这样是不是不行? Microsoft JDK nmake生成的EXE文件反编译问题!!! 各位大虾:请问谁能告诉我哪里能找到win xp home edition plus???如果能让我找到,送1000分 请问如何将PaintBox.Canvas的当前内容保存至内存, Linux下c语言程序该怎样运行? 请问:vb.net中oracle数据库能否支持blob格式? .ceb文件如何打开? 什么地方能够找到《Exploring Requiremengs:Quality Before Design》这本书? 关于制作一个classwizard的设计思路,欢迎大家讨论 weblogic server console: java.lang.NullpointerException 如何得到本局域网上所有主机的ip? 请问: 如果在网上可以通过网页上传某些文件到服务器空间上,并显示一些关于上传文件的信息~ 一段检测光软驱的程序,大家帮忙除Bug! 为何会死机? 这句话看不懂,谁能帮我分析一下~ 草履虫从细胞膜到核膜,一共有几层膜分别是哪几层 下例物质在一定条件下能跟甲烷发生取代反应的是氧气,氯化钠,溴水,氯气 给父母解释为什么叛逆的一封信 英语作文 目前我国有哪些法律法规给未成年人以特殊的保护? 请帮忙分析句子句法结构.特别是句子的"nothing...less than"nothing gets people talking than child rearing is anything less than a completely fulfilling,life-enriching experience. 古代中原指的是什么地方 在循环水系统中钝化后的碳钢管道在正式运行前还需要进行预膜吗 可降解塑料餐盒化学成分 中国古代的九州是指现在的哪些地方? 如下就是案例.热电厂循环水处理之预膜处理步骤详情咨询北京邦驰世纪水处理科技有限公司 可降解塑料餐盒怎么加工 水处理成套设备是什么 古代的"中原"到底是指哪里?在当时中原以外的地域都是不被中原政权承认属于"中国"的吗? 循环水预膜时钙离子为什么要大于50PPM? 一道物理电磁感应自招题 求教 北极燕鸥阅读题答案 草履虫是通过什么与环境进行物质交换? 一道电磁感应物理题 古代各国都在中原地区吗 能体现汉字谐音特点的古诗有什么 向鲜牛奶中掺入三聚氰胺,能增加牛奶的重量么往牛奶里添这个东西有什么用?有感于牛奶事件 中国古代西域是指哪些地区?是在何时正式并入中国版图的? 4HCl+O2=2Cl2+2H2O,在CuO/CuCl2,400℃的条件.该反应的热化学方程式 . 以牛、牛奶、三聚氰胺为话题的作文(急),以牛、牛奶、三聚氰胺为话题的作文700字,材料也可以(要整理好的)最好能信息发给我, 一根圆柱形水管,内直径为20厘米,水在管内的流动速度为每秒40厘米,每秒流过的水是()立方厘米 可逆反应2Cl2(g)+2H2O(g) 4HCl(g)+O2(g); ΔH 右图表示生长素浓度对植物 A点对应的生长素浓度对根\芽\茎都有促进作用 为什么错?芽\茎在生长素浓度较低的时候是什么状态,是促进还是抑制,还是不生长? 一根圆柱形水管,直径为40厘米,水流速度为每秒3米.这根水管每分钟可流过多少升水 把九立方米的沙垫在一个长5米,宽4米得沙坑里,可以垫多厚? 生长素浓度高为什么会杀死植物?为什么?原理? 汉子与中国心“最最能体现汉字中文的这些特别的首推中国的古典诗词“在文中起到什么作用 一个沙坑长5米,宽4米.往里放入4立方米的沙子可以垫多厚 物理题1个(关于电磁感应的)如图所示,正方形线框abcd 边长为L,线圈水平放置,固 定在磁感应强度为B,方向竖直的匀强磁场中,其中ab边是电阻为R的均匀电阻丝,其余三边电阻不计.现有一段长度 变形虫和草履虫的细胞膜基本组成成分相同吗? 一个沙坑长5米,宽4米,往里放入4立方米的沙子,可以垫多厚? 问一条关于电磁感应的物理题在倾角θ的斜面上,放置一段通有电流强度I,长度L,质量m的导体棒a(电流方向向里),如图,棒与斜面间动摩擦因数u 一个长方体游泳池,长50米,宽25米,深4米.要在游泳池每个面上抹上一层水泥,如果每方米用水泥16千克,一共需要水泥多少千克?(求算式) 有黄沙4立方米,把它垫在长5米,宽4米的沙坑里,可以垫后多少米? 下列气体中,有剧毒的是?一氧化碳 二氧化碳 氧气 氮气中华武术博大精深,中国的武术家更是数不胜数,下列候选人中,是谁具有武术家身份而投身于电影拍射,被世界所公认为一代宗师?A 独体字的结构 厅的墙我想做成镜面的玻璃幕墙,请问费用要多少啊?我在沈阳,我家厅一侧的墙体我想做成镜面的玻璃幕墙,深灰兰色那种吧,面积是2.5米*4.2米,中间带一个正常的门,推开的,或者平开的门都行,大 一道物理电磁感应题目水平面内固定一U形光滑金属导轨,轨道宽d=2m,导轨的左端接有R=0.3Ω的电阻,导轨上放一阻值为R0=0.1Ω,m=0.1kg的导体棒ab,其余电阻不计,导体棒ab用水平轻线通过定滑轮连接处 小孩子早熟怎么办? 换个手机玻璃多少钱? 一道物理电磁感应的题目...将一个正方形线框放在均匀变化的磁场中,线框平面垂直磁场,线框中产生的感应电流为I1,现在将这个线框换成同样阻值且边长为原来2倍的正方形线框,仍放在原来均 最能体现汉字中文特点的首推中国的古典诗词,一个中国孩子在很小时候就能背诵的古典诗词:冬天下雪时吟“_________________,___________________”思念家乡时吟“_________________,___________________” 玻璃险多少钱 夏天----植物的世界(阅读答案) 一个长方体的游泳池长50m,宽20m,深2m,要在四周和池底抹一层水泥,每平方米需要3千克水泥,需要多少水泥算式过程写出来 中国有多少个简体中文汉字? 体现汉字特点的古诗有那些 在汉字与中国古典诗词中,作者对汉字是一种什么样的情感 CO和H2的混合气体中含有少量CO2和水蒸气,可按下列实验步骤,证明CO和H2的存在:(1)将混合气体首先通过① ,目的是② ;(2)将由(1)得到气体,继续通过① ,实验中观察到 请分析这句话,看不懂Writing this book was anything but simple, an irony that has not been lost on me. 草履虫的表膜是细胞膜么 人类的利益不应该建立在动物的生命上.我总是觉得人类不应该吃动物.但却没人认同.你们觉得呢? 请帮我分析这句话!我看不懂!The goal should be to recapture in the universities and research labs much of the excitement that existed at top-rated departments in the past.请分析这句话的语法!我看不懂! 草履虫的细胞膜又称什么,其功能是什么 动物也是生命,为什么要吃动物的肉?如果有一天 老虎是地球的主人 那它也会吃人类吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘