书城管理推特风暴
4605500000008

第8章 好奇心催生 Twitter(6)

打个形象的比方,缓存就相当于一个会客厅,当访问的客人太多而主人又不能及时接待时,就需要有一些功能相对完备的会客厅来分散人流——按照重要性和访问频率排序,把最重要的和最经常访问的客人集中到一间会客厅中,一般重要的和不经常访问的客人集中到其他会客厅,这样主人在接待访客时就能够更有针对性、更有效率。在 Twitter中,访客就相当于各种信息数据,主人就相当于处理这些数据的核心系统,为了能尽快地实现数据交互,有必要将数据表进行拆解,然后将其中读写最频繁的内容放入缓存。那么什么是读写最频繁的内容呢?很多人可能以为是信息,但事实并非如此。在 Twitter中,被读写最频繁的数据是 IDs即各种编码,包括新发表的短信编码、发表者的编码、热门短信的编码以及订阅者的编码等。每当用户发送请求时,都不可避免地要先接触形形色色的编码,然后才能进入正文,因此说信息正文与各种编码比起来是次要的。为了提高效率,Twitter的工程师们将各种编码放入统一的缓存空间,并给它起名为 Vector Cache,然后将消息正文存入另一个缓存空间——Row Cache,这样数据就被分开了。处理数据时,首先要保证 Vector Cache所需的资源,然后才轮到 Row Cache。这种设计大大提高了 Twitter的反应速度,使用户可以获得更好的上网体验,为 Twitter赢得了好口碑。

移动和便捷是 Twitter的第二个诉求。Twitter不但支持传统的Web浏览器访问,还支持手机移动平台及各种即时通讯工具的访问。打个形象的比方,如果要接纳更多种不同类型的客人,就不能大门紧闭,也不能只建一条专用通道,而是必须要有一个开放且安全的关口。前来访问的客人在关口通报姓名并获得允许后就可以进入房间进行访问。为了更好地实现这个功能,Twitter建立了以 Apache Web Server为门户的 Web通道和 API的通道,而其中API通道就是这个在一定规则下开放的关口,是主要受理流量的通道。由于 Twitter的名气如日中天,前来申请访问的各种类型的客户越来越多,这个关口承受的压力也越来越大,当然速度就会逐渐降下来。为了提升关口的效率,Twitter的工程师们又动用了缓存。

他们设计了 Fragment Cache和 Page Cache两类缓存,前者将用户见到的作者主页或信息页面分成若干个局部,然后一一缓存,后者则将用户本人的主页缓存起来,用户访问时读取比较频繁的主要是Fragment Cache中的内容,而 Page Cache则被分离出来,放到不同的机器上运行,这样就可以根据不同的需求调用程序,从而提高了API通道的运行效率。

多级缓存的运用使 Twitter拥有了处理复杂数据流的能力,服务质量得到明显的提升。

突破技术瓶颈

2007年 10月,Google完成了收购 Jaiku的企划案。但彼时 Twitter已经做好了应战的准备,技术的完善使它更有信心迎接其他人的挑战。不过Jaiku重新开放后并没有取得预想中的效果,尽管拥有相对稳定的客户流,但新用户数的增长速度并不理想,始终处于一种不温不火的状态之中,而Google似乎也没有兴趣投入更多的人力、财力进一步开发这项服务。看起来,Jaiku与Twitter正在并行不悖地发展着,Google的收购案并没有给Twitter带来实质性的伤害,反倒是在一定程度上促成了人们对Twitter的进一步关注。

现在似乎可以暂时松一口气了。但很快,这种相对平静的局面就再次被打破了。

2008年春,Twitter又迎来了新一轮的挑战。而这次的挑战首先来自自身的技术瓶颈。由于用户数量的持续增多,Twitter的月独立用户访问量再创历史新高,达到了50万。用户上传信息的爆炸式增长明显超出了Twitter的承载限度。Twitter在最初的架构过程中,主要是面向内容的管理系统,因此在面对大量信息时显得有些力不从心,于是一个让人恼火的现象出现了——Twitter开始频繁宕机,并且很多时候是长时间宕机。在这个春季,很多Twitter用户一登录就看见Twitter停机维护的通告。

