国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>數值算法/人工智能>

Dropbox架構詳析

大小:0.9 MB 人氣: 2017-10-10 需要積分:1
?Dropbox架構詳析?
  自從內部使用、擴展至EB級別的存儲系統“Magic Pocket”發布之后,我們收到了很多正面反饋。我們會繼續跟進Magic Pocket,陸續發布一系列技術博文,從各種有趣的角度來觀察這個系統,包括我們的保護機制、操作工具以及軟件與硬件之間的方法創新。不過首先,我們需要了解一些背景:在本文中,我們會從宏觀角度對Magic Pocket的架構以及設計標準做以概覽。
  在之前的序篇中我們解釋過(注:上篇的翻譯請點擊這里查看),Dropbox存儲兩類數據:文件內容與文件/用戶的元數據。Magic Pocket是我們用來存儲文件內容的系統,這些文件被分成塊狀存儲,并存有副本以保證持久化,它們分布在整個系統中的多個物理位置上。
  雖然Magic Pocket的基礎是相當簡單的核心協議組,但它本身仍是龐大而復雜的系統,因此我們需要略過一些細節。歡迎反饋,我們會在后續文章中盡量深入探究。
  注:在Dropbox內部,這個系統也被稱為“MP”,這樣我們就不用因為老提起“神奇(Magic)”這個詞而感覺傻乎乎的了,本文中我們也會用MP來代指這個系統。
  需求
  不可變的數據塊存儲
  MP是一個具有不變性的數據塊存儲系統,其中存儲了多達4MB的加密塊區文件,某個數據塊一旦寫入系統就不會再發生變化。不變性讓一切簡單得多。
  當用戶在Dropbox上對文件作出變更時,我們會在另一個單獨的系統中(FileJournal)記錄下所有的變更。這樣一來,通過將支持易變性的邏輯轉移到堆棧的更高層級,就能簡單地存儲不變的數據塊了。許多大規模的存儲系統都對可變數據塊提供內部支持,但在較低層級中一般都是基于不可變的存儲基元。
  工作負載
  Dropbox有很多數據,并具有高度的時間局部性(temporal locality)。許多數據在上傳后一個小時之內會有頻繁的訪問量,而隨著時間流逝,訪問頻率也會越來越低。這種模式合乎情理:Dropbox的用戶有大量的協作任務,因此文件上傳后很可能需要同步到其它設備上。但我們仍需要可靠的快速訪問:也許從1997年開始你就沒怎么看過稅務記錄了,但在需要的時候,你會想要立即看到。我們有一個相當“冷”的存儲系統,但需要以低延遲快速訪問所有數據區域。
  為了處理這種工作負載,我們在構建系統時用到了硬盤驅動,由于硬盤具有持久、價廉、存儲密集、延遲較低等優勢,我們使用了SSD盤來保存數據庫以及緩存內容。對于新近上傳的內容,我們使用了高度的初始復制與緩存技術;而對于其余的數據,我們使用了更為高效的存儲編碼技術。
  持久性
  在MP中,持久性是必備的。理論上,我們要求系統的持久性能保持到地老天荒,除非小行星導致天災——我們有更重要的事情要操心,不能因為隨機的磁盤故障就出現數據損毀的問題。這些數據以效率更高的糾刪碼(erasure-coded)形式存儲,同時還使用了跨區(地理位置)高度復制以保障在災難或自然災害發生時數據的安全性。
  規模
  對工程師來說,這個部分非常有趣,MP必須在差不多半年的時間里,從初始數十PB的原型成長到EB級別的龐然大物,這可真是空前的轉變。因此,我們需要花費大量時間來思考、設計、構建原型,以克服能預見到的瓶頸問題。在這個過程中,我們也確認了這個架構完全可以擴展,因此在出現不可預知的需求時,也能進行相應的修改。
  關于不可預知的需求,其實有很多例子:比如流量突然增長,網絡集群間的路由器工作負載逐漸飽和。因此,我們需要修改數據存放的算法以及路徑請求,以便更好地反映集群間的關聯(以及可用存儲量、集群成長計劃等),并最終為集群間的網絡架構帶來改變。
  簡單性
  是個工程師都知道,復雜性通常會導致不可靠性。有很多人在花費大量時間編寫復雜的一致性協議后發現:在Paxos算法的重實現上浪費一整天可不是什么好主意。MP盡可能避免了quorum一致或分布式協作的情況,并在使用容錯及可伸縮方式時大量利用集中的協作點。有時在數據塊索引(Block Index)中,我們可以選擇分布式哈希表或trie樹,而不僅是巨大的分片MySQL集群。這一決策在簡化開發與減少未知因素方面表現非常優秀。
  數據模型
  在討論架構自身之前,我們先來研究一下所存儲的內容。
  在Dropbox的MP系統中,存儲的是最大4MB的文件數據塊:
  Dropbox架構詳析
  經過壓縮加密后,這些數據塊(block)被發送到MP中進行存儲,每個數據塊都需要一個鍵值或者名稱,大多情況下我們會使用SHA-256哈希。
  然而在EB級別的存儲系統中,4MB的數據量猶如滄海一粟,如果需要替換磁盤或者對某些數據使用糾刪碼技術,這個大小就顯得太小了。為了簡化這個問題,我們將這些數據塊整合成1GB大小的邏輯存儲容器,稱為bucket。指定bucket中的數據塊無需有什么相同的特性,只是上傳的時間差不多相同。
  為了保證可靠性,我們需要將這些bucket復制到多臺物理機器上,新近上傳的數據塊可直接復制到多臺機器上。最終系統會將包含數據塊的bucket整合到一起,再通過糾刪碼技術提高存儲的效率。我們使用volume來指代復制到一系列物理存儲節點的一個或多個bucket。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

Dropbox架構詳析下載

相關電子資料下載

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?