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

磨剑三载,且看从容应对14.3万TPS的Twitter是怎样炼成的!

HTML文档下载 WORD文档下载 PDF文档下载
三年前的世界杯上,Twitter的服务随裁判哨声跌宕起伏;三年后的今天,Twitter的服务已经可以从容应对毁灭“天空之城”的魔咒,并创下每秒143199次tweet的新峰值。

记得刚接触宫崎骏老爷子的作品是在高中时代,然而当时正值青春年少外加深受灌篮高手等动画“荼毒”,对宫老爷子的《千与千寻》、《龙猫》、《魔女宅急便》、《天空之城》之流也就完全不感冒了。再次接触宫老爷子的动画则是在大学期间,记得当时熬了N个通宵把全集都过了好几遍,不得不感慨作品只有在相应的情景下才能释放价值。从这个观点上看,近日网上流传的“宫老爷子还能再战十年!”也并不为过。

NTV电视台于2013年8月2日晚第14次重播了《天空之城》,当剧情发展到男女主角巴鲁和希达共同念出毁灭之咒“Blase”时,一举将tweet发送峰值带到了每秒143199次,这个峰值高于2013日本新年33388次/秒,也高于拉登之死(5106次/秒)、东日本大地震(5530次/秒)、美国流行天后碧昂斯宣布怀孕(8868次/秒)。

毁灭之咒“Blase”摧毁了天空之城,同样也摧毁了经过充分准备的2ch,然而却铸就了当下Twitter的最新峰值。新的峰值是平均值(5700TPS)的25倍,当下用户平均每天发送的tweet是500万条左右。在峰值期间,Twitter一直保持着高可用性,对比3年前世界杯上的表现无疑有着天壤之别。近日Twitter在技术博客上公布了为什么会重铸Twitter以及新系统打造的相关细节,以下为译文:

重铸Twitter决心

当2010年人们将Twitter作为世界杯体验实时分享工具时,每一脚射门、每一次罚球、以及裁判出示的每一张红牌或黄牌产生的tweet都会对系统造成不同程度的影响,同时也会造成程序短时间内的不可用。2010世界杯期间,工程师日以继夜的工作,拼命的改善系统性能。不幸的是,这样的努力瞬间被Twitter的快速增长淹没。

有过这次经历,我们清楚了只有重新架构才能匹配网站的增长,同时让系统变得更加可靠。随后我们就开启了漫漫的重构之路,而当下Twitter已经可以从容应对类似《天空之城》重播、超级碗以及全球新年夜庆典这样的事件,新的架构不仅能弹性的应对负载,还可以帮助工程团队快速发布新特性,包括了跨设备的消息同步,Twitter cards可以让服务变得更加的丰富并拥有更多的内容,同样还带来了囊括用户和故事的搜索体验。为了实现这些,我们甚至改变了工程组织,下面就来一睹服务打造细节:

三年磨剑铸辉煌

重新架构

在2010世界杯尘埃落定后,我们审视了整个系统,并发现众多需要从根本上改善的地方:

1. Twitter曾运行着世界上最大的RoR堆栈,并将这个技术推到了一个绝对高度:那个时候,大约200个工程师在为之奋斗,它确实让Twitter渡过了一个用户爆发性时期,不管是新用户的增加,还是负载增加的处理。这个系统一度支撑了所有运作,从管理数据库、memcache连接到网站的渲染及公共API的呈现,这些全部包含在一个代码库里。它不仅让工程师的整合变的困难,同样也困扰了工程团队的管理及并行作业。

2. 存储系统的吞吐量达到了极限——之前Twitter使用的是纯粹的MySQL存储系统,进行分片,同时系统只有一个主节点。然而从系统展示的速度上来看,tweet的吞吐率确实出现了问题。这样我们就必须重建一个新的数据库以应对增长率,因为热门数据的读取已越来越频繁。

3. 取代从工程方面彻底的解决问题,我们曾尝试过投入更多主机;然而随后就发现,前端Rbuy主机并不能处理预期(根据性能)的事务量——从以往的经验看,这些主机完全可以胜任更多的事务。

