IPFS能否成為新一代互聯(lián)網(wǎng)協(xié)議?
本文將分析IPFS的特性,并在與其他分布式文件系統(tǒng)和超文本傳輸協(xié)議(HTTP)比較的基礎(chǔ)上,進行并行研究。
引言
互聯(lián)網(wǎng)是由協(xié)議和物理設(shè)備連接起來的大量計算機器的集合。大多數(shù)互聯(lián)網(wǎng)內(nèi)的生態(tài)系統(tǒng)都基于客戶端-服務(wù)器(請求-響應(yīng))模型,但這種模型并非不可破壞,網(wǎng)絡(luò)時不時會出現(xiàn)故障。無論是否有控制中心,點對點(P2P)系統(tǒng)都可以高效分發(fā)海量數(shù)據(jù)。2014年,Juan Benet提出了整合現(xiàn)有的先進技術(shù)(分布式哈希表(DHT)、BitTorrent-like協(xié)議、基于Git的數(shù)據(jù)模型等)創(chuàng)建一個新的協(xié)議/文件系統(tǒng),使每個人都具有共享數(shù)據(jù)的平等權(quán)利,符合互聯(lián)網(wǎng)的早期思想。IPFS具有高效的數(shù)據(jù)存儲與分發(fā)、數(shù)據(jù)保持、面向離線模式和非集中式管理的特性。
IPFS理論介紹
IPFS是一個純粹的點對點分布式文件系統(tǒng),這種系統(tǒng)側(cè)重于從主要體系結(jié)構(gòu)中刪除中心點,并在網(wǎng)絡(luò)中為相互連接的節(jié)點提供相同的功能。所有共享的數(shù)據(jù)和計算資源都存儲在網(wǎng)絡(luò)的邊緣,節(jié)點能夠自動運行,并與它們的對等節(jié)點共享所需數(shù)據(jù)。它們能夠自主通信、分發(fā)數(shù)據(jù)、本地化其他節(jié)點和所需的文件,并使用同一組協(xié)議。
IPFS源于Juan Benet的分布式、去中心化、共享互聯(lián)網(wǎng)的理念,自2014年出現(xiàn)以來,目前仍處于開發(fā)階段?,F(xiàn)在已有一些可用的實現(xiàn)(如Go和JavaScript),以及一套使用各種編程語言實現(xiàn)的工具、庫和API(應(yīng)用程序編程接口)。IPFS的一些主要特點有:數(shù)據(jù)持久性、點對點基本原理、完全去中心化、無中心點故障、在無互聯(lián)網(wǎng)上行鏈路情況下具有本地連接。
- HTTP在日?;A(chǔ)使用中效率低下且昂貴;IPFS使以一種有效的方式使分發(fā)大量數(shù)據(jù)成為可能;
- 儲存在互聯(lián)網(wǎng)上的舊內(nèi)容通常會和舊版本的文件一起被刪除;IPFS有一種類似于Git的數(shù)據(jù)版本控制方法;
- 互聯(lián)網(wǎng)用戶依賴于管理其功能的集中設(shè)備,當(dāng)沒有連接到互聯(lián)網(wǎng)骨干網(wǎng)時,他們無法與這些設(shè)備通信,也無法訪問他們的個人數(shù)據(jù);IPFS是各種彈性網(wǎng)絡(luò)的引擎,無論是否有全球上行鏈路,這些網(wǎng)絡(luò)都試圖將盡可能提高其分散性。
Juan Benet發(fā)布的官方白皮書代表了他對協(xié)議架構(gòu)和模塊的觀點??偟膩碚f,IPFS的靈感來源于一些被塑造成單一、模塊化協(xié)議的技術(shù),IPFS利用了這些想法和經(jīng)驗。我們將簡要介紹這些技術(shù),以更好的理解IPFS。
從IPFS堆棧的最底層開始,網(wǎng)絡(luò)層可以進行數(shù)據(jù)儲存、信息交換及交換控制信息。傳輸本身可使用各種協(xié)議(如TCP、UTP、WebSocket、WebRTC等)以一種安全可靠的方式實現(xiàn),而IPFS本身不綁定到某個特定的協(xié)議上。
向上進入到路由層,分布式哈希表(DHT)用于存儲和管理系統(tǒng)內(nèi)部的元數(shù)據(jù)。這些信息包含在給定的時間點上相互連接的節(jié)點的信息,并提供快速有效地查找數(shù)據(jù)的機制。Kademlia在路由層十分重要,它提供了在大型網(wǎng)絡(luò)中查找元數(shù)據(jù)的有效方法、低協(xié)調(diào)成本,Coral DSHT通過查詢最近的能夠存儲數(shù)據(jù)的節(jié)點來實現(xiàn)擴展,并提高數(shù)據(jù)被存儲在更遠位置的節(jié)點上的可能性。S/Kademlia通過強制節(jié)點創(chuàng)建用于生成身份和簽名消息的PKI(公鑰基礎(chǔ)設(shè)施)密鑰對,進一步增強了針對惡意攻擊的安全性。對于本地定位的節(jié)點,使用組播DNS(域名系統(tǒng))實現(xiàn)相互搜索。
交換層用于確保節(jié)點之間的塊傳輸。
進一步到達堆棧上層,默克爾有向無環(huán)圖(Merkle DAG)是協(xié)議的主要數(shù)據(jù)模型,很大程度上是受到Git數(shù)據(jù)結(jié)構(gòu)的啟發(fā)。數(shù)據(jù)樹的節(jié)點是通過其內(nèi)容加密尋址的對象,而它們之間的鏈接由對其他對象的哈希引用表示。每個數(shù)據(jù)都是由其不可變哈希引用唯一標(biāo)識的(因此只存儲一次,重復(fù)數(shù)據(jù)刪除),系統(tǒng)能夠使用校驗和檢測損壞的數(shù)據(jù)。
堆棧的最后一層是命名層。每個節(jié)點的唯一標(biāo)識符是使用PKI密鑰對以加密的方式在本地生成的。星際命名系統(tǒng)(IPNS)是一種用于識別可修改對象的策略。數(shù)據(jù)塊具有不可變的哈希引用,因此一旦它們的內(nèi)容改變,哈希引用就會改變。IPNS概念使用自認證文件系統(tǒng)方案,因此節(jié)點能夠在自己唯一的節(jié)點標(biāo)識符上發(fā)布數(shù)據(jù)。如果數(shù)據(jù)本身改變,哈希引用也會改變,但節(jié)點可能會將新的引用重新發(fā)布到相同的唯一節(jié)點標(biāo)識符。IPNS還支持DNS來提供人類可讀的地址。
處于最上層的是應(yīng)用層,在這里,開發(fā)人員能夠使用堆棧的底層功能設(shè)計和實現(xiàn)新的分布式、去中心化技術(shù)。
IPFS vs. 其他DFS
這一部分將討論各種DFS(分布式文件系統(tǒng))和HTTP(超文本傳輸協(xié)議)的各方面特性。
NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))是SUN公司在1984年開發(fā)的基于RPC(遠程過程調(diào)用)協(xié)議的開放協(xié)議,其基于UDP/IP協(xié)議的應(yīng)用,主要特性是具有一個控制中心,NFS 允許在多個用戶之間共享公共文件系統(tǒng),并提供數(shù)據(jù)集中的優(yōu)勢,來最小化所需的存儲空間。
將早期的NFS與IPFS進行比較,我們可以看出,NFS使用服務(wù)器和冪等的、無狀態(tài)的行為在系統(tǒng)中進行數(shù)據(jù)同步,而IPFS架構(gòu)可以不依賴于服務(wù)器,因為其哈希引用生成的數(shù)據(jù)可以在其協(xié)議用戶間共享。IPFS在節(jié)點自動狀態(tài)下以同步/異步方式處理寫操作,其用戶只要獲得數(shù)據(jù)標(biāo)識符,就可以通過元數(shù)據(jù)交換和搜索在網(wǎng)絡(luò)中共享數(shù)據(jù)。
AFS(Andrew File System,安德魯文件系統(tǒng))是由Carnegie Mellon大學(xué)在20世紀(jì)80年代和IBM公司聯(lián)合設(shè)計的一個分布式文件系統(tǒng),它的主要功能是用于管理分布在網(wǎng)絡(luò)不同節(jié)點上的文件,其使用一組受信任的服務(wù)器為客戶端提供同類的、地址透明的文件名稱空間,主要目標(biāo)是實現(xiàn)可擴展性,尤其關(guān)注客戶端和服務(wù)器之間協(xié)議的設(shè)計。文件在本地磁盤上整體進行儲存和緩存,客戶端想要訪問一個文件時,將從服務(wù)器獲取文件,在本地緩存,然后服務(wù)器設(shè)置回調(diào)(用于之后通知客戶端文件被修改)。IPFS機制同樣可以用于實現(xiàn)類似的回調(diào)和緩存系統(tǒng),同時保持不集中(單點故障)的優(yōu)勢。
GFS(Google File System,谷歌文件系統(tǒng))是谷歌為了存儲海量搜索數(shù)據(jù)而設(shè)計的專用分布式文件系統(tǒng),專注于可擴展性、基礎(chǔ)性能和低價硬件。谷歌希望提供一種附加而不是重寫的數(shù)據(jù)分發(fā)方法,從而構(gòu)建一個可自我持續(xù)的文件系統(tǒng):具有監(jiān)督恢復(fù)、使用主塊架構(gòu)存儲跨多個服務(wù)器備份的大量數(shù)據(jù)的可能性。GFS的設(shè)計與IPFS有一些相似之處,它使用多個塊服務(wù)器、數(shù)據(jù)塊和替換機器來應(yīng)對崩潰情況。與IPFS相比,GFS的信息仍然在中心區(qū)域管理,由主服務(wù)器協(xié)調(diào),而IPFS的數(shù)據(jù)基本上是存儲在網(wǎng)絡(luò)中。
HTTP(超文本傳輸協(xié)議)是全球范圍內(nèi)用于Web上下文中數(shù)據(jù)交換的最流行的協(xié)議之一。它遵循經(jīng)典的客戶端-服務(wù)器模型架構(gòu),服務(wù)器通常位于互聯(lián)網(wǎng)之外,而客戶端則是瀏覽器。整個機制依賴于客戶端和服務(wù)器之間的請求(數(shù)據(jù))-響應(yīng)(數(shù)據(jù)/狀態(tài))交互。其特點是簡單、可擴展、無狀態(tài),具有控制中心。HTTP目前仍運行良好,但問題逐漸出現(xiàn):如果資源被刪除、損壞或被其提供者關(guān)閉,該怎么處理?
上述文件系統(tǒng)/協(xié)議中使用的所有技術(shù)都帶來了保證數(shù)據(jù)分布的創(chuàng)新機制:AFS的回調(diào)、NFS的冪等性和崩潰時的簡單重試、GFS的可擴展性和低價硬件設(shè)計、HTTP的簡單性和長壽命,但它們都依賴于同一個控制中心。
總結(jié)
如今的實際應(yīng)用中,大多數(shù)技術(shù)都是基于經(jīng)典的客戶端-服務(wù)器模型。此模型自互聯(lián)網(wǎng)誕生以來,目前仍能基本滿足客戶的需求。開發(fā)人員和工程師需要著重關(guān)注的是優(yōu)化應(yīng)用程序以最小化計算時間和響應(yīng)速度,并全面改善我們目前的互聯(lián)網(wǎng)系統(tǒng)。IPFS試圖通過改變數(shù)據(jù)分布、存儲和管理的整個視角,同時保持對可能使用的其他協(xié)議的開放接口,來解決互聯(lián)網(wǎng)的問題。盡管目前IPFS還有很大的改進空間,但其能否成為新一代互聯(lián)網(wǎng)協(xié)議也猶未可知。