IPFS技術進展:通往新DHT的道路

買賣虛擬貨幣

4 月底,我們釋出了迄今為止最大的 go-ipfs 更新:IPFS 0.5.0。此升級為 IPFS 帶來了主要的效能和可靠性改進,尤其是在內容發現和路由方面。這些收益很大程度上是透過我們對分散式雜湊表(DHT)的改造而實現的,該雜湊表為 IPFS 公共網路中的大多數對等和內容發現提供了支援。

我們希望帶您完成重新編寫 DHT 的整個過程-從確定根本問題到如何設計解決方案,以確保它在實踐中起作用。我們的工作帶來了重大的效能提升,並帶來了新的開發流程和 Testground,這是用於大規模網路測試的全新工具。

如果您想利用這些新改進,請立即升級 IPFS!

首先複習:什麼是 DHT?

DHT或分散式雜湊表,就像一個 IPFS 目錄和導航系統,幫助網路跟蹤和查詢資料。常規雜湊表是一個鍵值儲存,其中的鍵被雜湊並儲存在一個位置。對於 IPFS,鍵是資料塊的內容識別符號(CID),值是具有每個塊的對等體的集合。

DHT 在整個網路中許多節點或對等點的小表中分發和儲存這些鍵對和值對。同行則儲存有關在何處物理定位特定內容的資訊。我們的 DHT 實施 Kademlia 幫助跟蹤哪些節點正在向網路中的其他節點提供哪些資料。

從理論上講,DHT 應該使在節點之間查詢,提供和獲取資料成為精心策劃且非常有效的事情。但是,在現實情況下以及快速擴充套件的網路中,事情可能會出錯。

讓我們回顧

去年,IPFS 公共網路實現了可觀的增長,迅速擴充套件了 30 倍,現在有數十萬個節點加入該網路!大型軟體部署和新的分散式應用程式隨即出現,並期望具有可匹配的可靠性和效能的生產就緒型網路。許多人將 IPFS 用作分散的 CDN(內容交付網路),以在網路上共享和查詢內容。不幸的是,由於無法將對等方路由到所需內容的新節點激增,網路使其中一些使用者癱瘓。

在 2019 年初,我們開始聽到有關內容路由問題的傳言,隨著越來越多的節點透過 Q1 和 Q2 加入網路而加劇了這種情況-其中許多節點位於家庭防火牆或 NAT 之後。我們不斷地引導和修補網路,以補救效能和可靠性問題。但是,在這些補丁投入生產之前,我們無法真正測試它們的功效(或真正診斷出任何退化),因此很難進行迭代並嘗試對網路配置進行更大的修復。

我們顯然有一個問題,並且我們正在社羣中聽到它。我們的第一步是進行徹底調查,以確定首先應確定哪些解決方案的優先順序,並確定成功進行變更所需的工具。

縮小

經過一番調查,很明顯,我們的 DHT 實施,加上近期不可刪除節點的增長,是導致內容路由緩慢,不可靠的罪魁禍首。當我們在一起在 IPFS 營地時,我們有機會對此進行了更深入的調查,並發現了一些問題區域:

  • 對等可用性:當新的對等節點加入網路後,我們將它們同等對待,但是實際上無法到達大多數對等節點,因為它們位於防火牆或 NAT 之後。DHT 查詢時間浪費在嘗試撥打從未收到請求的對等方上。

  • 查詢終止:即使在 DHT 查詢達到其目標之後,它也沒有停止,它繼續查詢其他對等點以確保它已達到目標。雖然對網路中的許多新的不可刪除節點具有魯棒性,但此過程非常耗時。

  • 路由表維護:路由表被許多無法撥號的對等點所阻塞,導致搜尋在查詢的對等點數量上線性變化,而不是預期的對數規模效率。

集中精力

透過這一分析以及我們核心使用者和社羣的綜合反饋,很明顯,我們需要磨練內容路由效能,將其作為 IPFS 專案的核心重點。

這意味著要對優先順序進行一些艱苦的呼籲:將我們的工作組集中在 DHT 和路由邏輯的目標改進集上,以確保我們解決了這些基本的效能和可靠性問題。反過來,我們調整了產品路線圖併成立了新的核心工作組,其中一個小組嚴格關注內容路由,另一個小組致力於新的測試基礎架構:Testground。

測試,測試,測試

我們從早期的補丁中得知,我們規模的網路需要能夠在接近實際的環境中測試更改,以便能夠快速可靠地進行改進。我們擁有進行單元測試和小型模擬的能力,可以證明基本的調整,但是沒有辦法複製成千上萬個節點或典型的網路配置來對主要變更進行基準測試。這使我們在變更付諸實踐之前沒有關於變更真正影響的真實資料。

為了成功糾正 DHT,我們必須迅速改變這一點。我們成立了一個工作組來彌補這一差距。Testground 誕生了。Testground 是一個用於大規模測試,基準測試和模擬分散式和對等系統的平臺,使我們能夠驗證所需的修復程式,並在 IPFS 0.5.0 啟用之前對廣泛的 DHT 更改進行壓力測試。

Testground 在 DHT 重寫中為我們提供了進行資料驅動的開發的工具。它還在 IPFS 0.5.0 版本的其他部分為我們提供了幫助:例如對新的潛在解決方案進行原型製作,相互比較潛在的修復程式以及對邊緣情況和升級過程進行壓力測試。Testground 的可重複性和自省性對於加快我們的開發速度以可靠地改善 IPFS 至關重要。

隨著 Testground v0.5 的釋出,我們很高興與其他人共享此工具以及對他們的 p2p 網路進行基準測試和評估。立即開始使用 Testground!

現在為“修復”

使用 Testground,我們可以對 DHT 問題進行基準測試和量化,這些問題涉及對等方可用性,查詢終止和路由表維護。我們從對現有網路的模擬開始-展示了我們先前的查詢邏輯如何與不斷髮展的網路引數進行互動,就像許多節點不可撤銷一樣。

Testground 允許我們調整這些引數,以衡量哪些更改將對網路效能產生最大影響。當我們在 1 月份召開研究峰會以比較潛在緩解措施與持續存在的網路挑戰時,我們現在獲得了對網路結構和工具的定量了解,可以立即對我們的討論進行原型化並檢驗所得出的假設。

隨後是測試計劃編寫的旋風,以測量實際網路環境中 DHT 邏輯的每次更改。我們測試了新系統,以診斷無法刪除的對等方並將其從路由表中刪除,測量了成功率,以便更早地結束查詢,甚至重新確定了對 Bitswap 的改進以尋找其他改進。在所有這些重構過程中,我們都能透過我們的 Testground 模擬以及一些放置良好的金絲雀節點不斷驗證這些更改的效能,以針對整個公共網路執行基準測試。

有了這些工具,我們將從峰頂衝刺到釋出,以實現一切。從發現社羣中的問題,到確定潛在的解決方案,構建測試工具,從過去的研究中學習以及執行所需的技術修復,這次釋出的馬拉松無疑使我們步入了新的步伐,從而產生了新的史詩清單。改進的功能。

接下來,在本 DHT 深入探究的第2部分中,我們將向您詳細介紹 DHT 的新功能,並進一步介紹我們所看到的改進。同時,如果您尚未升級,請執行。隨著越來越多的節點更新,我們都將獲得效能更高的DHT的好處!

學到更多

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;