4. 最后,从软件角度上看,我们发现我们一直在钻优化这个牛角尖,我们开始在性能和效率与代码库的可读性和灵活性之间做权衡。

综上所述,系统的重新架构已迫在眉睫,我们给自己定下了3个目标和挑战:

1. 我们希望打造出兼具性能、效率及灵活性的大型基础设施——我们希望能改善Twitter上的平均延时,同样我们希望通过离群值给Twitter带来统一的体验。我们希望将赖以运行的服务器降到十分之一。我们希望对故障进行隔离以避免大规模宕机——随着服务器规模的日益增大,这点就尤为重要,因为集群的变大意味着主机故障将愈来愈频繁。故障是不可避免的,所以我们希望它们发生在一个更容易控制的模式下。

2. 我们希望通过将相关的代码放到一起,以获得更清晰的边缘——我们已经感受了整片代码所带来的困扰,所以我们打造一个松耦合、基于服务的架构。我们目标是封装和模块化的最佳实践,当然是在系统级,而不是类、模块或者是包一级。

3. 最重要的是,我们希望能更快的发布特性。我们希望团队能并行的运作,每一个小组都可以在不依赖其它小组的情况下独立的完成局部决策,并将特性发布给用户。

我们POC了新的架构,虽然不是所有的努力最终都能符合上述目标,但是最起码做到了一部分并且解决了工具问题,当然,还得到了比现下更令人满意及可靠的基础设施。

