facebook开源项目集合
Facebook的開源大手筆
1. 開源Facebook平臺(tái)代碼
Facebook在2008年選擇將該平臺(tái)上的重要部分的代碼和應(yīng)用工具開源。Facebook稱,平臺(tái)已經(jīng)基本發(fā)展成熟,此舉可以讓開發(fā)者更全面地理解整個(gè)Facebook平臺(tái),更容易地為Facebook開發(fā)應(yīng)用軟件,并可以回報(bào)社區(qū)。
該項(xiàng)目代號(hào)為“FBOpen”,其中包含了實(shí)現(xiàn)Facebook平臺(tái)的一些基礎(chǔ)設(shè)施、功能等,如API架構(gòu)、FQL分析器、FBML分析器、FBJS,以及許多常用方法和標(biāo)簽的實(shí)現(xiàn),代碼基于PHP。這意味著其他開發(fā)者可以很方便地利用Facebook所采用的基礎(chǔ)設(shè)施和技術(shù)。
項(xiàng)目地址:https://github.com/facebook/platform/tree/master/fbopen
開源的代碼中,絕大部分使用CPAL(Common Public Attribution License)許可,而FBML分析器使用的是MPL(Mozilla Public License)許可證。
2. 開源數(shù)據(jù)中心和網(wǎng)絡(luò)系統(tǒng)
為了在數(shù)據(jù)中心上與Google對抗,2011年Facebook宣布了開源計(jì)算項(xiàng)目(Open Compute Project,簡稱OCP)計(jì)劃。該項(xiàng)目旨在創(chuàng)建“開源的”數(shù)據(jù)中心硬件,F(xiàn)acebook數(shù)據(jù)中心設(shè)計(jì)圖、服務(wù)器配置、數(shù)據(jù)中心監(jiān)控界面等悉數(shù)開源。Facebook此舉的目的是為大數(shù)據(jù)中心建立更快、更便宜、用材更少的硬件。更重要的是,通過OCP免費(fèi)提供的設(shè)計(jì),任何企業(yè)都可以使用它,并對其進(jìn)行調(diào)整。
今年5月份,F(xiàn)acebook又宣布將其包括交換機(jī)等網(wǎng)絡(luò)設(shè)備在內(nèi)的網(wǎng)絡(luò)系統(tǒng)開源。
采用開源數(shù)據(jù)中心,使得Facebook可以與Google這一規(guī)模、經(jīng)濟(jì)實(shí)力都在它之上的對手在數(shù)據(jù)中心領(lǐng)域展開競爭。
Facebook開源的基礎(chǔ)設(shè)施
除了大的系統(tǒng)平臺(tái)、數(shù)據(jù)中心外,F(xiàn)acebook也開源了其所使用的基礎(chǔ)設(shè)施和服務(wù)。介紹如下。
1. Apache Cassandra
這是一個(gè)分布式的存儲(chǔ)系統(tǒng),用來管理結(jié)構(gòu)化數(shù)據(jù),并可以擴(kuò)展非常大型的、跨多個(gè)商品服務(wù)器(commodity servers)的大數(shù)據(jù)集,而不用擔(dān)心出現(xiàn)單點(diǎn)故障。
2. Apache Hive
這是一個(gè)數(shù)據(jù)倉庫基礎(chǔ)設(shè)施,構(gòu)建于Hadoop之上,其提供的工具可以輕松對大數(shù)據(jù)集進(jìn)行數(shù)據(jù)匯總、即席查詢(adhoc querying)和分析等。
3. FlashCache
這是一個(gè)針對Linux的通用的回寫塊緩存。它可以作為一個(gè)可加載的Linux內(nèi)核模塊,在文件系統(tǒng)之下使用。
4. HipHop for PHP
這是一個(gè)PHP虛擬機(jī)、運(yùn)行時(shí)、JIT(Just In Time,實(shí)時(shí)生產(chǎn)系統(tǒng))。它的前身是HPHPc(可將PHP代碼編譯為C++的項(xiàng)目)。HipHop虛擬機(jī)為PHP代碼帶來了一個(gè)大大的性能提升。
5. folly
folly(Facebook Open-source LibrarY)是一個(gè)提供類似std和boost功能的底層庫,基于C++11特性。folly的開發(fā)者包括了Andrei Alexandrescu之類的C++編程領(lǐng)域的大師級(jí)人物。folly與std和boost的最大不同就是在大規(guī)模的場景中效率更高。
6. Scribe
這是一個(gè)可擴(kuò)展的服務(wù),用于從大量的服務(wù)器中實(shí)時(shí)聚合日志數(shù)據(jù)流。
7. Thrift
該項(xiàng)目提供了一個(gè)框架,用于可擴(kuò)展的跨語言服務(wù)開發(fā)。Thrift結(jié)合了一個(gè)軟件堆棧和一個(gè)代碼生成引擎,來構(gòu)建可高效工作的服務(wù),可無縫跨C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml、Delphi和其他語言。
8. Tornado
一個(gè)相對簡單、無阻塞的Web服務(wù)器框架,使用Python編寫。它被設(shè)計(jì)用來處理成千上萬的并發(fā)連接,這使得它非常適合實(shí)時(shí)Web服務(wù)。
9. React
這是一個(gè)用于構(gòu)建用戶界面的JavaScript庫,用來呈現(xiàn)instagram.com和Facebook的部分站點(diǎn)。
10. FBMock
FBMock是一個(gè)PHP mocking框架,簡單且易于使用。
Facebook開源的內(nèi)部開發(fā)工具
Facebook也選擇將其內(nèi)部開發(fā)人員所使用的工具開源。
1. codemod
可以協(xié)助開發(fā)者對大型代碼庫進(jìn)行部分自動(dòng)化重構(gòu)工作,但仍然需要人的監(jiān)督和不定期的干預(yù)。
2. Facebook Animation
這是一個(gè)JavaScript庫,可以幫助開發(fā)者使用DOM和CSS來創(chuàng)建自定義動(dòng)畫。
3. Online Schema Change for MySQL
允許你在線更改集群中的大型數(shù)據(jù)庫表,而不需將集群離線。
4. Phabricator
這是一個(gè)Web應(yīng)用程序集合,可以幫助開發(fā)者輕松編寫、審查和共享源代碼。目前數(shù)百名Facebook工程師每天都在使用它。
5. PHPEmbed
該工具使得嵌入PHP對于開發(fā)者來說變得真正簡單,這是一個(gè)更方便和更簡化的、構(gòu)建于PHP SAPI之上的API。
6. phpsh
該工具為PHP提供了一個(gè)交互式的shell,功能包括readline歷史、標(biāo)簽自動(dòng)完成以及快速訪問文檔等。有趣的是這個(gè)工具是用Python寫的。
7. Three20
這是一個(gè)針對iPhone開發(fā)者的Objective-C庫,提供了很多UI元素和數(shù)據(jù)輔助工具,不過該項(xiàng)目現(xiàn)在已經(jīng)不維護(hù)了,不過你可以用于iOS5/6系統(tǒng)的應(yīng)用開發(fā)中。
8. XHP
XHP是一個(gè)PHP擴(kuò)展,可以增強(qiáng)PHP語言的語法,比如將XML文檔片段變?yōu)橛行У谋磉_(dá)式。
9. XHProf
這是一個(gè)針對PHP的函數(shù)級(jí)的分層分析器,擁有一個(gè)簡單的基于HTML的導(dǎo)航界面。
開發(fā)平臺(tái)
Facebook的平臺(tái)工程團(tuán)隊(duì)也發(fā)布和維護(hù)著一些開源的平臺(tái)SDK,這些SDK可以幫助開發(fā)者很方便地將Facebook整合進(jìn)第三方應(yīng)用中。
Facebook Android SDK:針對Android平臺(tái)的SDK。
Facebook iOS SDK:針對iOS平臺(tái)的SDK。
Facebook JavaScript SDK:針對JavaScript應(yīng)用的SDK。
Facebook PHP SDK:針對PHP應(yīng)用的SDK。
Facebook工程師貢獻(xiàn)的開源項(xiàng)目
Facebook的工程師也參與了很多開源項(xiàng)目的貢獻(xiàn)。這些開源項(xiàng)目在Facebook中都有應(yīng)用,并在生產(chǎn)環(huán)境中得到了優(yōu)化。
1. Apache Hadoop
Apache Hadoop提供了可靠的、可擴(kuò)展的、分布式的計(jì)算基礎(chǔ)設(shè)施,在Facebook中用于數(shù)據(jù)分析。
2. Apache HBase
這是一個(gè)分布式的、面向列的數(shù)據(jù)存儲(chǔ),構(gòu)建于Hadoop分布式文件系統(tǒng)(HDFS)之上。
3. Cfengine
這是一個(gè)基于規(guī)則的配置系統(tǒng),用于服務(wù)器的自動(dòng)配置和維護(hù)。Facebook使用Cfengine來維護(hù)主機(jī)配置,并在產(chǎn)品層面上自動(dòng)化許多管理操作。
4. jemalloc
這是一個(gè)快速、一致、支持堆分析的內(nèi)存分配器。Facebook的工程師為其添加了堆分析特性,并做出了很多優(yōu)化。
5. memcached
這是一個(gè)分布式的內(nèi)存對象緩存系統(tǒng)。Memcached最初不是由Facebook開發(fā)的,但Facebook已經(jīng)成為了該技術(shù)的最大用戶。
6. MySQL
MySQL是Facebook數(shù)據(jù)庫基礎(chǔ)設(shè)施的骨干。你可以在Launchpad中找到很多Facebook貢獻(xiàn)的補(bǔ)丁,還可以通過MySQL@Facebook頁面來了解Facebook如何使用它。
7. PHP
Facebook的大部分代碼都是使用PHP開發(fā)的。它的語法很簡單,讓Facebook在產(chǎn)品上能夠更快地遷移和迭代。
8. Varnish
在Facebook,該項(xiàng)目每天處理來自全世界用戶的數(shù)十億請求。當(dāng)你加載朋友的圖片和和頭像時(shí),Varnish就有參與。
總結(jié)
以上是生活随笔為你收集整理的facebook开源项目集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows steam错误代码102
- 下一篇: 京东方为努比亚 Z50 Ultra 手机