解剖Twitter 【1】万事开头易

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




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

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

随着信息爆炸的加剧,微博客网站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

(6个打分, 平均:5.00 / 5)

雁过留声

“解剖Twitter 【1】万事开头易”有9个回复

  1. Ning 于 2010-03-07 7:02 下午

    俺觉得这事儿不单是一个技术问题,还是一个习惯问题。不知道我朝多少人习惯于随时随地,用简短的语句分享自己的所见所得……俺觉得会比用blog的人少。

  2. s.an 于 2010-03-07 11:44 下午

    现在国内n多网站也都在跟风玩微博吗,貌似还有几个玩的不错。

  3. ABCD 于 2010-03-07 11:47 下午

    twitter, facebook,myspace和youtube之流,恰恰说明了开始做所谓的网站架构是多么的不靠谱。。。
    他们都是以糙快猛起家的。
    twitter后来更强的貌似是运营而不是架构。而且就他们的业务量在2008年前其实都没什么挑战性。

  4. kk 于 2010-03-07 11:55 下午

    @Ning

    常更新qq签名的肯定比常写blog的多

  5. wenlujon 于 2010-03-08 2:07 上午

    没有用过twitter,最近一直在用google buzz,感觉蛮方便的,每天随手记录一些心得和体会。

  6. wenlujon 于 2010-03-08 2:08 上午

    哦,对了,突然想起来,twitter和buzz的意思蛮接近的嘛。

  7. shaomeng 于 2010-03-16 3:58 上午

    是呀,我从buzz那里知道了follow的概念,从这个文章知道了这个概念是twitter的核心~~

  8. gaotianpu 于 2010-04-27 9:24 下午

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

    是一种Push机制?Push到哪里?

  9. Jerry Lee 于 2010-10-10 10:22 下午

    获益匪浅~ 高~

    PS: 文章对就的URL的太难看了,不方便的大家的收藏啊。可以改进一下啊,:) http://www.tektalk.org/2010/03/07/%E8%A7%A3%E5%89%96twitter-%E3%80%901%E3%80%91%E4%B8%87%E4%BA%8B%E5%BC%80%E5%A4%B4%E6%98%93/