大資料圖資料庫之TAO資料庫

來源:互聯網
上載者:User

標籤:大資料   圖資料庫   tao   系統架構   


節選自《大資料日知錄:架構與演算法》十四章


14.1.2  TAO圖資料庫

        Facebook是目前世界上最著名的社交網站,如果從資料抽象的角度來看,Facebook的社交圖不僅包括好友之間的關係,還包括人與實體以及實體與實體之間的關係,每個使用者、每個頁面、每張圖片、每個應用、每個地點以及每個評論都可以作為獨立的實體,使用者喜歡某個頁面則建立了使用者和頁面之間的關係,使用者在某個地點簽到則建立了使用者和地點之間的關係……如果將每個實體看作是圖中的節點,實體之間的關係看作是圖中的有向邊,則Facebook的所有資料會構成超過千億條邊的巨型實體圖(Entity Graph)。實體圖中的關係有些是雙向的,比如,朋友關係;有些則是單向的,比如使用者在某個地點簽到。同時,實體還具有自己的屬性,比如某個使用者畢業於斯坦福大學,出生於1988年等,這些都是使用者實體的屬性。圖14-2是Facebook實體圖的一個示意片段。

                                            

                                    圖14-2  Facebook實體圖(Fbid是Facebook內部唯一的ID編號)

       Facebook將所有的實體及其屬性、實體關聯資料儲存在TAO圖資料庫中,網站頁面的資料讀寫請求都由TAO來提供服務。TAO是一個採用資料“最終一致性”的跨資料中心分布式圖資料庫,由分布在多個資料中心的數千台伺服器構成,為了能夠即時響應應用請求,TAO以犧牲強一致性作為代價,系統架構更重視高可用性和低延時,尤其是對讀操作做了很多最佳化,以此保證在極高負載的情況下產生網站頁面時的高效率。

     TAO為用戶端封裝了圖操作相關的資料訪問API,使得用戶端不僅可以訪問實體及其屬性,也可以方便地訪問各種實體關聯資料。比如,對於關係資料的訪問可以提供如下關係列表方式的查詢介面:

(ID, aType)->[anew,…, aold]

其中,ID代表某個實體的唯一標記,aType指出關聯類型(朋友關係等),關係列表則按照時間先後順序列出ID指向的其他滿足aType類型關係的實體ID列表。例如,(i,COMMENT)就可以列出關於i的所有評論資訊。


1.TAO的整體架構

     TAO是跨越多個資料中心的准即時圖資料庫,其整體架構14-3所示。首先,TAO將多個近距離的資料中心組合成一個分區(Region),這樣形成多個分區,每個分區內的緩衝負責儲存所有的實體和關係資料。其中,在一個主要磁碟分割的資料庫和緩衝中集中儲存未經處理資料,其他多個從分區儲存資料副本(這是一種比較獨特的設計方式,建議讀者在此處先花些時間考慮一下其設計的出發點,然後閱讀後續內容)。

                 

       之所以如此設計架構,是出於如下考慮:緩衝結構是TAO中非常重要的一部分,對於快速響應使用者讀請求有巨大的協助作用,而緩衝需要放在記憶體中,如果記憶體資源成本低且足夠大,那麼理想的情況是每個資料中心都存放完整的資料副本以快速響應使用者的讀操作,避免使用者跨資料中心讀取資料這種耗時操作。但是考慮到要儲存的資料量太大(PB級),每個資料中心都分別儲存一份完整的備份資料成本過高,所以退而求其次,將在地區上比較接近的多個資料中心作為一個整體來完整地儲存所有的備份資料,因為資料中心地區接近,所以通訊效率也較高,這樣就在成本和效率之間做了一種權衡和折中。

       在每個分區會儲存完整的實體及其關係資料,TAO在分區內的儲存架構可劃分為三層(見圖14-3),底層是MySQL資料庫層,因為資料量太多,將資料分表後形成若干資料切片(Shard),一個資料切片由一個邏輯關聯式資料庫儲存,一台伺服器可儲存多份資料切片。第二層是與底層資料切片一一對應的緩衝層,稱之為主Cache層(Leader Cache),主Cache負責緩衝對應的邏輯資料庫內容,並和資料庫進行讀寫通訊,最上層是從Cache層(Follower Cache),多個從Cache對應一個主Cache,負責緩衝主Cache中的內容。TAO將緩衝設計成二級結構降低了緩衝之間的耦合程度,有利於整個系統的可擴充性,當系統負載增加時,只要添加儲存從Cache的伺服器就能很方便地進行系統擴容。


