基於內容定址的分散式儲存系統IPFS,你怎麼看?
在傳統的Web中,使用者資料儲存在自己能夠完全控制的集中式儲存伺服器上。這種控制能力,為他們提供了在使用者不知情或未經使用者同意的情況下可能會濫用的高階特特權。此外,集中儲存可能存在可用性問題,尤其是如果資料僅儲存在一個位置時,會因此產生單點故障。
Web上的檔案儲存
web使用基於位置的定址來儲存和檢索檔案。假設我們想從域名abc.com訪問一張關於貓的圖片cat.png。我們會先透過Web瀏覽器訪問這個位置(如abc.com/cat.png),然後,我們將得到貓的圖片。但是,如果由於某種原因,檔案已經從abc伺服器上刪除,我們就無法再訪問該圖片。現在有一種可能性是,網上的其他人也有這隻貓的照片,但是我們無法聯絡到他們,也無法獲取這隻貓的照片。網際網路上的許多檔案都可能具有相同的名稱,但內容可能不同。
IPFS解決方案
IPFS是一種用於檔案儲存的對等網路協議,採用的是基於內容的定址,而非基於位置。這意味著要查詢檔案,我們不需要知道它在哪裡(abc.com/cat.png),而是它包含的內容(QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)——由內容的雜湊進行表示。
雜湊函式為每個檔案建立唯一的“指紋”。因此,如果我們想要檢索一個檔案,只需詢問網路“誰擁有這個檔案(QmSNssW5a9S3KV…)”,然後來自IPFS網路的某個擁有該檔案的人將提供給我們。我們可以透過將請求的雜湊值與接收到的雜湊值進行比較來驗證檔案的完整性,如果雜湊值匹配,則可知該檔案沒有被更改。這個雜湊函式還可以幫助消除網路的重複,這樣具有相同內容的檔案就無需提交兩次,因為相同的內容會產生相同的雜湊。這最佳化了儲存需求,也提高了網路的效能。
IPFS如何儲存檔案
檔案儲存被為IPFS物件,後者是一種資料結構,包括:
· 資料(Data )——一個二進位制大物件(BLOB),可以儲存高達256 KB。
· 連結(Links)——連結IPFS物件的一個陣列。
如果我們的檔案大於256 KB,那麼它將被拆分並儲存在多個IPFS物件中,然後建立一個空物件,連結檔案的所有其他物件。如下圖所示:
IPFS資料物件
IPFS作為一種不可變的儲存方式工作,一旦某個東西被新增到網路中,它就不能被更改,因為更改檔案將更改雜湊。那麼我們如何更新檔案呢?為此,IPFS使用了版本控制系統,該系統特別是在開源社群中被廣泛使用,被稱為Git。IPFS具有“提交物件”,這有助於跟蹤檔案建立以來的所有版本。每當我們在IPFS網路上新增一個檔案時,都會為該檔案建立一個提交物件,當我們更新該檔案時,會建立一個新的提交物件,該物件指向該檔案的舊提交物件,如下圖所示:
IPFS提交物件
我的檔案永遠存在於網路上嗎?
只有重要的檔案儲存在網路上,不重要的檔案會被垃圾回收器刪除,其中檔案的重要性由“Pinning”決定。透過Pinning一個檔案,我們將該檔案標記為一個重要的檔案,這樣不重要的檔案只會被作為臨時快取,而該檔案將持續存在。
IPFS的問題
現在,我們需要講講IPFS的相關挑戰。IPFS最大的問題之一是保持檔案可用,IPFS具備永續性,但無法保證持續性。也就是說,如果Alice上傳了一個檔案,讓Bob來訪問該檔案;當Alice離線時,在垃圾收集器沒有刪除它時,Bob才可能繼續訪問它。另一方面,如果Bob已經Pinning了該檔案,那麼即使Alice的節點離線了,它也仍然可以訪問。因此,Pinning是一個主要問題。目前有許多的公共Pinning服務,獲得持續性是要付出一定代價的。
另一個限制是檔案的實際共享。你必須透過傳統的通訊機制(例如即時訊息、電子郵件、Skype、Slack等)與網路上的其他人共享檔案連結(內容地址)。這意味著檔案共享沒有內建到系統中。現在有人已經開發出了網路爬蟲和搜尋引擎,但真正解決這個問題可能還需要一段時間。
原文作者:Usman Fazil 來源:Medium
來自 “ Medium ”,原文連結:http://blog.itpub.net/31545805/viewspace-2636951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IPFS分散式儲存挖礦技術系統開發分散式
- IPFS分散式儲存挖礦系統開發軟體技術分散式
- 基於Raft的分散式MySQL Binlog儲存系統開源Raft分散式MySql
- 怎麼重新儲存ie中表單的內容!
- 怎麼更改網頁上的內容並儲存網頁
- Bayou複製分散式儲存系統分散式
- 基於MFS高可用的分散式儲存架構分散式架構
- juicefs:一個基於Redis和雲物件儲存的分散式POSIX檔案系統UIRedis物件分散式
- 基於thincmf的內容管理系統
- 雲端儲存及其分散式檔案系統分散式
- 分散式儲存系統可靠性:系統量化估算分散式
- 分散式儲存系統可靠性如何估算?分散式
- 分散式系統中資料儲存方案實踐分散式
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 分散式儲存系統的最佳實踐:系統發展路徑分散式
- [技術思考]分散式儲存系統的雪崩效應分散式
- 必須掌握的分散式檔案儲存系統—HDFS分散式
- 分散式系統中的資料儲存方案實踐分散式
- 從資料儲存發展史看IPFS/Filecoin
- 什麼是HDFS 分散式儲存分散式
- 分散式系統技術:儲存之資料庫分散式資料庫
- 杉巖PACS影像系統分散式儲存架構分散式架構
- 騰訊重磅開源分散式NoSQL儲存系統DCache分散式SQL
- 分散式kv儲存系統之Etcd叢集分散式
- 分散式 Key-Value 儲存系統:Cassandra 入門分散式
- 基於滴滴雲搭 SeaweedFS 儲存系統
- 基於內容的推薦系統演算法演算法
- 分散式塊儲存系統Ursa的設計與實現分散式
- Redis 分散式儲存Redis分散式
- HDFS分散式儲存分散式
- 分散式儲存概述分散式
- IPFS的檔案儲存模式模式
- 百度搜尋內容HTAP表格儲存系統
- 在 CentOS 7.1 上安裝分散式儲存系統 CephCentOS分散式
- 怎麼構建健壯的分散式系統?分散式
- 分散式檔案儲存系統 fastdfs 的 Composer 包釋出!分散式AST
- 3個基於Node.js的內容管理系統Node.js
- IPFS :分散式 HTTP 替代分散式HTTP