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

磨剑三载,且看从容应对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了新的架构,虽然不是所有的努力最终都能符合上述目标,但是最起码做到了一部分并且解决了工具问题,当然,还得到了比现下更令人满意及可靠的基础设施。

SwiftKey:Galaxy S4输入法背后的开发团队 前IE团队领导:IE是如何走向衰败的 谷歌更新BigQuery 允许在其中加入大型数据集 初创公司Spiral Genetics:超越现有DNA序列分析平台40倍速 六大开源监测工具 你用过哪个? TUP第28期:Intel 微软 Yahoo的大数据实践 惊变14天,从“小白”到上架App Store商店 “今日头条”CEO张一鸣:我是爱冒险的技术宅 OpenStack基金会COO Mark Collier:2014年将超越AWS Evernote更新Android SDK:新增商务服务并拆分“印象笔记” 主流编译器对C++11的支持现状比较 GCC 4.8发布,提升对C++11的支持 英国政府下令首选开源软件 为何美国IaaS收购被引爆?基于IaaS的四个误解和四个猜想 Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 vc++7.0好用吗? 吃完晚饭了... 可不可以让 CppWebBrowser1的背景不是白色? 热热热!!!热疯了!!! 我的喇叭哪儿去了? 我的PB程序出了问题了!!! sql server中哪个函数是用于字符串与整型之间转换的? 我想限定文本输入框只能输入10个汉字或20个英文字符,但文件输入框却只能输入10个英文字符,如何解决? 当我将这样的字符串“dsdsdsdfsdffsdsdfsdfsfdsdfsdfsfsfdsdffs.....”放入我的表格中时,无论怎样设置也不折行,影响了部局,如何解决? MFC中视图(view)是怎样随着主窗口的大小改变而改变的。 急!请教!!猫猫连接,用数据管道同时访问两库,访问不到对方的网络库(sybase) 关于电影下载 我已经把一个exe文件加入到我自己的程序中了,请问在我的程序中应该样调用该exe文件呢? 哪位高手知道RTF格式的含义?或者更好,知道Rxlib中的RXRICHEDIT控件中识别RTF格式的方法? Delphi编写的DLL在VC下不能使用 请问哪儿有电工的<>的电子版下载?我只有这么多了 msdn2001年4月版的讨论 请问哪儿有电工的<>的电子版下载? 请教高手!!!! 请进 各位:周末愉快!为何我的多表查询用updatebatch提交时总是报错? 我不明白!!!! 请问,BAS 与 VBJ 有什么区别吗?为何他们安装在同一个目录呢? 如何得到系统进程的列表? vi下如何撤销操作? 我们知道MFC中的对象序列化做得很好,不知在DELPHI中怎样来实现对象的序列化? 我已经学过C++,想学VC++请问哪本书入门比较好啊? 欢迎使用技巧酷skillstore beta 1.00 有个可以显示IP的QQ,很不可思议,讨论一下好吗? 怎样在程序运行的时候加上参数,比如说双击文本文件打开记事本 谁有运行后烧硬件的程序 用VC开发如何实现网页的同步浏览呢? 动态产生的datawindow怎样调整它的显示? 怎么从ORACLE白痴到高手 怎样通过程序员考试??????? 庆祝北京成功 COM基础问题 感谢huangguanshu回答我的问题,请进来拿这200分 老问题了,access to SQLserver 关于的js问题(高分相送) 谁有运行后烧硬件的程序,要多少分都给. 请高手赐教, DDDW 的问题 ?谁有运行后烧硬件的程序,要多少分都给. hotmail box怎么用不了? sql的image型字段内容如何输入? 谁有运行后烧硬件的程序,要多少分都给 谁有运行后烧硬件的程序??要多少分都给 谁有运行后烧硬件的程序???要多少分都给 Linux是不是不支持POSIX IPC啊? 关于red hat 7.0与WIN98 共存的问题 关于用PostMessage发消息时所遇到的问题 已知a=2+√3,b=2-√3,求代数式a²b-ab²的值 试用适当方法表示由二元二次方程组y=x+2,y=x²的解组成的集合 求教求教QAQ 方程x²-9=0的解集是? 已知a=1/3,b=0.2,求代数式a³-b³/a²+ab+b²的值 1:已知m=x-y,n=xy,试用m,n表示(x³+y³﹚²,2:当x=-1时,x³+2x²﹣5x-6=0,请根据这一事实,将x³+2x²-5x+6分解因式.没分了,不好意思, 方程x²+x+1=0所有实数解的集合,用描述法表示. 已知实数a、b满足ab=1 a+b=2 求代数式a²+b²的值. 设Y=X²-ax+b,A={x|x-y=o},B={X|y-ax=0},若A={1,-3},求集合B(用列举法表示) 用公式法解下列方程(1)x²-6x+1=0(2)2t2-t=6 (3)4x2-3x-1=x-2 (4)3x(x-3)=2(x-1)(x 1) 已知(a+b)²=7,(a-b)²=3.求a²+b²、ab的值 设集合A={x|x²-2x-3=0},B={x|x²-ax-a²+1=0}(1)若a=-1,求A∪B(2)若A∩B={3},求实数a的值 方程x²+x+1+2根号(x²+x+4)=0用换元法解题,设y=___________,则所得方程为_______ 已知:(a+b)²=7,(a-b)²=3.求a²+b²和ab的值 若集合A={-1,3}集合B={x|x²+ax+b=0}且A=B求实数a,b 用列举法表示集合 B={y∈N}|y=—x平方+6,x∈N} C={(x,y)|y=—x平方+6,x∈N,Y∈N} 已知(a+b)²=7,(a-b)²=3,则a²+b²与ab的值分别是 已知实数ab 分别满足a²+2a=2 b²+2b=2 求a分之1 + b分之1 的值 已知(a+b)²=7,(a-b)²=3,求(1)x²+y² (2)xy的值 设A={(x,y)|y=x²+2x+5},B={(x,y)|y=ax+1},问:(1)a为何值集合A∩B有两个元素?(2)a为何值时,集合A∩B至少有一个元素? 已知实数a,b满足a(a+1)-(a^+2b)=1,求a^-4ab+4b^-2a+4b的值 已知a+1/a=7,求a²+1/a²的值 用列举法表示集合A={y/y=X²,-1≤x≤1,x属于N},-1≤x我知道-1≤x≤1 中x=-1,0,1 因为x属于N,所以x=0,1 x的值用集合可表示为{0,1}.当x=0时 y=0 ,当x=1时 y=1 所以A={0,1}.亲 这是为什么呢 已知实数a,b满足a²+2a=2,b²+2b=2,且a≠b,求b/a+a/b的值 用配方法证明:代数式-x²+6x-8的值一定不小于1. 集合P={(x,y)| y=x²+2,|x|≤1,x∈Z},用列举法表示集合P 已知实数a、b满足a²+2a-1=0,b^4-2b²-1=0,且ab²1,(在下面补充题目)求[﹙ab²+b²+1﹚/a]²º¹º的值上面打错了,是“且ab²≠1”,不是“且ab²1” 用配方法证明:代数式-x² 6x-8的值一定不大于1 集合﹛﹙x,y﹚│y=-x²+6,x∈N,y∈N﹜怎样用列举法表示?问题在于它没给符号,那我怎么表示? 已知2b-b=7,求代数式[a²+b²-(a-b)²+2b(a-b)]÷4b的值 用配方法说明代数式X²-6x+10的值大于0 '用列举法表示下列集合 (1)A={x∈N∈0 已知a²+b²+2a+4b+5=0.求代数式[(a+b/2)+(a-b/2)²]·(2a²-1/2b²)的值. 用配方法说明:代数式x的平方-6x+13的值恒大于0 用列举法表示下列集合 ①A={x|x²=9} ②B={x∈N|1≤x≤2} ③C={x|x²-3x+2=0} 若实数a,b满足a+b²=1 ,则a²+4b² 的最小值是..? 用配方法证明代数式5X的平方-6X+11的值,恒大于0 2x²-3x=2 2x²-4根号下2x+3=0 3x²+2x=0 用配方法解方程 已知a,b为实数,则a²+ab+b²-a-2b的最小值 用配方法说明代数式中x平方-12x+40的值恒大于零 解方程:2x²+2/x²-7x+2=0 已知实数a,b满足a(a+1)-(a²+2b)=1,求a²-4ab+4b²-2a+4b的值 用配方法说明:无论x取何值,代数式2x-x的平方-3的值恒小于0. 写出由方程x²-(a+1)x+a=0的解组成的集合中的元素答案清楚,就是不知道怎样描述这个集合,希望过程能写详细点 设a.b为实数,求a²+2ab-2b²-4b+5的最小值,并求此时a与b的值.急用阿 用配方法说明代数式X平方--5X+7的值恒大于0 以方程x²-4x+4=0和方程x²-x-2=0的解为元素的集合中含有___个元素. 已知a-2b=7,ab=-3求a²+4ab+b²急需. 代数式x^2+2mx+2m^2+1的值恒大于零 以方程x²-4x+4=0和方程x²-x-2=0的解为元素的集合中含有几个元素 A-2B=7 AB=3 求 A²+4AB+B² 设a=1/2m+1,b=1/2m+2,c=1/2m+3,求代数式a²+2ab+b²-2ac-2bc+c²的值.要过程! 用列举法写出方程 x²-(a+1)x+a=0 的解集 已知(a+2b)²=7,(a-2b)²=3,求:⑴a²+b²的值,⑵ab的值 若代数式mx²+2(3-2m)x+1(m≠0)是关于x的完全平方式,求m值 用列举法表示下列方程x²-2x+1=0的解集 计算:[﹙ab-2b﹚²×﹙2a﹚²-﹙4ab﹚²]÷[16a×﹙ab﹚²]还有一题,把下列个多项式分解因式(m²+3)²-8(m²+3)+16还有一题,当y-x=5时,求x²-y²+5x+5y+2009的值 已知a(a-1)-(a²-b)=2,则代数式ab-(a²+b²)÷2的值为急求 试用适当的方法表示由二元二次方程组{y=X+2} 组成的集合 { y=X²}试用适当的方法表示由二元二次方程组{y=X+2} 组成的集合{ y=X²} 用公式法解关于x的方程ab(x²+1)=a²x+b²x(a²>b²)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn