Facebook的強大後,有些有志之士在做創新服務網站有時會喊出,“打造下個Facebook社交網站…”之類的話。

Facebook上面撐了數億人,很快會到十億人。這個網站到今天速度還是很快,背後到底用了哪些技術?

幾個禮拜前Facebook的技術經理Jason Sobel在Qcon中有精彩的介紹,要看影片可到InfoQ去看

另外,在Quora上,則有飽讀詩書的Michaël Figuière做了完整整理,讓大家很容易地一次就看到Facebook目前採用的技術架構與元件有哪些,筆者特地翻譯整理如後。


為了台灣網路產業技術提升,對於您現在手中的網路服務,不仿參考一下Facebook做些提升或優化改變:

  • 1.前端程式採用PHP撰寫。寫完之後透過Facebook做的HipHop翻譯成C++程式碼,然後用g++來編譯。這樣的結果是前端在生成網頁以及執行網站邏輯的時候可以超快,高效能。
  • 2.商業邏輯的元件都用Apache Thrift,以服務形式提供。撰寫語言可能是PHP, C++或是JAVA。
  • 3.由於使用了Thrift來提供服務,運行JAVA程式碼的伺服器都是用Facebook自行研發的軟體,而不採用tomcat或Jetty這種,又再提升了些效能。
  • 4.資料儲存的部份用了MySQL, Memcached, cassandra, 還有HBase。Memcached拿來做MySQL的暫存,也用作其他一般用途的暫存。近來,cassandra使用率有下降趨勢,而HBase在Facebook內的使用有日益提高的趨勢。
  • 5.離線處理資料用的是Hadoop跟Hive。
  • 6.紀錄檔,點擊數與feed等等是用Scribe來整合,並存在Scribe-HDFS裡。如果要分析,就用MapReduce。
  • 7.為了加速瀏覽器上畫出網頁這件事,Facebook自製了BigPipe這個技術。
  • 9.Facebook數十億張的照片由Haystack來處理。這是Facebook自行研發的技術,低階且僅支援新增寫入動作。
  • 10.Facebook訊息用了自己的動態叢集管理架構。商業邏輯跟儲存一併封裝成一個Cell,每個Cell處理一部份的使用者,因此使用者增加只需要增加Cell。儲存的部份用的是HBase
  • 11.Facebook訊息中的搜尋是透過在HBase上建立了反向索引。
  • 12.聊天室是用Erlang開發的Epoll來完成,一樣透過Thrift服務界面來存取。


那這樣的元件可以達成怎樣的效能哩?底下是相關公開資訊:

  • Facebook估計擁有超過六萬台伺服器。最近建置的奧樂岡資料中心中的機器都是自行設計的硬體。
  • 所有Memcached的執行程序所有儲存的資料總量達300TB
  • Hadoop跟Hive叢集是由三千台伺服器組成。每台都是八核心,32GB記憶體,12TB硬碟。結果是24000核心,96TB記憶體與36PB的儲存空間。
  • 每天有一千億次的點擊,光log也有130TB。(2010/7)

 

看完了!很刺激對吧!

你還想打造一個Facebook等級的社交網站嗎?如果想,Inside 100%支持你!趕快把您的服務介紹寫好,我們會幫您推廣喔!

http://www.inside.com.tw/2011/04/21/facebook-platform-component

創作者介紹

佳佳的窩

天秤女~佳佳 發表在 痞客邦 PIXNET 留言(0) 人氣()