Facebook十年,深刻地改变了互联网。像Like(点赞)、Wall(留言墙)和Timeline(时间线)这些只不过是用户可以见到的产品创新,都是我们每次登陆时候能够见到的。在这些产品的后面,在庞大的数据中心里面,还能找到各种各样其他类型的技术。它们都在用不同的方式改变着我们的世界。
Facebook在全球的用户数量已经超过12亿,Facebook的工程师们要不断创造新的软件工具、新的硬件设备甚至是新型的数据中心,来为这样大规模的用户群服务。
从某种程度来说,Facebook所做的事情以前Google和Amazon也经历过。但是与这两家公司不同的是,Facebook将许多创新的方案开源,与全世界分享。这里说的不仅仅是软件代码,还有硬件设计,Facebook的目的就是为了能够帮助到下一下互联网公司。
Cassandra
扎克伯格2004年创办Facebook时,使用的是开源数据库MySQL,这是当时的标准Web开发工具。但是随着网站用户规模增加至百万级别,扎克伯格和工程师们发现需要用新的办法处理这个用户网络中的大量数据——也就是无穷尽的评论、点赞、图片和帖子。
幸运的是,Amazon和Google之前也发布了相关的研究论文,探讨了他们处理机器中数据的方法。虽然两家公司描述了实现方法,但是却没有公开代码。于是Facebook的工程师们基于两家公司的论文内容,设计了一个新的数据库Cassandra,并且在2008年开源了软件代码,这样其他人也可用了。
不过今天Facebook很大程度上靠的是Hbase,这是一个基于Google所发布的BigTable论文设计的大规模数据库。Cassandra的价值在于发起了Facebook的“NoSQL”数据库设计趋势,并且仍旧为一些知名的互联网公司(比如Netflix和Digg)所使用。目前是全世界第二受欢迎的NoSQL数据库,并且是增长速度第三的数据库系统。
Hadoop
在全球重新定义数据分析的开源工具Hadoop是Facebook的另一个成功故事。基于两篇Google的研究论文,Hadoop最早在Yahoo被开发出来,但是Facebook才是真正让Hadoop取得今天成就的原因。无论是互联网公司还是传统公司,Hadoop都已经成为分析大规模数据的标准。
Facebook是雅虎之外最早应用Hadoop的公司之一,在过去几年里,社交网络巨人Facebook改进了这个平台。比如,Hadoop在早期有几个重大的系统缺陷,导致无法在日常使用中普及:一次简单的数据分析有可能导致整个服务器集群崩溃。为了解决这个问题,Facebook的数据团队设计了一款名为Corona的工具,将计算进程隔离出来,这样就不会有独立任务拖垮整个系统。
与此同时,Facebook还将Hadoop提高到全球的规模。Hadoop最早是为单一数据中心的服务器设计,但是Facebook的团队让Hadoop能够在不同地理位置的不同计算中心上都可以运行。
TAO
和苹果一样,Facebook是最早一批用闪存存储替代老式硬盘的公司。通过使用一种名为Memcached的工具,Facebook将最频繁调用的数据分布到上千台服务器的内存子系统当中,进一步提高了速度。最近Facebook启用了名为TAO的工具,进一步利用了内存系统资源。
由Facebook设计的TAO能够用一个软件工具在硬盘和内存上存储数据。比如一些数据适合存储在硬盘上,另一些适合放在内存上,TAO能够同时实现这两点。这种混合存储模式在现代的数据中心里面非常受欢迎。TAO为这两种操作系统了统一的界面。
HHVM
在Facebook创办的早期,扎克伯格使用PHP语言编写网站代码。这在当时是最流行的编程语言,PHP可以很迅速、便捷地更新网站,这也是Facebook迅速脱颖而出的原因。但是有一个问题:PHP代码的运行效率不如C++和Java语言。
于是Facebook的工程师团队开始研发一款名为HHVM的工具——HipHopVirtualMachine(译注:嘻哈虚拟机)的缩写。这个工具能够将PHP代码在执行时转化成机器代码。
硬件
Facebook的创新并不仅仅限于软件方面,和Google一样,Facebook也在设计自己的硬件设备。而且Facebook更近一步,通过开放计算计划(OpenComputeProject)与全世界分享其硬件设计。
这一计划在2011年时被广受抨击。但是最终却在很大程度上改变了全球的硬件市场。许多公司现在都模仿Facebook的做法,直接到亚洲制造廉价的硬件设备,定制零部件。有一些甚至将自己的硬件设计开源。
Facebook近几年实现了采用室外空气对数据中心降温的做法。不仅有助于缩减成本,而且对环境也有好处。