facebook開源專案集合

文藝小青年發表於2017-07-06
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 Android SDK:針對Android平臺的SDK。
Facebook iOS SDK:針對iOS平臺的SDK。
Facebook JavaScript SDK:針對JavaScript應用的SDK。
Facebook PHP SDK:針對PHP應用的SDK。
 
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就有參與。
本文轉自二郎三郎部落格園部落格,原文連結:http://www.cnblogs.com/haore147/p/7197749.html,如需轉載請自行聯絡原作者


相關文章