Facebook公布TAO—社交圖譜數(shù)據(jù)存儲(chǔ)方案
ZDNet 發(fā)表于:13年07月01日 14:51 [轉(zhuǎn)載] 至頂網(wǎng)
Facebook已經(jīng)進(jìn)一步披露Tao細(xì)節(jié)信息,這套方案負(fù)責(zé)對(duì)公司數(shù)以PB的龐大社交圖譜信息進(jìn)行存儲(chǔ)。
盡管Facebook公司的社交網(wǎng)絡(luò)本身與IT人士似乎沒(méi)多大關(guān)系,但其內(nèi)部基礎(chǔ)設(shè)施則是不折不扣的IT杰作——社交網(wǎng)絡(luò)所處理的信息規(guī)模如此巨大,F(xiàn)acebook必須拿出新的數(shù)據(jù)存儲(chǔ)、計(jì)算及管理方式才能應(yīng)對(duì)其對(duì)資源的貪婪需求。
因此,本周三在USENIX大會(huì)上公布Tao細(xì)節(jié)信息的原因有二:首先,這體現(xiàn)了未來(lái)企業(yè)用戶需要面對(duì)及打理的龐大數(shù)據(jù)規(guī)模;其次,這也凸顯了由高科技企業(yè)提供的、專為現(xiàn)代數(shù)據(jù)系統(tǒng)打造的設(shè)計(jì)方案。
“對(duì)于任何需要利用相關(guān)數(shù)據(jù)高效生成詳盡定制內(nèi)容的應(yīng)用程序域來(lái)說(shuō),像TAO這樣的系統(tǒng)可能都很有用,”Facebook公司員工撰文寫道。“應(yīng)用程序不應(yīng)對(duì)數(shù)據(jù)的具體內(nèi)容進(jìn)行諸多限制,而應(yīng)該學(xué)會(huì)盡量接納。很多社交網(wǎng)絡(luò)信息正好符合這一類別。”
Tao這類系統(tǒng)中的其它應(yīng)用程序則可能需要處理大型數(shù)據(jù)集,且這些數(shù)據(jù)集的規(guī)模隨時(shí)間推移持續(xù)膨脹。還有一些復(fù)雜系統(tǒng)中存在諸多代理機(jī)制,且其彼此關(guān)系根據(jù)使用者的一系列操作而決定。而對(duì)國(guó)家陰謀論深信不疑的用戶,Tao還能夠作為保護(hù)機(jī)制、與情報(bào)機(jī)關(guān)對(duì)國(guó)家公民的窺探手段相對(duì)抗。
Tao是一套針對(duì)讀取進(jìn)行優(yōu)化的數(shù)據(jù)存儲(chǔ)機(jī)制,并以單一地理分布實(shí)例的方式部署在Facebook當(dāng)中。它允許Facebook的工程師們橫跨公司整個(gè)“社交圖譜”,對(duì)全部相關(guān)信息進(jìn)行訪問(wèn)及寫入——其中包括Facebook上的對(duì)象(例如人、品牌、評(píng)論等)以及關(guān)聯(lián)(贊、踩、標(biāo)記)。
Tao系統(tǒng)的設(shè)計(jì)初衷在于為“數(shù)PB級(jí)別”的龐大數(shù)據(jù)集提供每秒超過(guò)十億次讀取操作,F(xiàn)acebook指出。Tao由Facebook一手打造,能夠更好地與自家主數(shù)據(jù)存儲(chǔ)(MySQL)及緩存層(memcache)相對(duì)接,且可以在對(duì)象上處理無(wú)法預(yù)知的查詢。
“事實(shí)上,Tao使用MySQL這一特性從客戶端角度完全無(wú)從感知,”Facebook工程主管Venkat Venkataramani在接受The Register網(wǎng)站采訪時(shí)表示。“我們一直在不斷尋找,但從未發(fā)現(xiàn)過(guò)比MySQL更好的方案。”
Tao的API與少量SQL查詢相映射,從而降低了底層MySQL數(shù)據(jù)庫(kù)的通信強(qiáng)度。對(duì)于單一數(shù)據(jù)庫(kù)來(lái)說(shuō),F(xiàn)acebook的數(shù)據(jù)集實(shí)在太過(guò)龐大,因此Tao轉(zhuǎn)而將數(shù)據(jù)拆分為邏輯片段、這樣更易被數(shù)據(jù)庫(kù)服務(wù)器所處理。
Tao還擁有一套最終一致性緩存層、采用相似的創(chuàng)建原理,其中容納著對(duì)象、關(guān)聯(lián)以及關(guān)聯(lián)計(jì)數(shù)信息。Facebook之所以能夠?qū)崿F(xiàn)站點(diǎn)中同一頁(yè)面下數(shù)以百計(jì)對(duì)象的高速載入效果,緩存層的作用至關(guān)重要。
由于Facebook數(shù)據(jù)集規(guī)模巨大,緩存被劃分為雙層結(jié)構(gòu):“領(lǐng)導(dǎo)”緩存層用于處理寫入操作、作為輔助的“從屬”緩存層則幫助處理讀取操作(讀取操作的數(shù)量要明顯高于寫入)——Tao系統(tǒng)經(jīng)常需要面對(duì)每秒十億次級(jí)別的讀取、但每秒寫入則僅為數(shù)百萬(wàn)次。
數(shù)據(jù)緩存處理采取對(duì)象與關(guān)聯(lián)彼此相鄰的方式,Venkataramani指出。“一大重要設(shè)計(jì)思路在于保證系統(tǒng)使用位置與工作負(fù)載位置基本一致,這是我們成功實(shí)現(xiàn)大規(guī)模擴(kuò)展的必要前提。”
就以?shī)W巴馬總統(tǒng)的Facebook頁(yè)面為例,在發(fā)生特定事件時(shí)、其頁(yè)面往往會(huì)突然面對(duì)不可預(yù)知的龐大讀取量。正是由于Tao在設(shè)計(jì)理念上將保證對(duì)象讀取放在第一位,整套體系的最終一致性與可用性才得以實(shí)現(xiàn),而不會(huì)因?yàn)闈M足一致性而產(chǎn)生過(guò)高的訪問(wèn)延遲。
“在Facebook之前,我們從未見(jiàn)過(guò)如此龐大的工作負(fù)載,”Venkataramani表示。“說(shuō)起超大規(guī)模應(yīng)用程序,人們首先想到的往往是電子郵件系統(tǒng)。但郵件與社交網(wǎng)絡(luò)兩種工作負(fù)載完全不同,因?yàn)橛脩糁粫?huì)查看自己的郵件、而不可能跑去瀏覽別人的郵件。但在社交網(wǎng)絡(luò)方面,情況顯然更為復(fù)雜——其信息輸出量遠(yuǎn)高于其它網(wǎng)絡(luò)服務(wù)。”
盡管目前利用這種方式處理數(shù)據(jù)的企業(yè)還不太多,但對(duì)Tao系統(tǒng)的深入分析能幫助我們?cè)谄髽I(yè)規(guī)模達(dá)到一定程度時(shí)解決新難題、理解Facebook藍(lán)白圖標(biāo)背后所承受的巨大技術(shù)壓力及其巧妙的處理方案。
“隨著云計(jì)算的逐漸普及以及大規(guī)模數(shù)據(jù)入駐大型數(shù)據(jù)中心,我認(rèn)為新型后端架構(gòu)的時(shí)代已經(jīng)拉開(kāi)帷幕,”Venkataramani最后總結(jié)道。
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.