对于一个网站来说,频繁的宕机是非常致命的,它破坏了用户的网络体验,影响了用户的上网习惯,可能导致用户数量的下降。

尽管此刻Twitter已经拥有众多的粉丝,但这种弊端仍然非常严重。

很多Twitter使用者为此非常苦恼,在Twitter宕机的时间里,他们的生活仿佛也受到了影响——没有心思做别的事情,情愿一而再再而三地不断尝试登录,但是迎接他们的总是不咸不淡的停机维护通知。推迷们抱怨说Twitter应该及时改进服务质量,阻止宕机情况的一再发生,否则就要考虑寻找新的替代品。

苍蝇不叮无缝的蛋,你的漏洞往往就会成为敌人的突破口。正当Twitter苦恼于频繁发生的宕机故障时,另一个微博客社交网站——Plurk问世了。

Plurk是由一个叫做A-team的组织创建的支持多种语言的可视化微博客网站。与Twitter类似,Plurk也主张极简主义,将消息的规模限定在140个字符,用户同样可以在网站上设定自己关注的人,或者被人关注,并且可以随时查阅关注的人的更新信息。时间轴是Plurk的最主要特色,用户自己和好友的信息都被整合在时间轴上,这样用户就可以通过拖动时间轴来方便地查阅信息。此外,为了鼓励用户更多地使用网站的服务,Plurk设定了一个特殊的热度计算系统——Karma,用户每天发表质量较高的Plurk信息、保持活跃的状态、成功邀请好友加入或者发表的信息被回复等都可以使Karma值得到增长。当然,如果用户超过一定时间不活动,发表超过限量的Plurk信息,或者发送的注册邀请被拒绝也会导致Karma值的下降。Karma值对于用户来说不仅仅是一个活跃值或者贡献值,而且意味着一种资格——拥有高Karma值的用户可以得到系统提供的更多附加服务,这使得用户愿意花费更长的时间在线使用Plurk以获得更高的Karma值。也许是考虑到系统数据处理的负荷问题,Plurk从一推出就做出了用户每天所发信息的数量限定,超出这个限定将以Karma值的减少给予惩罚,这在一定程度上避免了因大量无用信息的堆积造成服务中断。

Plurk的出现再次向Twitter提出了挑战。与Jaiku不同,Plurk在产品的定位上更准确,在产品的营销上也更有经验。其人性化的设计,便捷的服务,独特的热度计算系统和时间轴服务吸引了大批用户,很快成为Twitter的有力竞争对手,在某些地区受欢迎的程度甚至远远超过了Twitter。

面对系统宕机和竞争对手的双重挑战,Twitter感受到了前所未 有的压力。为了扭转这一局面,Twitter决定放弃以前使用的 Rubyon Rails开发工具,尝试寻找新的支持可扩展性强的语言。大家在一起罗列了很多可供选择的语言,但都因为存在这样那样的问题而被一一否定了。这时有人想到了Scala。在 JVM平台上,Scala执行速度的表现是相当优秀的,几乎难以找到另一种语言能与之匹敌。

经过反复的研究和讨论,Twitter决定采用 Scala进行开发。很快,数据处理的速度得到了明显改善,宕机的次数也逐渐减少。人们又开始重新陆陆续续地回到 Twitter了。

危机中的意外收获

不得不提的是,本是非常致命的宕机现象居然造就了 Twitter的另一个传奇——宕机鲸的走红。对于处在麻烦之中的 Twitter而言,宕机鲸无疑是一个意外的收获。

