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

五步走战略——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实现滚动式面板窗口 通用的MsgBox-Delphi资料 图象放大镜——实现图象局部放大的原理和方法-Delphi资料 图形的特殊显示效果-Delphi资料 图形整体拉出效果-Delphi资料 一个实用的Delphi屏幕拷贝程序的设计 用Delphi 显示122种图形特效 用Delphi编写DLL实现动态改变分辨率 用Delphi进行OpenGL编程学习心得 用Delphi开发windows95屏幕保护预览程序 用Delphi实现壁纸更换 用DELPHI实现位图显示特技 用DELPHI中Canvas特性开发图形软件 用构件变换法实现动画效果-Delphi资料 在Delphi中使用动态图标 在Delphi中显示Windows图标 在多媒体文件中批量抓取图象-Delphi资料 怎样读出不同格式图形的高和宽-Delphi资料 怎样使用PageUp、PageDown滚动窗体-Delphi资料 怎样制作全透明的窗口-Delphi资料 DELPHI:FormContainer简易手册 Delphi:用FormContainer渐变效果 Delphi4的窗口融合技术 Delphi使用技巧ABC Delphi使用技巧四则 DELPHI中自适应表单的实现 TList的用法-Delphi资料 不规则窗口的实现-Delphi资料 不用标题栏也移动窗体-Delphi资料 窗口建立和关闭时的特效-Delphi资料 窗口中状态行的显示-Delphi资料 装了“猫”为何还有630错误(电话线也接了)? excel 問題 各位:数据窗口有一检索变量,现在想retrieve出所有的记录,检索变量应该怎样赋值?谢谢! linux和windows是不是只能分别装在两个分区中 关于图像处理:如何使图像锐化与柔化? 帮帮我啦! 我在使用jdbc读取数据的时候,碰到了内存溢出的问题,怎么回事呀 哪里有餐饮系统的介绍?90不够的话,先欠着,多谢了! 在两个ASP程序之间怎么传递参数? ccl2000(不帅不酷的Goblin):其实你真的很酷很帅的。 大侠帮帮我啦(关于SQL语句的问题) 关于Vxd的编译问题 用VC编的程序,一运行就说“执行非法操作”,问题出在哪里?? SQL Server有病 一个关于api的简单问题 《易佳自定义报表》用后很失望 请教各位高手一个有关报表控件的问题? 小妹向大家请教!可不可以直接在本页的代码中改变该页面浏览时的属性? 家菲猫:惊悉你昨晚惨遭不幸,被窃大量钱物,今日一天无法和你联系上,估计手机和通信录已全部丢失,如果今晚无法来我处,明早8点以前请务必携猫 MM 赶到上海南站!!! MDI文档模板和应用程序调用问题请教,大侠请进! 一个c++问题???? 请问各位高手,sqlserver2k加密的存储过程是否能解密,看到它的实际的语句?可否能跟踪加密的存储过程? 我下载了一个formula one ,发现她的界面跟excel差不多,在pb中怎么用? 高分求XML 高级编程(足本)[01.pdf到10.pdf]!!!! 招聘汇编程序员 ie 中true dbgrid 的问题 急招聘汇编程序员 关于WINDONWS文件夹 WIN2000有关用户管理的问题 谁可以告诉我怎么调用已有的EXE文件。 有谁知道广州或南海的高级程序员考试的辅导点 如何把系统时间作为一个文件的保存名? TURBO C语言对磁盘操作的问题 着急招聘汇编程序员 为什么大家得的都是0分? 这行代码是什么意思: 不知怎的,不小心访问到一个网站。我已设为使用空页,可它还是要先启动,画面又恶劣,怎么办? 还是关于从字符串中提取汉字的问题,我是从*.txt取出一个字符串(readln),结果无法提取汉字 请大家帮忙,白送分的 为什么我无法安装win2000??? 如何只显示数据库中的最后一条记录?(只显示一条) delphi中编的COM控件如何在WWW服务器上使用? 如何运行时拖动一个控件,如BUTTON等。 别兴奋了,进入正题吧!老是报到什么的,快讨论呀! 着急死我了 请大家帮我编译一下这个程序吧!!! 读日志文件函数ReadEventLog怎么用,每次调为什么失败?数据结构怎么定义?怎样读已知记录号的一条日志?请检查以下函数为什么不正确? 请问怎样实现菜单的渐变?就是鼠标移动到一个菜单的时候就出现一个渐变的选单背景。谢了。以后加分。 请问哪里有下载VS.net beta2 ? hehe着急 请问一个有关报表的问题?本人十分焦急,望在线的高手都来看一看,谢谢! “理想”对于人生具有怎样的意义?十万火急, 为什么酸碱盐溶液能导电?既有正离子,又有负离子,这不就乱了套? 钠的熔点和沸点是高还是低钠的熔点是97.81℃和沸点是882.9℃ 说明文的定义是什么?说明对象的特征是什么? 酸碱盐的水溶液导电时,溶液中作定向移动的是 为什么熔点比沸点低 蒸馏和分馏有什么区别? 酸碱盐的水溶液导电的原因 为什么水加压沸点升高,冰加压熔点却降低? 分馏和蒸馏的区别是什么? 电解质溶液导电是物理过程还是化学过程?原理是什么呢? 水的熔点,沸点和气压的关系 分馏是什么?与蒸馏有什么不同? 电解质溶液的导电过程属于物理变化? 在压强为1.01×105次方Pa时,下列物质的熔点、沸点如下表在120°C时,____是固体,温度在___范围内,以上物质均处于同一状态. 方向是什么意思 蒸馏与分馏有什么区别? 金属导电是物理变化吗 论文选题的目的 意义 怎么写? 过滤,结晶,分馏,萃取,分液,蒸馏的区别 为什么海水晒盐属于物理变化?为什么米饭烧焦属于化学变化? 发布文章最终目的是什么?发布文章的目的是的让百度收录就可以了是吗? 请问:分馏与蒸馏之间的区别是什么?感激不尽! 海水晒盐是物理变化还是化学变化 论文选题的目的和意义我的论文题目是《正当防卫与防卫过当》请帮我谈谈选题的目的和意义!小弟在这里谢谢你们了! 化学中【蒸馏】【分馏】【萃取】分别是什么啊?有什么区别啊? 海水晒盐是如何变化的?其中有没有化学变化? 两会是什么?两会的目的和意义是什么?作文500字 石油裂化,裂解,煤干熘,石油分熘,皂化反应,具体都是什么, 海水晒盐属于化学中的蒸发吗?我的问题不涉及海水晒盐是否属于化学变化,是想知道蒸发必须加热,而海水晒盐不需要加热,即海水晒盐属于蒸发吗? 论文的意义和目的大神们帮帮忙我写了关于社会保障与社会和谐的论文,谁能帮我写下研究这个课题的目的和意义啊 熔融状态下的氯化钠,离子键已经断了,再使它导电,不就是离子的定向移动吗.我觉得应该不是化学变化呀啊 海水晒盐是化学变化吗 互联网是哪种语言编的 NaCl水中溶解电离电离后为什么一个Cl-周围有6个水分子Na+周围有5个水分子 熔融盐和电解质溶液导电为什么是化学变化 给我的幻想打了一个零分是什么意思?其中幻想可以换成理想吗?为什么? 下列物质溶解在水中,能电离出氯离子的 A.NaCl B.HCl C.KClO3 D.AgCl这种题都怎么做的,是背下来的吗 溶液导电变化分析用如图所示装置分别进行如下实验,测定导电性变化,请按照要求选择填 空.A.导电性变化不大 B.导电性明显增强 C.导电性明显减弱 D.导电性由强到弱再到强 (1)向 AgNO3 溶 军旅题材的电影电视剧里的“十点钟方向”或是几点钟方向等等,我们常常在军旅题材的电影电视剧里听到多少多少方向的,这个方向是什么方向?如果判断、辩别? 在化学中,Nacl在水中电离时,会跟水分子,水的离子发生什么反应?又生成什么? 氯化钠溶液与硝酸钙溶液能否发生化学变化理由是( ) 看战争电影时总听到说方位在几点钟方向,具体是怎样的? 初中化学 氯化钠溶解在水中电离成氯离子和钠离子 就不是以氯化钠这个化合物的形式存在的 这是溶液的性质改变了么 还是氯化钠溶液?既然都已经散了 不是氯化钠了 怎么还是氯化钠溶液详 熔融食盐是否为为电解质,能导电吗?说明一下 谢谢 一直闹不清楚电影中说的几点钟方向是什么意思? 氯化钠溶于水成为自由移动的离子是化学变化,那没生成新物质啊 电解质溶液或熔融电解质导电的原因是什么?导电的实质是什么? 电影中所说的几点方向是什么意思 NaCl在水溶液中电离是不是化学反应? 煤的气化是物理变化还是化学变化 美国战争片上经常说的十点钟方向,那这个几点钟方向是什么意思?如题 氯化钠的电离把氯化钠加热到液态就能电离出氯离子和钠离子,那么继续加热到氯化钠气体是不是还能继续导电呢?为什么呢意思就是氯化钠气体是不是也能电离出钠离子和氯离子 煤的气化为什么不是物理变化 理想的含义.特征及其对人生的意义? 酸碱盐的水溶液导电原因 硅的熔点比铝高,沸点比铝低,这是为什么?物质由固体变为液体和由液体变为气体所克服的作用力具体有何不同? 理想集成运放具有什么特点?A.开环差模增益Aud=∞,差模输入电阻Rid=∞,输出电阻Ro=∞B.开环差模增益Aud=∞,差模输入电阻Rid=∞,输出电阻Ro=0C.开环差模增益Aud=0,差模输入电阻Rid=∞,输出电阻Ro=∞D 酸碱盐的水溶液靠什么导电?大家不要想得太麻烦.【最好给个原因啊... 有没有什么材料的熔点比较低,沸点非常高的比如熔点只有1~200度 沸点却在2000度以上的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn