1. 程式人生 > >淺析Facebook軟體架構:Tao和BLOB的實現原理

淺析Facebook軟體架構:Tao和BLOB的實現原理

【編者按】Tao是一套針對讀取進行優化的資料儲存機制,並以單一地理分佈例項的方式部署在Facebook當中。和Google的Megastore,Spanner地位等同,它底層持久化採用的是MySql,上層的Cache Server使用的是分散式的Memcached。 Tao系統的設計初衷在於為“數PB級別”的龐大資料集提供每秒超過十億次讀取操作。

使用者數達10億級別的Facebook是如何使用這些儲存系統的呢?原文作者Murat針對圖形資料庫TAO和BLOB 儲存系統進行解析。

以下為譯文:

圖形資料庫TAO

TAO是Facebook一種用來處理社交圖形資訊的分散式資料庫。每天達千億級別的圖片處理量,必須採用一種高效,穩定,擴充套件性好的圖形資料儲存策略才能很好地對此進行處理。

在TAO之前,Facebook的Web伺服器是直接訪問MySql來進行圖片資料讀寫操作,高度依賴分散式儲存系統memcache作為旁視快取。而TAO資料儲存實現了直接的圖形抽象處理,從而避免了旁視快取架構的某些基礎弊端。它使用了一種物件和關聯模型,採取MySql做連續儲存,對資料庫的訪問進行調整處理,使用自有的圖形感知快取。考慮到跨地域的擴充套件性需求,在資料複製方面使用了主每記錄(per-record master)方法。


F4—暖性*BLOB 儲存系統(OSDI’14)

Facebook已經在其近線儲存體系當中徹底棄用RAID與複製機制,轉而採用分散式擦除編碼以隔離其所謂的“暖性BLOB”。目前,Facebook新的架構把多媒體資料劃分為兩個類別:

  1. 儲存在Haystack的熱/新新增 的媒體資料;
  2. 儲存在F4的暖性資料,暖性相對於沉沒/使用率低但非新新增而言。

*注:BLOB即binary large object,二進位制大型物件。暖性——是指那些必須進行儲存,訪問頻率低於熱門資料但卻又高於歸檔或者冷門資料的資訊。通常情況下,這些資料已經產生了一週以上。熱門BLOB的訪問頻率仍然較高。

Facebook每天需要儲存多達4千億的照片,所以根據不同資料熱度來採取相應的儲存策略與方式是很有必要的。Facebook發現不同時期的BLOB與熱度之間有一種強聯絡。新建立的BLOBs被呼叫的頻率遠高於舊的BLOBs,簡單說就是使用熱度高。實踐證明,九成以上的當日新增資料比已建立一週的舊資料的訪問請求率要高得多。此外,不同的建立時期與刪除率之間也有強聯絡。舊BLOBs的刪除率遠低於新BLOBs的刪除率,這些舊資料就是前述的暖性資料。

他們還發現暖性內容在整個資料庫中佔據較大的比重。他們嘗試把最近九個月的資料劃為三段:0-3個月,3-6個月,6-9個月。第一段分割槽的暖性資料佔比超過80%,第三段分割槽的暖性資料佔比超過89%,暖性資料呈增長趨勢。根據這些分析,Facebook為BLOB資料儲存進行了劃分設計,引入F4儲存系統,以區別於存放在Haystack的熱資料。相對冷資料,一般要花費數個小時甚至數天才能讀取而言,暖性資料的提出是為了照顧使用者的需求。


F4是一款新型系統,能夠在降低暖性BLOB有效複製因素的同時保持其容錯性以及對較低資料吞需求的支援能力,專門用於儲存這些暖性BLOB。 

F4提供了一種簡單,高效,容錯的暖性資料儲存方案,把有效複製因子(effective-replication-factor)從3.6減到2.8甚至2.1。使用奇偶區或條塊檢驗的糾錯碼。

F4的資料和索引檔案與Haystack相同,日誌檔案卻是新型別。這是一種寫前日誌,附有tombstones(墓碑)對已刪除BLOBs進行追蹤。


F4有專門的backoff(後備)節點來幫助BLOB線上重建,這類似於memcache中gutter(水槽)節點的容錯能力。在引入F4 19個月後,現在F4的邏輯資料量達到65PB,資料儲存量達53PB。