2.TAO的讀寫操作

      用戶端程式只能與最外層的從Cache層進行互動,不能直接和主Cache通訊(見圖14-4)。用戶端有資料請求時,和最近的從Cache建立聯絡,如果是讀取操作且從Cache中緩衝了該資料,則直接返回即可,對於互連網應用來說,讀操作比例遠遠大於寫操作,所以從Cache可以響應大部分網站負載。

      如果從Cache沒有命中使用者請求(Cache Miss),則將其轉寄給對應的主Cache,如果主Cache也沒有命中,則由主Cache從資料庫中讀取,並更新主Cache(圖14-4中標A和D的位置展示了這一邏輯),然後發訊息給對應的從Cache要求其從主Cache載入新資料。

                               

       對於讀取操作,所有的分區不論主從都遵循上述邏輯,但是對於用戶端發出的寫操作,主要磁碟分割和從分區的行為有所不同。對於主要磁碟分割來說,當從Cache接收到寫操作請求,將其轉給對應的主Cache,主Cache負責將其寫入對應的邏輯資料庫,資料庫寫操作成功後,主Cache向對應的從Cache發出訊息告知原資訊失效或者要求其重新載入。對於從分區來說,當從Cache接收到寫請求時,將其轉給本分區對應的主Cache,此時主Cache並不直接寫入本機資料庫,而是將這個請求轉寄到主要磁碟分割的主Cache(圖14-4中標C的位置說明了此種情況),由其對主要資料庫進行寫入。

     也就是說,對於寫操作,不論是主要磁碟分割還是從分區,一定會交由主要磁碟分割的主Cache來更新主要資料庫。在主要資料庫更新成功後,主要資料庫會通過訊息將這一變化通知從分區的從資料庫以保持資料一致性,也會通知從分區的主Cache這一變化,並觸發主Cache通知從分區的從Cache更新緩衝內容(見圖14-4標B的位置)。

    請思考:為何從分區的主Cache在讀操作未命中時從本機資料庫讀取,而不是像寫操作一樣轉寄到主要磁碟分割?由本機資料庫讀取的缺點是很明顯的,會帶來資料的不一致,因為從資料庫可能此時是到期資料,那麼這麼做的目的何在或者說有何好處?

     答案:因為讀取資料在Cache中無法命中的機率遠遠大於寫操作的數量(在Facebook中,大約相差20倍),所以跨分區操作對寫操作來說,整體效率影響不大,但是如果很多讀操作採取跨分區的方法,讀取操作效率會大幅降低。TAO犧牲資料一致性是為了保證讀取操作的低延遲。


3.TAO的資料一致性

      TAO為了優先考慮讀操作的效率,在資料一致性方面做出了犧牲,採取了最終一致性而非強一致性。在主要資料庫有資料變化通知從資料庫時,採取了非同步通知而非同步通知,即無須從資料庫確認更新完成,即可返回用戶端對應的請求。所以主要資料庫和從資料庫的資料達到一致有一個時間差,在此期間,可能會導致從分區的用戶端讀出到期資料,但是經過較小的時延,這種資料變化一定能夠體現到所有的從資料庫,所以遵循最終一致性。

     具體而言,在大多數情況下,TAO保證了資料的“讀你所寫”一致性。即發出寫操作的用戶端一定能夠讀到更新後的新數值而非到期資料,這在很多情況下是很有必要的,比如,使用者刪除了某位好友,但如果還能在訊息流程看到這位好友發出的資訊,這是不能容忍的。

     TAO是如何做到這一點的?首先,如果資料更新操作發生在主要磁碟分割,由上述寫入過程可知,一定可以保證“讀你所寫”一致性,比較棘手的情形是從分區的用戶端發出寫請求。在這種情形下,從Cache將請求轉寄給主Cache,主Cache將寫請求再次轉寄給主要磁碟分割的主Cache,由其寫入主要資料庫,在寫入成功後,從分區的主Cache通知本分區的從Cache更新緩衝值,以上操作是同步完成的,儘管此時從分區的資料庫可能還未接收到主要資料庫的更新訊息,但是從分區的各級Cache已經同步更新了,之後在這個從分區發出的讀請求一定可以從各級Cache中讀到新寫入的內容。通過這種手段就可以保證從分區的“讀你所寫”一致性。


大資料圖資料庫之TAO資料庫

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.