FACEBOOK 的系統架構

freebus發表於2020-03-23
  • Web 前端是由 PHP 寫的。Facebook 的  HipHop 會把PHP轉成 C++ 並用 g++編譯,這樣就可以為模板和Web邏賀業務層提供高的效能。
  • 業務邏輯以Service的形式存在,其使用 。這些Service根據需求的不同由PHP,C++或Java實現(也可以用到了其它的一些語言……)
  • 用Java寫的Services沒有用到任何一個企業級的應用伺服器,但用到了Facebook自己的定製的應用伺服器。看上去好像是重新發明輪子,但是這些Services只被暴露給Thrift使用(絕大所數是這樣),Tomcat太重量級了,即使是Jetty也可能太過了點,其附加值對Facebook所需要的沒有意義。
  • 持久化由MySQL,  , Facebook 的  , Hadoop 的   完成。Memcached 使用了MySQL的記憶體Cache。Facebook 工程師承認他們的Cassandra 使用正在減少,因為他們更喜歡HBase,因為它的更簡單的一致性模型,以到其MapReduce能力。
  • 離線處理使用Hadoop 和 Hive。
  • 日誌,點選,feeds資料使用 ,把其聚合並存在 HDFS,其使用 Scribe-HDFS ,因而允許使用MapReduce進行擴充套件分析。

  • 是他們的定製技術,用來加速頁面顯示。
  •  用作HTTP代理。他們用這個的原因是 高速和有效率。 
  • 用來搞定使用者 ,其由Haystack處理,Facebook自己開發了一個Ad-Hoc儲存方案,其主要做了一些低層最佳化和“僅追加”寫技術 .
  • Facebook Messages 使用了自己的架構,其明顯地構建在了一個動態叢集的基礎架構上。業務邏輯和持久化被封裝在一個所謂的’Cell’。每個‘Cell’都處理一部分使用者,新的‘Cell’可以因為訪問熱度被新增。 持久化歸檔使用HBase 。
  • Facebook Messages 的搜尋引擎由儲存在HBase中的一個倒置索引的構建。 
  • Facebook 搜尋引擎實現細節據我所知目前是未知狀態。
  • Typeahead 搜尋使用了一個定製的儲存和檢索邏輯。 
  • Chat 基於一個Epoll 伺服器,這個伺服器由Erlang 開發,由Thrift存取 

關於那些供給給上述元件的資源,下面是一些資訊和數量,但是有一些是未知的:

  • Facebook估計有超過60,000 臺伺服器。他們最新的資料中心在俄勒岡州的Prineville,其基於完全自定設計的硬體,那是最近才公開的  。
  • 300 TB 的資料存在 Memcached 中處理 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31365439/viewspace-2682060/,如需轉載,請註明出處,否則將追究法律責任。

相關文章