Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 33 章 IPFS(InterPlanetary File System,星際檔案系統)

目錄

33.1. 什麼是 IPFS
33.1.1. 傳統的中心化HTTP服務
33.1.2. IPFS 解決方案
33.2. 安裝 IPFS
33.2.1. go get 方式
33.2.2. 安裝 ipfs-update
33.2.3. Ubuntu
33.2.4. Netkiller OSCM
33.2.4.1. 源碼安裝
33.2.4.2. ipfs-update
33.2.5. Mac OS

33.1. 什麼是 IPFS

IPFS “星際檔案系統” 是去中心化保存和共享檔案的分散式檔案系統,它是一種內容可定址、版本化、點對點超媒體的分散式協議,IPFS旨在替代HTTP。它希望將所有的計算設備都連接到同一個檔案系統中。

由於 IPFS 去中心化特點,使得很多區塊鏈項目做檔案存儲的時候首選IPFS。

33.1.1. 傳統的中心化HTTP服務

舉個例子,伺服器上有一個檔案https://www.netkiller.cn/video/av.mp4,按照HTTP協議標準流程,瀏覽器首先會解析域名並查找到伺服器的IP地址,隨後與伺服器建立連結,並根據路徑向伺服器請求該檔案/video/av.mp4。在這種體系下用戶是否能獲取該檔案取決於檔案是否被移動或刪除,並且伺服器沒有關閉。

另一個問題就是檔案伺服器管理,中心化管理是很複雜的,如果訪問量比較大,我們通常會使用負載均衡來解決,負載均衡需要每個節點上的數據是完整的,這就需要大量的數據同步。如果從深圳數據中心同步到上海數據中心 100T的數據可能要數個工作日。

HTTP過度依賴Internet主幹網,同時網絡通信遭遇DDoS攻擊的風險也大大增加。

CDN 只解決最後一公里的性能問題,數據回源仍然是中心化,仍然無法徹底解決。

33.1.2. IPFS 解決方案

IPFS的做解決方案是不再關心中心伺服器的位置,也不考慮檔案的名字和路徑,只關注檔案中的內容。例如將檔案av.mp4添加到IPFS節點,會得到一個新名字QmS8R3nSbDHjQ7WRTjtX1pkiQ6BUpti9qTjweZkBgGPKiN,通過檔案內容計算出的哈希值,訪問檔案不在使用檔案名而是使用這個統一的 hash 值。

當用戶被請求一個檔案哈希時,它會根據這個分散式哈希表找到檔案所在的節點,並取回檔案內容並驗證檔案數據。大檔案會被切分成小的分塊,下載的時候可以從多個伺服器同時獲取。

IPFS 可以理解為內容被永久緩存到節點上的CDN。