當前位置:
首頁 > 知識 > 基於內容定址的分散式存儲系統IPFS,你怎麼看?

基於內容定址的分散式存儲系統IPFS,你怎麼看?

在傳統的Web中,用戶數據存儲在自己能夠完全控制的集中式存儲伺服器上。這種控制能力,為他們提供了在用戶不知情或未經用戶同意的情況下可能會濫用的高級特特權。此外,集中存儲可能存在可用性問題,尤其是如果數據僅存儲在一個位置時,會因此產生單點故障。

Web上的文件存儲

web使用基於位置的定址來存儲和檢索文件。假設我們想從域名abc.com訪問一張關於貓的圖片cat.png。我們會先通過Web瀏覽器訪問這個位置(如abc.com/cat.png),然後,我們將得到貓的圖片。但是,如果由於某種原因,文件已經從abc伺服器上刪除,我們就無法再訪問該圖片。現在有一種可能性是,網上的其他人也有這隻貓的照片,但是我們無法聯繫到他們,也無法獲取這隻貓的照片。互聯網上的許多文件都可能具有相同的名稱,但內容可能不同。

基於內容定址的分散式存儲系統IPFS,你怎麼看?

IPFS解決方案

IPFS是一種用於文件存儲的對等網路協議,採用的是基於內容的定址,而非基於位置。這意味著要查找文件,我們不需要知道它在哪裡(abc.com/cat.png),而是它包含的內容(QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)——由內容的哈希進行表示。

哈希函數為每個文件創建唯一的「指紋」。因此,如果我們想要檢索一個文件,只需詢問網路「誰擁有這個文件(QmSNssW5a9S3KV…)」,然後來自IPFS網路的某個擁有該文件的人將提供給我們。我們可以通過將請求的哈希值與接收到的哈希值進行比較來驗證文件的完整性,如果哈希值匹配,則可知該文件沒有被更改。這個哈希函數還可以幫助消除網路的重複,這樣具有相同內容的文件就無需提交兩次,因為相同的內容會產生相同的哈希。這優化了存儲需求,也提高了網路的性能。

IPFS如何存儲文件

文件存儲被為IPFS對象,後者是一種數據結構,包括:

·數據(Data )——一個二進位大對象(BLOB),可以存儲高達256 KB。

·鏈接(Links)——鏈接IPFS對象的一個數組。

如果我們的文件大於256 KB,那麼它將被拆分並存儲在多個IPFS對象中,然後創建一個空對象,鏈接文件的所有其他對象。如下圖所示:

基於內容定址的分散式存儲系統IPFS,你怎麼看?

IPFS數據對象

IPFS作為一種不可變的存儲方式工作,一旦某個東西被添加到網路中,它就不能被更改,因為更改文件將更改哈希。那麼我們如何更新文件呢?為此,IPFS使用了版本控制系統,該系統特別是在開源社區中被廣泛使用,被稱為Git。IPFS具有「提交對象」,這有助於跟蹤文件創建以來的所有版本。每當我們在IPFS網路上添加一個文件時,都會為該文件創建一個提交對象,當我們更新該文件時,會創建一個新的提交對象,該對象指向該文件的舊提交對象,如下圖所示:

基於內容定址的分散式存儲系統IPFS,你怎麼看?

IPFS提交對象

我的文件永遠存在於網路上嗎?

只有重要的文件保存在網路上,不重要的文件會被垃圾回收器刪除,其中文件的重要性由「Pinning」決定。通過Pinning一個文件,我們將該文件標記為一個重要的文件,這樣不重要的文件只會被作為臨時緩存,而該文件將持續存在。

IPFS的問題

現在,我們需要講講IPFS的相關挑戰。IPFS最大的問題之一是保持文件可用,IPFS具備持久性,但無法保證持續性。也就是說,如果Alice上傳了一個文件,讓Bob來訪問該文件;當Alice離線時,在垃圾收集器沒有刪除它時,Bob才可能繼續訪問它。另一方面,如果Bob已經Pinning了該文件,那麼即使Alice的節點離線了,它也仍然可以訪問。因此,Pinning是一個主要問題。目前有許多的公共Pinning服務,獲得持續性是要付出一定代價的。

另一個限制是文件的實際共享。你必須通過傳統的通信機制(例如即時消息、電子郵件、Skype、Slack等)與網路上的其他人共享文件鏈接(內容地址)。這意味著文件共享沒有內置到系統中。現在有人已經開發出了網路爬蟲和搜索引擎,但真正解決這個問題可能還需要一段時間。

原文作者:Usman Fazil 來源:Medium

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

Ovum觀察:集中式安全管理勢在必行
為什麼數字化轉型不僅需要技術,也需要人的改變?

TAG:IT168企業級 |