【企業開源系列】後起之秀Facebook憑什麼挑戰互聯網霸主Google?

作者:王果  (2013年8月發表於CSDN資訊

儘管 Google極其推崇開源,並推出大量的開源項目,但是從根本上來看,Google的開源力度、開放程度遠遠比不上Facebook。這也是爲什麼Facebook能夠在短短的幾年間,一躍成爲全球最大的社交網站的原因之一。本文就來看看Facebook背後的開源力量。


[企業開源系列]系列專注於全球著名企業(包括國內企業)中的開源現狀,探討開源軟件的力量,以使更多的開發者瞭解開源、貢獻開源,打造更加和諧的國內開源生態。

一、Facebook vs. Google

Facebook從2004年創始以來,已經從一個哈佛大學校內網站一躍發展成爲了全球最大的社交網站。目前,Facebook的用戶數量已經突破10億,全球平均每天有7億用戶在使用其服務,遠遠將Google+(活躍用戶3.43億)甩在了身後。

相比Google+,Facebook已經完勝。Facebook大量的用戶也造就其鉅額的廣告收入,在互聯網廣告業務方面,Facebook已經成爲Google最具威脅的競爭對手。

Facebook發展如此迅速,與其內部大量的人才分不開。而近幾年,Facebook與Google的競爭也體現在人才搶奪戰中。Facebook瘋狂從Google、微軟、蘋果、雅虎等公司挖掘人才,以微軟爲例,2012年每1名Facebook員工跳槽至微軟,就有30.5名微軟員工跳槽至Facebook。而Google對Facebook的該比例爲15.5 : 1。

如今Facebook的員工總數已達5000人,儘管如此,Facebook公司的規模還只相當於Google的十分之一(Google員工已經達到5萬多人)。而在資金方面,Facebook比Google也差了一大截。

在人力、財力都不及對手的情況下,Facebook憑什麼得以與互聯網的霸主Google抗衡?其中一個很大的因素就是開源,這樣可以吸引全球更多的開發者爲你工作,以此來彌補某些不足。

二、Facebook的開源大手筆

儘管Google一直聲稱擁抱開源,但是Google對於其某些技術、服務器方面的信息諱莫如深。而在此方面,Facebook要顯得大度得多。

1.  開源Facebook平臺代碼

Facebook在2008年選擇將該平臺上的重要部分的代碼和應用工具開源。Facebook稱,平臺已經基本發展成熟,此舉可以讓開發者更全面地理解整個Facebook平臺,更容易地爲Facebook開發應用軟件,並可以回報社區。

該項目代號爲“FBOpen”,其中包含了實現Facebook平臺的一些基礎設施、功能等,如API架構、FQL分析器、FBML分析器、FBJS,以及許多常用方法和標籤的實現,代碼基於PHP。這意味着其他開發者可以很方便地利用Facebook所採用的基礎設施和技術。

項目地址: https://github.com/facebook/platform/tree/master/fbopen

開源的代碼中,絕大部分使用CPAL(Common Public Attribution License)許可,而FBML分析器使用的是MPL(Mozilla Public License)許可證。

2.  開源數據中心和網絡系統

爲了在數據中心上與Google對抗,2011年Facebook宣佈了 開源計算項目(Open Compute Project,簡稱OCP)計劃。該項目旨在創建“開源的”數據中心硬件,Facebook數據中心設計圖、服務器配置、數據中心監控界面等悉數開源。Facebook此舉的目的是爲大數據中心建立更快、更便宜、用材更少的硬件。更重要的是,通過OCP免費提供的設計,任何企業都可以使用它,並對其進行調整。

今年5月份,Facebook又 宣佈將其包括交換機等網絡設備在內的網絡系統開源。

採用開源數據中心,使得Facebook可以與Google這一規模、經濟實力都在它之上的對手在數據中心領域展開競爭。

三、Facebook開源的基礎設施

除了大的系統平臺、數據中心外,Facebook也開源了其所使用的基礎設施和服務。介紹如下。

1.  Apache Cassandra

這是一個分佈式的存儲系統,用來管理結構化數據,並可以擴展非常大型的、跨多個商品服務器(commodity servers)的大數據集,而不用擔心出現單點故障。

2.  Apache Hive

這是一個數據倉庫基礎設施,構建於Hadoop之上,其提供的工具可以輕鬆對大數據集進行數據彙總、即席查詢(adhoc querying)和分析等。

3.  FlashCache

這是一個針對Linux的通用的回寫塊緩存。它可以作爲一個可加載的Linux內核模塊,在文件系統之下使用。

4.  HipHop for PHP

這是一個PHP虛擬機、運行時、JIT(Just In Time,實時生產系統)。它的前身是HPHPc(可將PHP代碼編譯爲C++的項目)。HipHop虛擬機爲PHP代碼帶來了一個大大的性能提升。

5.  folly

folly(Facebook Open-source LibrarY)是一個提供類似std和boost功能的底層庫,基於C++11特性。folly的開發者包括了Andrei Alexandrescu之類的C++編程領域的大師級人物。folly與std和boost的最大不同就是在大規模的場景中效率更高。

6.  Scribe

這是一個可擴展的服務,用於從大量的服務器中實時聚合日誌數據流。

7.  Thrift

該項目提供了一個框架,用於可擴展的跨語言服務開發。Thrift結合了一個軟件堆棧和一個代碼生成引擎,來構建可高效工作的服務,可無縫跨C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml、Delphi和其他語言。

8.  Tornado

一個相對簡單、無阻塞的Web服務器框架,使用Python編寫。它被設計用來處理成千上萬的併發連接,這使得它非常適合實時Web服務。

9.  React

這是一個用於構建用戶界面的JavaScript庫,用來呈現 instagram.com和Facebook的部分站點。

10.  FBMock

FBMock是一個PHP mocking框架,簡單且易於使用。

四、Facebook開源的內部開發工具

Facebook也選擇將其內部開發人員所使用的工具開源。

1.  codemod

可以協助開發者對大型代碼庫進行部分自動化重構工作,但仍然需要人的監督和不定期的干預。

2.  Facebook Animation

這是一個JavaScript庫,可以幫助開發者使用DOM和CSS來創建自定義動畫。

3.  Online Schema Change for MySQL

允許你在線更改集羣中的大型數據庫表,而不需將集羣離線。

4.  Phabricator

這是一個Web應用程序集合,可以幫助開發者輕鬆編寫、審查和共享源代碼。目前數百名Facebook工程師每天都在使用它。

5.  PHPEmbed

該工具使得嵌入PHP對於開發者來說變得真正簡單,這是一個更方便和更簡化的、構建於PHP SAPI之上的API。

6.  phpsh

該工具爲PHP提供了一個交互式的shell,功能包括readline歷史、標籤自動完成以及快速訪問文檔等。有趣的是這個工具是用Python寫的。

7.  Three20

這是一個針對iPhone開發者的Objective-C庫,提供了很多UI元素和數據輔助工具,不過該項目現在已經不維護了,不過你可以用於iOS5/6系統的應用開發中。

8.  XHP

XHP是一個PHP擴展,可以增強PHP語言的語法,比如將XML文檔片段變爲有效的表達式。

9.  XHProf

這是一個針對PHP的函數級的分層分析器,擁有一個簡單的基於HTML的導航界面。

五、開發平臺

Facebook的平臺工程團隊也發佈和維護着一些開源的平臺SDK,這些SDK可以幫助開發者很方便地將Facebook整合進第三方應用中。

六、Facebook工程師貢獻的開源項目

Facebook的工程師也參與了很多開源項目的貢獻。這些開源項目在Facebook中都有應用,並在生產環境中得到了優化。

1.  Apache Hadoop

Apache Hadoop提供了可靠的、可擴展的、分佈式的計算基礎設施,在Facebook中用於數據分析。

2.  Apache HBase

這是一個分佈式的、面向列的數據存儲,構建於Hadoop分佈式文件系統(HDFS)之上。

3.  Cfengine

這是一個基於規則的配置系統,用於服務器的自動配置和維護。Facebook使用Cfengine來維護主機配置,並在產品層面上自動化許多管理操作。

4.  jemalloc

這是一個快速、一致、支持堆分析的內存分配器。Facebook的工程師爲其添加了堆分析特性,並做出了很多優化。

5.  memcached

這是一個分佈式的內存對象緩存系統。Memcached最初不是由Facebook開發的,但Facebook已經成爲了該技術的最大用戶。

6.  MySQL

MySQL是Facebook數據庫基礎設施的骨幹。你可以在 Launchpad中找到很多Facebook貢獻的補丁,還可以通過 MySQL@Facebook頁面來了解Facebook如何使用它。

7.  PHP

Facebook的大部分代碼都是使用PHP開發的。它的語法很簡單,讓Facebook在產品上能夠更快地遷移和迭代。

8.  Varnish

在Facebook,該項目每天處理來自全世界用戶的數十億請求。當你加載朋友的圖片和和頭像時,Varnish就有參與。

總結

由上可知,Facebook在開源方面的力度非常大。在與規模、財力都在其之上的Google的競爭中,開源確實是一個非常好的途徑——採用開源項目,使得Facebook可以使用很少的成本即可快速構建穩定、高效的系統;而通過將自己的產品開源,Facebook吸引了全球大量的優秀的開發者爲其工作。

Facebook的所有開源項目都可以在Github中找到: https://github.com/facebook

利用開源,使得Facebook這個後起之秀能夠快速崛起,並逐漸縮小與互聯網霸主Google的差距。還有哪些企業利用開源獲得了成功呢?請關注[企業開源系列]的後續報道。

相關閱讀:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章