在4月末,IPFS/Filecoin團隊釋出了最新版的IPFS 0.5.0,這個新版本在IPFS性能和可靠性上有了極大的提高,尤其在内容發掘和路由方面。
而這些性能之是以能有如此顯著的提高,主要原因是IPFS/Filecoin團隊對分布式哈希表(DHT)進行了較大的改進,而分布式哈希表正是IPFS網絡中處理内容發掘的根本。
在這篇文章中,我們将和大家分享IPFS/Filecoin團隊是如何重新改寫DHT的細節,包括團隊是如何發現其中的問題、如何對解決這些問題以及如何確定研發的方案實際可行。
團隊在這個過程中所取得的成果:不僅包括對系統性能的提升,還包括研發出的新産品Testground------一個可用于大規模網絡測試的工具。
我們先來回顧一下什麼是DHT,分布式哈希表。這個哈希表就像IPFS的目錄和引導系統,幫助網絡定位和搜尋資料。
通常這樣一個哈希表由一對對“鍵”-“值”組成,其中的“鍵”是某資料的内容辨別符(CID),“值”是IPFS網路中存儲這些資料的節點。
DHT表在系統中多處節點都存儲着這些“鍵”-“值”。DHT在IPFS系統中具體的實作方案是Kademlia,Kademlia負責定位這些“鍵”所對應的資料存儲在哪些節點上。
理論上講,DHT應該以高效,統一的方式定位并擷取使用者所需的資料。但在一個急速擴張的IPFS網絡中,實際情況往往比理論上複雜得多。
IPFS網絡的規模在去年經曆了顯著的增長,增長倍數達30倍,系統已經有了數十萬節點。
很多新的去中心化應用和軟體都部署在了IPFS系統中,這使得業界越來越希望IPFS網絡能具備産品級的可靠性和高性能。
很多應用将IPFS用作去中心化的内容分發網絡(CDN)在全網分享和搜尋内容。但不幸的是,很多新加入的節點卻無法有效地分發内容,這使得IPFS系統無法滿足某些使用者的需求。
早在2019年年初,IPFS/Filecoin團隊就聽到有使用者反映這方面的問題,而這些問題随着新節點的不斷加入而變得越來越突出。
盡管團隊一直在釋出這方面的解決方案,但卻無法準确了解這些解決方案是否真的有效。
為了改善這個狀況,IPFS/Filecoin團隊進行了詳細的調查和研究,并确定了要進行的一系列事項和這些事項的優先級,還規劃了團隊需要的工具以便實施這些方案。
經過調查,團隊發現是DHT的現行實作方式導緻了效率的低下。其後,團隊更深入研究發現下面這些領域存在一些問題。
節點可用性:當越來越多的節點加入IPFS網絡後,現行的系統是用平等、統一的方式對待這些新加入的節點。但實際上很多這些新加入的節點在網絡中是很難被連接配接的,無法像一些在系統中存在了很久的節點那樣進行通暢的通信,而原因是它們被防火牆屏蔽了。
查詢終止:DHT會向系統中的節點不斷發出查詢請求,當節點接收到DHT發出的查詢請求後,DHT仍然會持續發出這些查詢請求,實際上這并不必要。這浪費了大量的時間。
對路由表的維護:由于系統中存在一些有可能根本無法連接配接的節點,它們會影響DHT的路由性能,導緻系統對内容的搜尋時間變長、效率降低。
經過這樣的分析,團隊就有了清晰的思路----改進DHT的實作方式,改進路由方式,并開發一個新的測試平台:Testground。
接着團隊開發出了Testground平台,并借助這個工具測試各種方案和改進措施(包括對DHT的各種改進)。
這就是IPFS/Filecoin團隊改進DHT和推出Testground的過程。