Twitter新系统架构性能大幅度提升

标签: 云计算 互联网 动态 SOA twitter | 发表时间:2013-08-18 03:41 | 作者:关志刚
出处:http://www.ctocio.com

8月3日《天空之城》在日本的热播创下每秒新增143119条推文的Twitter峰值记录,是Twitter平均每秒发推数(TPS)5700条的25倍。

值得注意的是,在这次毫无征兆的“洪峰”到来时,Twitter全新的系统平台并没有被潮水般涌来的推文堵塞而产生任何延迟甚至宕机。

TWITTER perf-improvements-2

Twitter旧架构与新架构的性能对比

仅仅三年前,在2010年世界杯上,一个点球和一张红牌产生的“推文风暴”都可能导致Twitter服务暂时失去响应,号称地球脉搏的Twitter经常“心肌梗塞”。过去三年Twitter的工程师们夜以继日的工作,试图用“缝缝补补”的方式完善Twitter系统,但最终随着Twitter的快速发展,这些方法的收效转瞬即逝。

最终,Twitter痛下决心重新架构为人诟病的IT系统,新平台上线运行后在性能和可靠性上都取得的翻天覆地的进步。无论是《天空之城》热播还是超级碗决赛都没能卡住Twitter,而且新的架构也为Twitter推出多媒体推文卡片,跨设备消息同步等新功能的推出提供了有力的支撑。

最近,Twitter平台工程副总裁Raffi Krikorian(@raffi)在Twitter官方博客 撰文分享了Twitter新架构的方法和经验,摘要如下:

重新架构的缘由与问题症结

2010年世界杯多次卡壳后,我们重新审视了系统,有以下几点发现:

我们运行着全球最大的Ruby on Rails应用,200名工程师负责开发运维这个系统,但随着用户规模和服务数量的快速增长,系统所有的数据库管理、Memcache链接以及公共API的代码属于同一个代码库。这给工程师的学习、管理和并行开发都带来巨大困难。

我们的MySQL存储系统已经遇到性能瓶颈。整个数据库中到处都是读写热点。

通过添置硬件已经无法解决根本的系统问题——我们的前端Ruby服务器每秒处理交易的数量大大低于我们的预期,也与其硬件性能不成比例。

从软件的角度看,我们陷入了“优化的陷阱”。我们是在牺牲代码库的可读性和灵活性来换取性能和效率。

重新检视系统,并设定三大目标/挑战

一、新架构必须在性能、效率和可靠性上表现优异,减少延迟大幅提升客户体验;同时将服务器数量减少到原来的十分之一;新系统能够隔离硬件问题防止其演变为大规模宕机。

二、解决单一代码库的种种弊端,尝试松耦合的面向服务模型。我们的目标是鼓励封装与模块化的最佳实践,但这次是在系统层面,而不是类库、模块和数据包的层面。

三、最重要的是能够支持新功能的快速发布。我们希望能够由一些充分授权的小团队能做出自主决策,并独立发布一些用户功能。

我们在动手前部分开发了一些概念验证模型,最终我们确定了重建的原则、工具和架构。

系统重建的关键措施

一、前端服务:用JVM取代Ruby VM。通过重写代码库将Ruby VM服务移植到JVM,性能提高了10倍,如今性能达到 10-20k请求/秒/主机。

二、编程模型:按服务类型对系统进行结构,建立一个统一的客户端服务器库并与负载均衡、故障转移策略等绑定,从而让工程师们能更加专注于应用和服务界面。

三、采用SOA面向服务架构,使并行开发成为可能。

四、推文的分布式存储。即使将整块单一应用分解成不同的“服务”,存储依然是个巨大的瓶颈。过去Twitter采用的单一MySQL主数据库只能线性写入推文,Twitter决定在推文的存储上采用全新的分区策略,用Gizzard框架创建容错的分片分布式数据库存储推文,但这样一来就没有办法使用MySQL的唯一ID生成功能。Twitter用 Snowflake解决了这个问题。

