本月,宫崎骏大师的《天空之城》在NTV迎来其第14次电视重播,剧情发展到高潮之时,“Blase祭”也将Twitter的TPS(Twitters per second)推上了新的高度——143,199 TPS,Twitter一般每天会发出5亿多条微博,平均5700 TPS,新纪录是平均值的25倍。

\u0026#xD;

Twitter的“大鲸鱼”曾为人津津乐道,每次Twitter出现故障都会挂出大鲸鱼,但细心的朋友一定已经注意到“大鲸鱼”的出镜率越来越低了。自2010年世界杯后,Twitter便开始了大刀阔斧的架构重构,如今的Twitter早已不再是那个全球最大的基于Ruby on Rails的Web站点了。Raffi Krikorian在Twitter的官方博客中介绍了新架构是如何应对14.3万TPS这一高峰的。

\u0026#xD;

在开始重构前,他们为自己定下了三个目标:

\u0026#xD;

  • 新架构能在性能、效率、可靠性上有所突破,即改善用户体验到的延时,减少10倍的服务器数量,在故障面前,基础设施能做到故障隔离。\u0026#xD;
  • 实现一个松耦合的面向服务的模型,鼓励系统级的封装和模块化。\u0026#xD;
  • 能更快地让新功能发布到线上。\u0026#xD;

Twitter曾经是Rails的“金字招牌”,发展初期大量使用了Rails,但后来Twitter从Ruby转向了Scala,一度让人们认为Ruby的性能问题阻碍了Twitter的发展,而Linkedin和Iron.io从Ruby转向其他语言,也加重了大家对Ruby性能的顾虑。其实,Ruby并非幕后真凶,Rails才是!为了提供一站式的Web建站设施,Rails默认提供了太多的功能,正如范凯在其博客中说的那样:

\u0026#xD;

Rails适合开发Website,但不太适合Web Service,而移动时代的发展趋势就是:未来服务器端会更多的使用Web Service而不是Website,这也意味着Rails将越来越不适合时代的发展。

\u0026#xD;

虽然Ruby有点冤,但是Twitter却在从Ruby到JVM的转型中实实在在地得到了好处。Twitter在JVM上实现了它的搜索引擎、流API和社交图谱,这让其服务器的吞吐量从每秒处理200到300个请求提升到了10000到20000个请求,带来了10倍以上的性能提升。

\u0026#xD;

SOA化也是Twitter重构中的重点,从一个庞大的Ruby应用拆分为多个相对独立、边界清晰的小系统,专注于各自的服务,服务之间通过Finagle实现RPC调用。很多知名的互联网站点都有过类似的经历,比如大家所熟知的支付宝和阿里巴巴,支付宝的首席架构师程立就曾在InfoQ上分享过自己在大规模SOA系统上的经验;在RPC框架方面,阿里巴巴也有自己的Dubbo框架。

\u0026#xD;

存储上,Twitter对原先的MySQL主从结构做了调整,对数据库进行了拆分,在此期间,他们还开发了一系列的框架,比如Gizzard和Snowflake。淘宝也同样对数据库进行了拆分,大量地分库分表,并且开源了自己的TDDL框架。由此可见,国内外的各大网站当发展到一定规模之后,必然会采取一些类似的措施来保证自己能够进一步发展下去,正所谓“英雄所见略同”。

\u0026#xD;

博文中还提到了监控与开关相关的内容,例如与Finagle整合在一起的Viz和Zipkin,能方便地对每个请求进行监控。而他们的Decider系统集成在Twitter的所有服务里,这个系统类似一个开关,能够快速地对功能进行切换,甚至能让某个功能仅为指定百分比的用户提供服务,如此一来,可控的灰度发布就能成为可能。说到功能开关,乔梁曾在介绍百度的持续交付经验时也提到过类似的概念,不过他说的仅是控制特定功能的打开与关闭,显然Twitter的Decider更胜一筹。

\u0026#xD;

除了这次的博文,Raffi Krikorian去年在QConSF上还专门就Twitter的时间线优化做过分享,而著名的HighScalability.com上对Twitter的新架构也有介绍,如果您对Twitter的架构感兴趣,不妨再做进一步的了解,然后将您的体会分享给大家。

