基於IPFS的分散式數據共享系統的研究
本文來自星鑒網
摘要:
隨著信息技術的不斷發展,依賴數據線、U盤等傳統的數據傳輸方式愈加顯得繁瑣且浪費時間,簡單快捷的個人文件共享方式成為市場急需。雖然目前國內很多社交工具,譬如人人網、QQ、微博等都在不同程度上實現了文件共享的功能,但都有其各自的不足,亦或耗費流量,亦或操作繁瑣,真正實現個人多種終端設備之間的文件共享功能的技術目前還不夠完善與成熟。
而如何結合市場需求及現有技術,通過對P2P技術發展現狀以及主流文件共享系統實現模式的分析,來解決區域網內個人多設備之間數據共享的問題,是設計並實現跨平台終端設備數據共享系統最主要的目的。文章通過對當前國際上新生的IPFS技術的研究,以IPFS技術為核心,設計出了一種性能優良、安全高效的數據共享系統。
關鍵詞:跨平台;數據共享;P2P;IPFS
中圖分類號:TP249 文獻標識碼:A 文章編號:2095-1302(2016)06-00-03
引言:
在信息社會中,智能手機、平板電腦、筆記本電腦等多種終端設備已成為人們生活的一部分,為了使自己的電子產品能夠及時同步,用戶常常面臨一個頭疼的問題,即如何便捷地將文件、照片、文檔、音樂、電子書等數據在手機、平板電腦、個人電腦等設備之間互相共享。在科技不斷進步發展的過程中,湧現出各式各樣的文件共享系統。
在構建全局分散式文件系統方面已經有許多嘗試,且有些系統可以看到顯著的效果。在學術嘗試中,AFS[1]已取得了成功且至今仍在使用,而其他一些系統[2]卻還未取得同樣的成功。學術界之外,最成功的系統一直是對等文件共享的應用,其主要面向大型媒體(音頻和視頻)。最值得注意的是,Napster,KaZaA和BitTorrent[3]部署大型文件分發系統支持超過一億用戶同時使用。即使在今天,BitTorrent保持了大規模部署中數以千萬計的節點生產日報[4]。相比於他們的學術文件系統而言,這些應用程序看到了更大數量的用戶和文件分布。
然而,應用程序並沒有設計成基礎性使用工具。雖然可成功的利用現有技術再開發,但目前還未出現一個可以提供全球性、低延遲性和分散式分布的通用文件系統。
到目前為止,HTTP是有史以來最成功的「文件分散式系統」部署。再加上瀏覽器,HTTP有巨大的技術和社會影響力。它已成為在互聯網上傳輸文件的實際方式。然而, 在過去的十五年里,它未能利用許多傑出的文件分布技術發明。各行業之所以使用HTTP這麼久是因為移動小文件是相對便宜的,即使對於小型組織也有大量的流量可以使用。但是,我們正面臨一個新的挑戰,數據分布的新時代具有如下特點:
(1) 託管和分發PB級數據集;
(2) 在大數據跨組織的計算;
(3) 大容量高清點播和實時媒體流;
(4) 版本控制和連接的大規模數據集;
(5) 防止重要文件意外失蹤等。
其中許多可歸結為「大量的數據,訪問無處不在。」 通過追尋關鍵特性和帶寬問題,我們已經放棄使用HTTP協議進行不同的數據分發。下一步是使用它們在Web本身的一部分。
IPFS[5]是點對點協議(InterPlanetary File System,IPFS)的簡稱,它是一個面向全球、點對點的分散式版本文件系統,試圖將所有具有相同文件系統的計算設備連接在一起。本文將介紹對IPFS的部分研究及其在新一類數據共享系統中的應用。
1 IPFS技術背景
1.1 HTTP技術的缺陷
超文本傳輸協議(HTTP)[6]已經在全球信息協議中一統山河,對信息的發布與傳播設置了很多規範。沒有HTTP的生活幾乎無法想像,HTTP將發布信息的成本幾乎降為零,這一創新粉碎了對信息至上而下的傳播渠道管控,藉助信息流動與更簡單的信息發布方式,使人人都能發布與訪問包括經濟、政治、文化領域(音樂、創意、視頻、新聞、遊戲等)的信息,HTTP讓我們的文化獲得了整體提高。
可以這樣說,HTTP是史上最偉大且最重要的發明之一。
儘管HTTP成就斐然,但是在傳播與維護人類知識方面,它作為基礎並非差強人意,而是幾乎全無招架之力。HTTP傳播信息的方式從根本上是有缺陷的,無論進行再多的性能調整,打破CASSL或採取其他措施都難以修復這一問題。HTTP/2(超文本傳輸協議第二版)是可喜的進步,不過它只能算針對一個有年頭的技術所進行的保守更新。想要讓網路獲得更好的未來,我們不止需要一個HTTP的更新版,而是一個新的基礎。就網路空間的管理模式而言,我們需要一個新的協議。
總體而言,HTTP具有以下幾方面的缺點[7]:
(1)HTTP是脆弱的,一台Web伺服器一旦關機或無響應,連接就會中斷,站點間的聯繫會被打破,訪問的內容也隨之消失不見。
(2)HTTP鼓勵過度集中化,這樣會導致大量的數據對大型、更集中管理的伺服器產生進一步的依賴。由於冗餘備份較多,他們在短時間內可用性(大多)更高。但仍沒有解決長期的可用性問題,還觸發了一系列全新的問題。
(3)HTTP效率低下,HTTP降低了發布信息的價格,但仍需要花錢,看起來低廉的成本加起來卻數目驚人。將大量數據從中央數據中心傳播出去,如果不是以規模經濟的方式完成,花費可能相當高昂。
(4)HTTP對互聯網主幹過度依賴,內容的過度集中化將會使我們高度依賴互聯網主幹的數據中心功能。這樣除了很容易被攔截審查之外,也存在著可靠性問題。即使有冗餘備份,主幹網有時也存在被毀壞或者路由表失控的問題,結果可能十分嚴重。
為解決以上問題,IPFS應運而生。
1.2 IPFS的解決方案
IPFS從根本上改變了查找方式,這是它最重要的特徵。我們使用HTTP查找的是位置,而使用IPFS查找的是內容[8]。
在HTTP伺服器中,查找文件須遵照HTTP協議,瀏覽器首先會查找伺服器的位置(IP地址),隨後向伺服器索要文件路徑。這種體系下文件的位置取決於伺服器管理者,而用戶只能寄希望於文件沒有被移動,並且伺服器沒有關閉。
IPFS的做法則是不再關心中心伺服器的位置,也不考慮文件的名字和路徑,只關注文件中可能出現的內容。我們將一個文件放在IPFS的節點,它會得到一個新名字QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU,這是一個由文件內容計算出的加密哈希值。哈希值直接反映文件的內容,哪怕只修改1比特,哈希值也會完全不同。
當IPFS被請求一個文件哈希時,它會使用一個分散式哈希表找到文件所在的節點,取迴文件並驗證文件數據。雖然早期的DHT設計曾出現過Sybil攻擊的問題,不過現在已經有了新的解決辦法。
IPFS是通用的基礎架構,基本沒有存儲上的限制。大文件會被切分成小的分塊,下載時可以從多個伺服器同時獲取。IPFS的網路是不固定的、細粒度的、分散式的網路,可以很好地適應內容分發網路(CDM)的要求。這樣的設計可以很好地共享各類數據,包括圖像、視頻流、分散式資料庫、整個操作系統、模塊鏈,還有最重要的——靜態網站。
IPFS文件可以抽象成特殊的IPFS目錄,從而標註一個可讀的文件名(透明的映射到IPFS哈希),在訪問時會像HTTP一樣獲取一個目錄索引。在IPFS上建立網站的流程和過去一樣,而且把網站加入到IPFS節點只需要一條指令:ipfs add -r yoursitedirectory。網頁間的連接不再需要人去維護,IPFS自帶的查找可以解決問題。
IPFS不會要求每一個節點都存儲所有的內容,節點的所有者可以自由選擇想要維持的數據。這就像書籤一樣,在備份了自己的網站之外,自願為其他關注的內容提供服務,不同的是這個書籤不會像之前那樣最終失效。
IPFS節點間的拷貝、存儲和網站支援都很容易,如果IPFS得以普及,且節點數達到一定規模,即使每個節點只存放一點點內容,所累計的空間、帶寬和可靠性也遠超HTTP所能提供的。隨即,分散式Web會變成地球上最快、最可靠、最大的數據倉庫。
2 IPFS設計
IPFS是一個綜合了先前的P2P系統[9],包括DHTs[10]、比特流、Git和SFS成功思想的分散式文件系統[11]。IPFS的貢獻是簡化、進化,以及連接成熟的技術到一個單一的綜合系統,其功能大於各部分的總和。IPFS提出了一個用以編寫和部署應用程序的新平台,並進行版本控制以及分發大量數據的新系統。IPFS甚至可能進化網路本身。
IPFS是對等網路,沒有節點擁有特權。IPFS節點倉庫在本地存儲IPFS對象。節點之間相互連接並傳輸對象。這些對象代表文件和其他數據結構。所述IPFS協議分為一堆子協議並各自負責不同的功能:
(1)特性:管理節點的身份生成和驗證。
(2)網路:對連接到的其他節點進行管理,使用各種底層網路協議,並且是可配置的。
(3)路由:維護信息來定位特定的節點和對象。響應本地和遠程查詢。默認為一個DHT,但是可交換的。
(4)交換:可以使用一種新的分組交換協議(比特交換)來管理有效的塊分布。建模為一個需求,弱化數據複製的刺激。可交換的貿易策略。
(5)對象:內容定址的Merkle DAG不可變對象鏈接。用於表示任意的數據結構,例如文件層次結構和通信系統。
(6)文件:靈感來自Git版本控制文件系統的層次結構。
(7)命名:一個自認證的可變名稱系統。
這些子系統並不是獨立的,他們整合併利用了混合屬性,在這些功能的協作下,構建了自上而下的協議棧。
3 系統設計與分析
結合IPFS的設計理念,我們可以在其基礎上實現分散式數據共享系統的進一步開發。分散式數據共享系統對我們而言並不陌生,其使用的技術多種多樣,這一類分散式文件系統如HDFS[12]、FastDFS[13]等,並沒有在我們的實際生活中得到廣泛推廣。在這裡不能夠說本系統能夠取代他們,只是對分散式數據共享系統的一點設想與看法。
3.1 系統設計
首先,本系統將以IPFS技術作為其設計核心,因此,本系統具備IPFS技術的所有優點,並可以擁有IPFS的所有功能。允許安裝此系統的所有設備都將作為網路節點,用戶可選擇將自己的數據通過哈希加密後保存於任何節點中(只要能夠登錄此節點),並且可以隨時取回本地,即便本地數據丟失,用戶仍可憑藉其哈希值從任何保存過此數據的節點中將其找到。
其次,IPFS哈希只能用來表示不可變數據,因為一旦數據改變,哈希值也會改變。但從某種意義上來說,這是保持數據持續性的較好的設計。卻也需要一種方法來標記最新更新的哈希,這個方法被稱作IPNS。由於本系統採用了哈希加密,相比傳統的加密方式其安全性更高。
本系統可分為PC端和Android端,二者沒有客戶端與伺服器端之分。當設備打開此程序時,用戶指定的文件或文件夾即可被任意經過授權的節點發現並進行訪問。
3.2 結果分析
由於本系統採用IPFS技術作為其設計核心,所以與其他數據共享系統有很大的不同。首先,由於IPFS技術擬用來替代HTTP技術,故其在網路中的安全性以及傳輸協議都與HTTP技術有很大的不同,本系統所使用的協議是比特交換協議。其次,本系統採用內容定址方式,所有內容都是由其多哈希校驗和唯一標識,包括鏈接。
由於本系統採用了IPFS技術,使得使用者加入到了全球性IPFS節點的行列中來,每一台安裝了此系統的電腦都可以作為網路中的一個節點,它不會要求每一個節點都存儲所有內容,節點的所有者可以自由選擇想要維持的數據。比如兩個人在各自的節點中放入了相同的數據,其中一人在自己的數據丟失後仍可藉助另一人的節點取到丟失的數據。
推薦閱讀:
※filecoin在ipfs系統中作用是什麼?
※Filecoin官方更新: Q4工作進展和2018年工作計劃
※CentOS6.5部署storj實戰貼!
※Filecoin: 影響力容錯(PFT)和預期共識(EC)
※顛覆HTTP協議,IPFS可不是說大話