做出Facebook規模,你所需要的技術元件總覽

Facebook上面撐了數億人,很快會到十億人。這個網站到今天速度還是很快,背後到底用了哪些技術?幾個禮拜前Facebook的技術經理Jason Sobel在Qcon中有精彩的介紹,要看影片可到InfoQ去看。
評論
評論

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

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

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

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

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

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

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

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

 

看完了!很刺激對吧!

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