InfoQ

新闻

架构Twitter

作者 Steven Robbins 译者 王丽娟 发布于 2008年6月22日 下午9时40分

社区
Ruby,
Architecture
主题
数据库设计,
性能和可伸缩性,
Web 2.0
风行的社交应用Twitter,其底层架构最近已成为多次讨论的焦点。由于团队试图解决一些问题,Twitter已经有几次停止运行的情况,并关闭了几个常用的功能。从Twitter的前进脚步之中,我们能学到些什么呢?

包括Om MalikDare Obasanjo在内的几个人猜测是Twitter的底层架构导致了这些问题的出现。最近,Robert Scoble就应用情况和公司前景采访了Twitter的Evan Williams和Biz Stone。采访的视频可在qik上找到。

在采访中,Williams和Stone回答了关于Twitter数据架构的大问题:Twitter是否使用单实例存储(SIS)类型的方法来处理用户消息?在大约13分钟的采访记录中,Williams谈到了消息存储和用户时间线检索:
它不是这么处理的(为用户的每个跟随者都产生一个消息副本),但实际上这可能更有效率。现在消息存储到数据库中,当人们想获取他们的时间线时,我们从数据 库中构造时间线,然后缓存到内存中,当然不是每次都缓存。但由于内容写入太频繁,我们往往也要频繁地访问数据库,而这只是为了更新缓存。所以缓存中有很多 消息副本,而在磁盘上却只有一条消息。我们以后的架构可能更多的是以多次写入的方式,因为读取在这种方式下将快更多。
从SIS消息架构迁移的可能性为利用像数据Sharding这样的数据技术开启了一扇大门,数据Sharding技术已经在许多高容量网站和应用中广受欢迎。Randy Shoup谈到了eBay通过部分利用Sharding来架构系统的方式,以此获得高可伸缩性:
数据库层次的问题比较有挑战性,原因是数据天生就是有状态的。我们会按照主要的访问路径对数据做水平分割(或称为“Sharding”)。例如用户数据目 前被分割到20台主机上,每台主机存放1/20的用户。随着用户数量的增长,以及每个用户的数据量增长,我们会增加更多的主机,将用户分散到更多的机器上 去。商品数据、购买数据、帐户数据等等也都用同样的方式处理。用例不同,我们分割数据的方案也不同。
Bogdan Nicolau写过一篇为数据库Sharding基础的概述。在该系列中,Bogdan讨论了如何决定在何处、以及如何为应用分割数据。决定时的主要一点是:
我试图表达的是,无论你选择什么逻辑来切分表,总是要记住你不想有任何join、order by、或limit语句,这些语句会需要不止一个的表Shards。
Bogdan继续谈论了应用端对Shards的利用。Bogdan提供了几个代码例子来解释一个典型问题,同时还解释了背后的原理:
正如你所看到的,因为要生成映射表,负担主要落在了写入一方。读取时就不需要关心涉及的数据切分算法了。
随着众人参与关于如何扩展Web 2.0的讨论,Twitter也许将继续向一个更稳定、可伸缩的架构迈进。

InfoQ有许多性能和可伸缩性相关的资源,在这里查看这些资源
查看英文原文:Architecting Twitter

深度内容

文化基因生命周期

Julian Everett和Chris Matts认为:一个IT业务案例可以作为一种“文化基因(meme)”。它要在市场区隔这样的复杂生态系统中与其他文化基因——也就是其他IT业务案例 ——竞争。他们还揭示了其背后的理念。

基于VS2010的项目计划与跟踪

本演讲将探讨如何用Microsoft Visual Studio 2010搭配MSF for AgileScrum的流程模版,助力您的团队进行Agile项目的开发工作。本视频为第一部分,演示如何进行项目计划与跟踪。

在不改变语言的前提下如何推进Java的不断演进

在本文中,InfoQ谈到了有助于发掘潜在的新的Java语言特性的3种技术——DSL、注解处理器以及将语法糖从语言迁移到IDE中。

2010年大规模技术架构的思路

相比其他行业,IT技术由于信息流动便捷,新技术更新非常频繁。架构师经常面临新技术及传统方案选择的困惑。架构师应如何抓住本质构建新一代的应用?本文从几个方面提出一些思路供架构师参考。

功能小组模型的过程与质量控制

InfoQ中文站最近采访了微软的Ramesh,在采访中,Ramesh从过程控制、架构与设计的控制以及测试组织等方面分享了他所带领Visual Studio软件生命周期管理工具团队使用敏捷方式组织管理大规模软件团队方面的经验。

张文钿谈Rails开发及台湾Ruby社区

在去年10月份的Kungfurails大会上,InfoQ中文站有幸采访了从台湾专程赶过来的张文钿,与他探讨了关于台湾Ruby社区的发展、Rails的商业化,Restful Design等话题。

Scrum与策略

如果Scrum只关乎短期行为,战略人士又该如何去适应这种生态系统呢?更重要的是,它如何帮助企业领导人做出并且履行重要的承诺?

书评:《代码之道》

《代码之道》以一位微软内部人士的视角,揭示了关于软件编码、软件测试和项目管理的残酷现实。针对每一个话题,I.M.Wright都根据丰富的工作经验提出了自己的观点,并介绍了来龙去脉,令人信服。