起初人们对 Twitter的宕机抱有一种无奈和埋怨的情绪。但是某一天,当他们打开 Twitter网站时突然看到一幅有趣的画面——一条搁浅的白色鲸鱼被八只衔着网绳的红色小鸟奋力地拉向天空,图片上写着“Twitter is currently down for maintenance”(Twitter正在停机维护)。这是比兹·斯通一次偶然的机会在 iStockphoto上看到的一幅作品,这幅透露着可爱、无奈、团结等含义的图案是由上海女孩陆怡颖设计的,当时比兹正在考虑如何最大可能地降低Twitter因为经常宕机带来的不利影响,他的本意是想设计一个比较轻松的界面,这样人们在面对宕机时不会因为界面的枯燥而进一步加深烦躁的情绪。在搜索各个设计网站寻找创意时,他突然看到了 这幅作品,眼睛猛然一亮:当鲸鱼搁浅时,八只小鸟团结一致地将它拉向天空所体现出来的拼搏向上的团队合作精神正是 Twitter全体员工的真实写照!这简直就是为 Twitter量身打造的图片!他立刻联系陆怡颖,花钱买下了这幅图片,并将它贴到网站上,作为Twitter宕机时暂停服务的画面。

令比兹和所有人都没有想到的是,这幅图片甫一露面就被众多Twitter网友热推。人们疯狂转载这幅略带幽默的图片,加州一个网站工作者甚至专门为这条鲸鱼做了一个网站——failwhale.com,很多喜欢这条鲸的人都加了进来。为了能给这条鲸取一个非常有特点的名字,人们在 Flickr网站上展开了一次大讨论,有人建议说因为每次 Twitter出现问题宕机时,这条鲸鱼就会出现,因此应该叫它宕机鲸(fail whale)。于是宕机鲸就此诞生了,很多人为它撰写传记,还由此衍生了多个版本的宕机鲸漫画。陆怡颖也因为这条可爱的鲸鱼受到了 Twitter网友们不遗余力的追捧,并形成了包括茶杯、T恤等产品在内的一系列宕机鲸品牌。

在网站上,宕机鲸同样受到了热烈的欢迎,不论是在 Youtube上还是在 Facebook上,鲸鱼迷们都在热情高涨地活动着,各种视频和图片被不断更新,Twitter上关于宕机鲸的更新信息更是令人瞩目的焦点。此时人们已经忘记了当初系统宕机所带来的苦恼,反而将宕机鲸当作一种心境,一种文化加以推广——用轻松的心情面对困难;换一种角度看问题……各种诠释使宕机鲸有了更深的文化内涵。有人甚至将宕机鲸图案纹在身上,并将图片发送到网络上,这个行为直接导致的结果是关注他的人数暴涨,迅速突破了 3000。

整个夏天,人们都在为这条鲸鱼而疯狂,以至于有人说,宕机鲸的出现是这个夏天最大的惊喜。

宕机鲸现象使人们看到了 Twitter迷们对 Twitter近乎偏执而疯 狂的喜爱。不论是正在服务,还是正在维护,人们对它的热情丝毫不减,确实,一个连系统故障页面都表现得如此生动独特的网站怎么会不受人追捧与欢迎?

Twitter用自己的努力和创意应对了成长道路上的一个又一个挑战,并且每次都能够在关键时刻化险为夷,再次向世人证明了它强大的实力和独到的魅力!

“碎碎念”来到中国

微博开启了一种新的表达方式,一种不重在追求意义的表达,仅是为表达而表达。有人将这种表达方式形象地概括为“碎碎念”。

以Twitter为代表的微博客向世人昭示了这种力量——琐碎汇聚的力量。

随着知名度的持续提升和技术的不断完善,Twitter的用户量再一次呈现跳跃式发展,到2008年5月初,Twitter已经拥有了108万用户。Twitter的火爆可以用红得发紫来形容,它不但赢得了用户,更引领了一种文化风潮。眼看着Twitter炙手可热,风景独好,很多公司和技术人员开始坐不住了。他们纷纷投入力量开发同类产品,一时间,众多微博客网站如雨后春笋般在世界各个国家纷纷诞生。以至于有人感叹,在这样一个时代,你想不知道微博都不可能,因为它无处不在!

碎碎念从Twitter开始,向世界的每一个角落疯狂蔓延。中国当然避免不了受它的影响。