传下一代iOS或将推行扁平化设计 iOS开发者注意:苹果将拒绝访问UDID的应用上架 领先Google、Amazon、Dropbox,Apple云存储用户最多 传IBM重新设计晶体管 预计五至七年内成熟 快讯:云计算大会6月召开 云计算概念企业股票飙升 集成开发环境:Qt Creator 2.7.0发布 移动周报:“今日头条”CEO,爱冒险的技术宅 从China Daily的iPad版,看中国纸媒如何摆脱“旧情结” 天睿推出大数据探索平台:“开箱即用”的数据分析 Basho开源Riak CS,与AWS S3兼容的云存储架构 MongoDB Days北京杂记 VMware携手亿阳信通 铺垫混合服务 行业应用,移动优先:移动难七大痛点剖析 HTML5开发必备:游戏开发资源合集 老而弥坚:65岁传奇Android工程师谈开发 2013中国云计算有奖大调查,每周大奖等你拿! Google Reader之死另一个不为人知的原因 小团队谈推广:豆果、金山、微博易、面包旅行 敏捷实战:如何让团队迭代交付周期缩短一半 移动设备管理初创公司AirWatch:首轮融资2亿美元 New Relic:不等应用崩溃,实时监控你的App! Zynga力挽狂澜三步棋:移动+授权+自有网络 巧用MapReduce+HDFS,海量数据去重的五大策略 革自己的命?为带来一致体验 IE11伪装FireFox 最古老的Linux发行版Slackware以及Arch Linux齐弃MySQL JEECG v2.3 发布,基于代码生成器的智能开发框架 Mozilla将设应用工场 Firefox OS瞄准欧洲南美 Summly创始人:12岁开始编程 17岁公司卖了3000万美元 因SaaS与NoSQL,Oracle雄风不在? 那些年云计算领域的大牛们 回顾:那些被平台方封杀的第三方应用 Dev c++编译通过而vc6.0不行,难道vc6.0连这都不支持? 我弄不明白,小毛驴还是我们的大斑竹吗? 为什么非计算机专业的找工作这么难?难道一定比专业人员差? 用c#如何将摄相头里的动态图象读出并显示出来? 关于时间段的显示问题! linux与windows之间怎么共享啊??? 已知链表元素(元素为结构类型)中的一个成员变量的值,怎样查找它、且将其取出呢? 怎樣控制和設置graph中每個類的每個序列的外觀色彩 新手求救,報表問題,在線等! 自己做的控件在HTML中怎么响应事件 求救!! 拜托大家帮帮忙!在线等待 怎么编写自己的函数库? 请教一个strut问题 sos 求急。如何取掉多显示器?? 后生可畏啊!佩服:绝对实力派。 请问如何把从oracle取出来的数据AdoRecordset保存为.dbf文件和.xls文件 如何还原一个窗口 质问斑竹:是谁删了《立法会第一立法案:水源小斑竹选举法》 谁在强结我帖子?站出来! 请问消息都是串行处理吗? 飞利浦15寸液晶显示器;先到先得。 有谁做过3D骨骼编程的,留一个联系方式 急救!!!WIN98启动就死.(在线等) 幫我看看這是什麼病毒:win32.HLLM.Reteras 急急????在繞等待!!!!!! pb含原代码的例子何处寻觅 如何读取word表格中的数据? 怎样让一个tc程序在一台没有安装tc的电脑上运行? 请问在Vb.NET中引用型变量本身在内存中的值怎么查看呢? 关于在网络版程序中单据号连续的问题? 有关上网的缓存文件(捧分跪等) 我这样实现查询可不可以,为什么没有结果请帮我看好吗 怎么VFP2.5 for windows里的界面(对话框的标题栏里)都没有关闭按钮啊 如何在用户长时间等待的过程中显示一个临时页 ERROR:ORA-12560: TNS: 协议适配器错误 如何在SQL语句里精确小数点以后的位数不清 想得到一段程序的运行时间,C#中提供的time精确度太低,有没有精度比较高的算法? 在客户端已知某个文件的存放路径而不通过HTML的FILE控件再进行浏览选择,怎样把这个文件上传到服务器上 在VBA中变量的值改变后如何保存住值啊? 请问ListView怎么实现(点击标题栏字段名时)排序?谢谢 为什么生命还是这么短 关于电子论坛的设计!!!(回答有意义的高分美人相送,灌水的大炮伺候) jdk1.4大量认证资料奉送 请教对话框的创建 几个小问题,请大家多多帮忙!在线等待 请大家仔细看看,不知道我有没有写清楚,不知道算不算难还算容易....... win2000 sever怎样安装borland c++builder?(高分100) 请大家帮个忙,举手之劳而已 使用MSComm,在关闭窗口的时候,出现“端口已打开”的错误。怎么解决? 请问这几段C#语句怎么办? applet问题,期待高手出现 请问为什么真空管里的羽毛和铜线会一起落下? 英语翻译急. 口头表达能力不行,你们是怎么锻炼的,有没有什么好的方法 怎么样又快又好的提高交际能力,表达能力,不怯场? 自古皆贵中华,贱夷狄,朕独爱之如一 反映了什么样的民族政策 自古皆贵中华,贱夷狄,朕独爱之如一 意思是什么,体现了怎样民族政策 情愿的反义词 有含盐20%的盐水5千克,要配制成含盐8%的盐水,需加水多少千克?20%*5=8%(x+5) x=7.5必须一个个都回答,如果不对,请给出真确的答案! 交际能力和智商的关系? 霍金现在多大,死了没有? 长沙话伢子,是什么意思? 港媒:中国令人垂涎又无人问津的公务员前美国国安局长“私聊”遭邻座“直播”新媒:新加坡是中国的“特殊而重要的邻俄罗斯专家:美国例外论在多极化世界难美国电视荧屏常可看到公开对中国人侮辱男子沉迷网游称是因为老婆太能干传蒙古总统将访朝 是金正恩时期首位访美恶妇险扯断幼儿生殖器用胶粘合 面临英国首个“音乐试管婴儿”诞生 狂爱听探访朝鲜志愿军墓 中国老战士和烈士家我国海军三大舰队首次在西太平洋展开实索尼4K超清魅力震撼来袭广东星艺装饰成都锦江分公司成立豪宅、成都市第三届导游大赛落幕 选手大秀才成都整治“9+2”突出问题 4个区(夏日智能风暴 海尔浓情万端全国第九届残运会暨第六届特奥会征集吉本周六,圣地亚“装置艺术、手绘课堂”大乐透再出1500万头奖 奖池涨至5成都5人获《全国健康老人》证书年满六周岁即可入学 东郊记忆六一有惊全国多地气温已超40℃
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