《天空之城》助Twitter刷新纪录,新架构功不可没相关推荐

  1. 2020天猫“双11”全球狂欢季成交额达4982亿元!再次刷新纪录!

    2020年双十一电商节,吸引太多消费新品牌,这也是新品牌的机遇,而结果也确实证实如此,4982亿元!2020天猫"双11"全球狂欢季成交额再次刷新纪录!朋友还在犹豫要不要入驻或者苦 ...

  2. 中国AI又夺一冠!依图刷榜全球声纹识别挑战赛,刷新纪录,大比分夺魁

    鱼羊 发自 凹非寺 量子位 出品 | 公众号 QbitAI 中国军团,继续刷新全球AI各项竞赛. 这一次,是全球声纹识别竞赛:这一次,是独角兽依图. VoxCeleb说话人识别挑战赛,简称VoxSRC ...

  3. 【转】新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)

    上周星期天开通了博客并发布了第一篇文章<新思想.新技术.新架构--更好更快的开发现代ASP.NET应用程序>,汇集了一些比较流行的技术和开源项目,也把自己的程序架构.部分代码风格.前端表现 ...

  4. 胶囊网络架构_了解胶囊网络-AI的诱人新架构

    胶囊网络架构 by Nick Bourdakos 由Nick Bourdakos 了解胶囊网络-AI的诱人新架构 (Understanding Capsule Networks - AI's Allu ...

  5. 外国人怎么看祖冲之量子计算机,我国“祖冲之号”量子计算机再次刷新纪录:1.2 小时完成超算 8 年计算量...

    品玩 7 月 3 日讯,中国研制出的 62 比特可编程超导量子计算原型机祖冲之号再次刷新纪录,世界最强的超级计算机 8 年才能完成的任务,用 " 祖冲之号 " 量子计算机最短 1. ...

  6. 面向体验,助推超视频时代新增长

    2月25日,火山引擎视频云科技原力峰会顺利召开. 火山引擎视频云是如何发展起来的?火山引擎要做什么样的视频云?未来视频云又会是什么样的?火山引擎视频云技术负责人浩铭在以<面向体验,助推超视频时代 ...

  7. 细鹏系列裸金属服务器多核算力,鲲鹏凌云,开启多元计算新架构_外发版(40页)-原创力文档...

    鲲鹏凌云,开启多元计算新架构 华为云鲲鹏云服务整体介绍及实践 华为云鲲鹏凌云生态总监 白雁 这是最好的时代,这是最坏的时代 应用移动化和数据多样性,呼唤新的算力 移动智能终端逐渐取代传统PC 世界正在 ...

  8. Arm 发布移动端 v9 体系新架构,CPU、GPU、IP全囊括了

    作者 | 夕颜 头图 | 下载于ICphoto 出品 | AI 科技大本营(ID:rgznai100) 2021年5月25日晚,Arm发布了针对移动端的Armv9体系新架构,除了公布首款全面计算(To ...

  9. 百度云「升级战」:王海峰站台,新架构全面AI化,AI和知识中台登场

    5月18日,"ABC SUMMIT 2020百度夏季云智峰会"在线上召开.刚刚经历了人事变动的百度云迎来重磅升级,大会以"百度智能云加速产业智能化"为主题,百度 ...

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计
  2. JRebel for Android 编译神器
  3. SAP产品概念及版本简介
  4. VS.net中的远程调试
  5. pythonweb啥意思_python-web-guide
  6. MySQL时间格式TIMESTAMP和DATETIME的区别
  7. 2019/12/11学习内容摘要(Linux系统用户与用户组管理①)
  8. 目不给视的拼音及解释
  9. FISCO BCOS 区块链 查看代码版本号
  10. 计算机考研数据结构教材,2016计算机考研:数据结构参考书及复习重点
  11. 【电脑录制屏】如何使用bandicam录游戏 设置图文教程
  12. Minecraft Mod开发环境搭建 | Minecraft 1.15.2 | Forge 31.1.0
  13. HDS NAS原理及Storage Pool方案
  14. ARM开发工具历史及分类详解 (最详尽的区分和介绍ARM DS-5,RVD...
  15. Mifare S50与Mifare S70
  16. 人民广场,上海博物馆
  17. 【万字干货】产业互联网B端产品经理实操手册
  18. 关系代数和SQL语法
  19. 【java实现100以内加减法口算练习程序】
  20. matlab eval函数用法

热门文章

  1. JDK8_新特性_详细总结+代码(1)Lambda表达式
  2. DaVinci:调整大小
  3. WebService开发--手机号码归属地查询和天气预报查询
  4. 用计算机弹123我爱你数字,数字谐音
  5. 【学习笔记】李宏毅-机器学习MachineLearning
  6. 软件架构发展历程分享
  7. std::true_type和std::false_type详解
  8. vs无法提示sourcetree的变基修改代码
  9. ZOJ Gold Coins2345
  10. JAVA设计模式之责任链模式