五、监测与统计。将单一应用转化为复杂的SOA应用后,需要购买匹配的工具才能够驾驭。Twitter的服务推出速度很快,同时还需要实现数据化的决策支持,Twitter的Runtime系统团队为工程师开发了两个工具Viz和 Zipkin

相关 [twitter 系统架构 性能] 推荐:

Twitter新系统架构性能大幅度提升

- - IT经理网
8月3日《天空之城》在日本的热播创下每秒新增143119条推文的Twitter峰值记录,是Twitter平均每秒发推数(TPS)5700条的25倍. 值得注意的是,在这次毫无征兆的“洪峰”到来时,Twitter全新的系统平台并没有被潮水般涌来的推文堵塞而产生任何延迟甚至宕机. Twitter旧架构与新架构的性能对比.

twitter系统架构分析

- - 企业架构 - ITeye博客
twitter系统架构分析. (一)twitter的核心业务. twitter的核心业务,在于following和be followed:. (1)following-关注. 进入个人主页,会看到你follow的人发表的留言(不超过140个字),这是following的过程;. (2)followed-被关注.

从0开始设计Twitter系统架构

- - DockOne.io
【编者的话】Twitter是全球最大的社交网络之一,如果让我们从0开始设计twitter的系统架构,该怎么做呢. 这篇文章简单介绍了设计类twitter系统的思路并在最后给出了参考设计. 原文: Twitter System Architecture. Twitter是全球领先的在线社交网络服务,用户可以在这里发布和阅读被称为“推文(tweets)”的短消息.

系统架构性能优化思路

- - DockOne.io
今天谈下业务系统性能问题分析诊断和性能优化方面的内容. 这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点. 我们首先来分析下如果一个业务系统上线前没有性能问题,而在上线后出现了比较严重的性能问题,那么实际上潜在的场景主要来自于以下几个方面. 业务出现大并发的访问,导致出现性能瓶颈.

HBase 系统架构

- - 博客园_首页
HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问. HBase的目标是存储并处理大型的数据. HBase是一个开源的,分布式的,多版本的,面向列的存储模型. 5 可在廉价PC Server搭建大规模结构化存储集群. HBase是Google BigTable的开源实现,其相互对应如下:.

Facebook 的系统架构

- Ivan - 博客园新闻频道
  来源:http://www.quora.com/What-is-Facebooks-architecture (由Micha?l Figuière回答).   根据我现有的阅读和谈话,我所理解的今天Facebook的架构如下:. Web 前端是由 PHP 写的. Facebook 的 HipHop [1] 会把PHP转成 C++并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能.

Digg.com 的系统架构

- - 标点符
在过去的几年间,我们一直致力于重构Digg的架构,现在我们称之为“Digg V4”.本文我们将全面介绍Digg的使用的系统和技术. 首先,我们来看下Digg给大众用户提供的服务吧:. 人们通过浏览器或者其他应用来访问这些Digg服务. 一些有Digg账户的用户,可以得到“我的新闻”. 每位用户可以得到的我们称之为“热门新闻”.

系统架构师JD

- - CSDN博客架构设计推荐文章
国内大型的物流企业,专业从事国内公路运输和航空运输代理. Foss项目的架构设计,包括需求分析,模块设计,系统结构设计,关键功能的开发,技术难题的解决,对团队质量输出的把控等等. 1、熟悉WebLogic/Websphere/JBoss等一个以上大型应用服务器,熟悉Linux及应用服务器集群. 2、 具有丰富J2EE架构设计经验,具有大型基于J2EE体系结构的项目规划、系统架构设计、开发经验.

Android 系统架构分析

- - CSDN博客移动开发推荐文章
Android:开源的 Linux + Google 的封闭软件 + 私有的基带 + 运营商锁定 = 开放的 Android 手机. iPhone:开源的 BSD + 苹果的闭源软件 + 私有的基带 + 运营商锁定 = 封闭的苹果 iPhone. 一个平庸的应用商店,开发者依靠广告赚钱,商店并非独此一家,用户找不到好软件.