[譯]Facebook的架構
原文地址 http://www.quora.com/Facebook-Engineering/What-is-Facebooks-architecture
- Web前端是用PHP寫的。然後由Facebook的HipHop編譯器1轉成C++,再由g++編譯。作為高效能的模板和Web邏輯執行層。
- 因為受到完全依靠靜態編譯的限制,Facebook開始搞HipHop直譯器2和HipHop虛擬機器,可以把PHP程式碼翻譯成HipHop位元組碼3。
- 業務邏輯是用Thrift4以服務的方式對外提供。這些服務根據其需求不同可能是用PHP,C++或Java實現的(也可能用了其它語言...)
- 用Java實現的服務沒有用任何企業應用伺服器,而是用了Facebook定製的應用伺服器。雖然看起來這是重複勞動,但因為所有服務都是通過Thrift對外提供和訪問的,所以Tomcat,甚至Jetty的開銷對他們來說都太高了,又沒什麼顯著的價值。
- 儲存是用MySQL, Memcached 5, Hadoop的 HBase 6實現的。 Memcached 除了用作 MySQL的緩衝層 ,還作為通用緩衝層使用。
- 離線處理 用Hadoop 和 Hive。
- 像日誌、點選和訂閱源這樣的資料用Scribe 7傳輸,用 Scribe-HDFS 8聚合並儲存在HDFS中,因此可以用MapReduce做擴充套件分析。
- BigPipe 9是他們用來加速頁面渲染的定製技術,使用了管道邏輯。
- Varnish Cache 10用作HTTP代理。他們喜歡它是因為它的高效能和效率11.
- 使用者上傳的數十億照片用Haystack儲存,這是一個Facebook開發的ad-hoc儲存方案,進行了底層優化,引入了僅追加寫入方式12.
- Facebook訊息用它自己的架構,基於分片和動態叢集管理的基礎架構。業務邏輯和持久化封裝在“單元格”中。每個單元格處理一部分使用者;隨著人口的增長可以新增新的單元格13。
- 持久化用HBase14完成。
- Facebook 訊息的搜尋引擎用儲存在HBase中的反向索引構建15
- Facebook搜尋引擎的實現細節目前不得而知
- 預輸入搜尋用定製的儲存和獲取邏輯16
- 聊天在用Erlang開發的Epoll伺服器上,用Thrift訪問17
- 它們還構建了一個監測報警自動應答系統,可以發起恰當的修復流程,在不能修復時升級為人工處理。18 關於在這些元件上調配的資源,已知的一些資訊和資料是:
- 據估算Facebook擁有的伺服器超過 60,000臺18。他們最近在Prineville, Oregon的資料中心基於完全自行設計的硬體19,是最近推出的開放計算專案20
- 有300TB的資料儲存在Memcached流程上21
- 他們的Hadoop 和 Hive叢集由3000臺8核、32GB記憶體和12TB硬碟的伺服器組成,總共有 24k 核心, 96 TB RAM和 36 PB 硬碟22
- 在2010年七月,每天1000億點選,500億照片,3兆物件快取,每天130TB日誌。22
腳註請參見原文。
相關文章
- FACEBOOK 的系統架構架構
- 解析 Facebook 的 Flux 應用架構UX應用架構
- Facebook移動架構:Android Flux架構詳解架構AndroidUX
- Ambari 架構(譯文)架構
- 【譯】別學框架,學架構框架架構
- [譯] 多網站專案的 CSS 架構網站CSS架構
- 【譯】理解Node事件驅動架構事件架構
- 【譯】Facebook 開源 Detectron
- [譯] Web 應用架構基礎課Web應用架構
- [譯] App架構指南之開山篇APP架構
- [譯] 單向使用者介面架構架構
- 【翻譯】安卓架構元件(5)-ViewModel安卓架構元件View
- [譯] 在 Kubernetes 之上架構應用架構
- 譯文 | 科普:Pulsar 和 Kafka 架構對比Kafka架構
- 【譯】給小白準備的Web架構基礎知識Web架構
- [譯] 理解 NodeJS 中基於事件驅動的架構NodeJS事件架構
- [翻譯] 全SDDC架構的採用仍遙不可及架構
- [譯] Go 語言的整潔架構之道 —— 一個使用 gRPC 的 Go 專案整潔架構例子Go架構RPC
- REST架構風格的架構元素REST架構
- Arm64架構下靜態編譯Nginx架構編譯Nginx
- 譯文 | 為什麼軟體架構如此重要?架構
- Apache Hadoop文件翻譯之一(HDFS架構)ApacheHadoop架構
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- [譯] 基於 TensorFlow.js 的無服務架構機器學習JS架構機器學習
- 【譯】開發大型 Angular 應用的12條架構清單Angular架構
- 架構師眼中的高併發架構架構
- LNMP架構與LNAMP架構的區別LNMP架構
- bs架構與cs架構的區別架構
- 架構設計之架構的演變架構
- 架構之:serverless架構架構Server
- 亞馬遜CTO的架構之道-儉約架構師的成本優先架構原則亞馬遜架構
- Arm64架構下編譯便攜Python架構編譯Python
- LNMP架構編譯安裝(Linux、Nginx、Mysql、PHP)LNMP架構編譯LinuxNginxMySqlPHP
- 【公益譯文】美國網路空間組織架構架構
- MySQL的架構MySql架構
- HDFS的架構架構
- saltstack的架構架構
- 架構師眼裡的高併發架構架構