# 解剖Twitter 【1】万事开头易

- 作者：邓侃
- 发布时间：2010-03-07 15:12
- 原文：https://www.ifanr.com/18816

时常听到“浮躁”这个词，批评现代人不求甚解，缺乏严谨踏实的作风。这种批评有狭隘之嫌。每代人所处的环境不同，面临的问题不同，所以逐渐养成一种风气，去适应新的环境，解决新的问题。

几百年前，人们读长篇小说，看歌剧，听交响乐。到了二十世纪，大家读杂志报纸，看电影电视，听流行歌曲。信息时代，人们上网，读博客，看视频。在这些表象的背后，促成这些风气进化的，是信息的产量与传播速度的激增。面对海量而且迅速更新的信息，人人捧读红楼梦，一唱三咏的局面是难以想象的。取而代之的，是要求信息的篇幅简短，而重点突出。

随着信息爆炸的加剧，微博客网站Twitter横空出世了。用横空出世这个词来形容Twitter的成长，并不夸张。从2006年5月 Twitter上线，到2007年12月，一年半的时间里，Twitter用户数从0增长到6.6万。又过了一年，2008年12月，Twitter的用户数达到5百万。\[1\]

Twitter用户数的急剧攀升，与几次重大事件有关，2007年3月美国SXSW音乐节，2008年11月印度孟买的恐怖事件，2009年1月奥巴马总统就职，2009年6月伊朗选举危机等等。重大事件的报导，特点是读者多，更新快。所以，Twitter网站的成功，先决条件是能够同时给千万用户提供服务，而且提供服务的速度要快。 \[2,3,4\]

有观点认为，Twitter的业务逻辑简单，所以竞争门槛低。前半句正确，但是后半句有商榷余地。Twitter的竞争力，离不开严谨的系统架构设计。

【1】万事开头易

Twitter的核心业务逻辑，在于Following和Be followed。\[5\]

进入Twitter个人主页，你会看到你following的那些作者，最近发表的微博客。所谓微博客，就是一则短信，Twitter规定，短信的长度不得超过140个字。短信不仅可以包含普通文字信息，也可以包含URL，指向某个网页，或者照片及视频等等。这就是following的过程。

当你写了一则短信并发表以后，你的followers会立刻在他们的个人主页中看到你写的最新短信。这就是be followed的过程。

实现这个业务流程似乎很容易。

1\. 为每一个注册用户订制一个Be-followed的表，主要内容是每一个follower的ID。同时，也订制一个Following的表，主要内容是每一个following作者的ID。

2\. 当用户打开自己的个人空间时，Twitter先查阅Following表，找到所有following的作者的ID。然后去数据库读取每一位作者最近写的短信。汇总后按时间顺序显示在用户的个人主页上。

3\. 当用户写了一则短信时，Twitter先查阅Be-followed表，找到所有followers的IDs。然后逐个更新那些followers的主页。

如果有follower正在阅读他的Twitter个人主页，主页里暗含的JavaScript会自动每隔几十秒，访问一下Twitter服务器，检查正在看的这个个人主页是否有更新。如果有更新，立刻下载新的主页内容。这样follower就能读到最新发表的短信了。

从作者发表到读者获取，中间的延迟，取决于JavaScript更新的间隔，以及Twitter服务器更新每个follower的主页的时间。

从系统架构上来说，似乎传统的三段论(Three-tier architecture \[6\])，足够满足这个业务逻辑的需要。事实上，最初的Twitter系统架构，的确就是三段论。

Reference，

\[1\] Fixing Twitter. （http://www.bookfm.com/courseware/coursewaredetail.html?cid=100777）   
\[2\] Twitter blows up at SXSW conference. （http://gawker.com/tech/next-big-thing/twitter-blows-up-at-sxsw-conference-243634.php）   
\[3\] First Hand Accounts of Terrorist Attacks in India on Twitter and Flickr. （http://www.techcrunch.com/2008/11/26/first-hand-accounts-of-terrorist- attacks-in-india-on-twitter/）   
\[4\] Social Media Takes Center Stage in Iran. （http://www.findingdulcinea.com/news/technology/2009/June/Twitter-on- Iran-a-Go-to-Source-or-Almost-Useless.html）   
\[5\] Twitter的这些那些. (http://www.ccthere.com/article/2363334) (http://www.ccthere.com/article/2369092)   
\[6\] Three tier architecture. http://en.wikipedia.org/wiki/Multitier\_architecture
