底層技術強力支持,IPFS引領分佈式存儲未來

許多人每天需要花費大量的時間訪問數據,而我們訪問的數據主要存儲在中央服務器上隨著去中心化創新的蔓延,出現了一些有趣的替代方案,比如說區塊鏈技術。但是,以幾美元的價格在以太坊智能合約上存儲1kb數據,價格很昂貴,數據存儲就沒有那麼實惠。


而IPFS的誕生解決了這個問題,它利用分佈式存儲技術顛覆我們現有存儲和訪問數據模式,打破舊有的存儲弊端和中心化限制,讓用戶更加安全、高效、低成本地存取和共享數據。


底層技術強力支持,IPFS引領分佈式存儲未來


在IPFS中,Merkle DAG系統與分佈式哈希計算方法是其分佈式存儲的底層技術。本文將去繁從簡,以數據的存取過程為線索,通過對Merkle DAG、分佈式哈希的分析,看IPFS如何實現分佈式存儲。


Merkle DAG


當把文件存儲到IPFS系統中時,文件並不是以一個完整的個體被存儲,文件數據以平均分割法的方式被切分成若干個256KB大小的塊。這些塊在經過哈希運算後,也並不是存儲在單箇中心化的服務器上,而是分開存儲在網絡中的各個分佈式的節點之中,沒有節點擁有特權。


這一分佈式存儲的難點不在於文件的切割或加密,而在於如何把這些被分割的和被分開存儲的數據重新組合成一個文件,這正是IPFS協議的第一個關鍵技術——Merkle DAG(Merkle Directed Acyclic Graph,梅克爾有向無環圖)。


Merkle DAG從Git系統(林納斯·託瓦茲創作的分佈式版本控制系統)改造而來,是在Merkle Tree的基礎上構建,儲存的是哈希值。IPFS上大部分數據對象都是以Merkle DAG的結構存在。

底層技術強力支持,IPFS引領分佈式存儲未來

(梅克爾樹)


當從網絡中獲取文件時,先從可信的節點獲得文件的Merkle Tree樹根哈希值。一旦獲得了樹根,就可以從其他不可信的節點獲取Merkle Tree的各個節點的哈希值。通過可信的樹根來檢查接收到的Merkle Tree節點,如果Merkle Tree某節點是損壞的或者虛假的,就從其他存儲節點獲得另一個Merkle Tree節點,直到最終獲得一個與可信樹根匹配的Merkle Tree。


這樣一來,從上至下,直到獲得最底層的被切割成小塊的數據的哈希,最終形成一個完整的正確的文件。


由於Merkle DAG是基於哈希值的,而哈希值取決於數據塊的內容,因此IPFS協議擁有內容尋址的功能(HTTP是基於域名尋址),此外它還有防篡改和去重複的功能。防篡改是因為可以通過檢查哈希值來確認數據是否被篡改;去重複是由於相同內容的數據塊哈希是相同的,可以去掉重複的數據,節省存儲空間。


分佈式哈希表


依靠Merkle DAG,可以構建一個數據結構用於實現分佈式的數據存儲,但還缺最後一步,Merkle DAG存儲的哈希值如何定位到具體存儲數據的節點,也就是說,應該把數據分配到哪一個網絡節點去存儲,以及去從哪一個網絡節點獲得存儲數據。DHT(Distributed Hash Table,分佈式哈希表)便是用來解決這一問題的方法。


哈希表是一種存儲“鍵值對( Key / Value Pairs)”的容器,它能方便快速地通過key值來獲得 value值。在DHT中,key是存儲數據的哈希值,通過K/V可以實現數據塊與目標節點的映射關係。

哈希表被分割成不連續的塊,每個節點被分配一個屬於自己的哈希塊,也稱做區間表,併成為這個哈希塊的管理者,當用戶存儲數據時,系統對數據進行哈希運算,根據哈希運算的結果決定此數據由哪個節點負責儲存,並生成哈希表。


當用戶提取數據的時候,用同樣的算法計算數據的哈希,然後從哈希表獲得對應的數據存儲位置。


集中式服務器長期以來統治著數據存儲領域,雖然它提供的許多服務都是免費的,但我們仍需要權衡個人隱私洩露等問題。


分佈式存儲系統,相較於集中式系統有許多優勢。雖然,集中型模式仍然是當前互聯網的主導模式,但隨著越來越多的用戶和開發人員嘗試使用分佈式系統,恆訊雲相信,分佈式存儲將成為數據存儲的未來。


分享到:


相關文章: