发布了go-ipfs有史以来最大的更新:IPFS 0.5.0

来源:四块云科技  作者:四块科技  时间:2020-06-01

  4月底,我们发布了go-IPFS有史以来最大的更新:IPFS 0.5.0。迄今为止最大的升级,0.5版本更新发布!这次升级为IPFS带来了主要的性能和可靠性改进——特别是在内容发现和路由方面。这些好处主要来自我们对分布式哈希表(DHT)的重新设计,它支持IPFS公共网络中的大多数对等点和内容发现。

  我们将带你经历我们重新编写DHT的过程——从识别潜在的问题,到我们如何设计解决方案,到确保它在实践中有效。我们的工作带来了主要的性能收益,以及一个新的开发过程和Testground(试验场),一个用于大规模网络测试的全新工具。

  如果想使用这些新改进,请现在就升级IPFS吧!

  发布了go-ipfs有史以来最大的更新:IPFS 0.5.0

  1

  首先来复习一下:DHT是什么?

  DHT也就是分布式哈希表的作用类似于IPFS的目录和导航系统,帮助网络跟踪和查找数据。常规哈希表是一个键值存储库,其中键值被哈希并存储在一个地方。在使用IPFS的情况下,键是数据块的内容标识符(CIDs),值是拥有每个块的对等点的集合。

  DHT将这些键和值对分布和存储在网络中的许多节点或对等点的小表中。而对等点则存储关于物理定位特定内容的位置的信息。我们的DHT实现Kademlia帮助跟踪哪些节点向网络中的其他节点提供什么数据。

  从理论上来说,DHT应该使节点之间的查找、提供和获取数据成为一件精心安排的、非常高效的事情。然而,考虑到现实世界的条件和快速扩展的网络,事情可能会出错。

  2

  再让我们先回顾一下

  IPFS公共网络在去年经历了显著的增长,快速扩展了30倍,现在有数十万个节点参与到网络中!主要的软件部署和新的去中心化的应用程序都与生产就绪的网络的可靠性和性能相匹配。许多人使用IPFS作为分布式的CDN(内容分发网络),通过网络共享和查找内容。不幸的是,由于大量新节点无法将节点路由到所需的内容,网络缓慢让其中一些用户感到失望。

IPFS生态系统进展报告 - Molly Mackinlay

  在2019年初,我们开始听到有关内容路由问题的传言,随着越来越多的节点通过Q1和Q2加入网络,这些问题变得更加严重——其中许多节点位于家庭防火墙或NATs之后。我们不断地引导和修补网络,以弥补性能和可靠性问题。但是,在这些补丁投入生产之前,我们无法真正测试它们的功效(或真正诊断任何倒退),这使得迭代和尝试更大的网络配置修复变得非常困难。

  我们显然遇到了问题,我们从社区中听到了这个问题。我们的第一步是彻底地调查,以确定我们首先应该优先考虑哪些修复,并确定我们成功地完成更改所需的工具。

  3

  缩小范围

  经过一些调查,很明显,我们的DHT实现,加上最近无法拨号的节点的增长,是缓慢、不可靠的内容路由背后的罪魁祸首。当我们一起在IPFS营地时,我们有机会更深入地研究这个问题,并发现了几个问题领域:

  对等可用性:当新对等点加入网络时,我们平等地对待它们,但实际上大多数都无法访问,因为它们位于防火墙或NATs之后。DHT查询时间浪费在尝试拨打这些从未收到请求的对等点上。

  查询终止:即使一个DHT查询到达了它的目标,它也没有停止——它继续查询其他的对等点,以确保它已经到达了它的目标。必须连接到网络中的许多新的非拨号节点,但这个过程非常耗时。

  路由表维护:路由表被许多无法拨号的对等点阻塞,导致搜索结果与查询的对等点数量成线性关系,而不是期望的对数级效率。

  4

  集中精力开始行动

  有了这些分析和来自我们的核心用户和社区的反馈综合,很明显,我们需要将内容路由性能作为IPFS项目的核心关注点。

  这意味着在优先级方面有一些困难:将我们的工作组集中在DHT和路由逻辑的一组目标改进上,以确保我们解决了这些底层性能和可靠性问题。反过来,我们调整了我们的产品路线图,并建立了新的核心工作组,其中一个工作组严格关注内容路由,另一个工作组关注新的测试基础设施:Testground。

  发布了go-ipfs有史以来最大的更新:IPFS 0.5.0

  Testground(试验场)正式启动!

  5

  试验,试验,试验

  我们从早期的补丁中了解到,我们这种规模的网络需要能够在接近真实环境的情况下测试更改,以便能够快速、可靠地进行改进。我们有办法做单元测试和小的模拟,可以证明基本的调整,但没有办法复制数以千计的节点或典型的网络配置,以基准重大变化。这使得我们在变化发生之前没有关于变化的真实影响的真实数据。

  我们必须迅速改变这一点,才能成功地纠正DHT。我们成立了一个工作小组来弥补这一差距,所以Testground诞生了。Testground是一个用于大规模测试、基准测试和模拟分布式和对等系统的平台,允许我们在IPFS 0.5.0上线之前验证所需的修复和压力测试。

  Testground为我们提供了在DHT重写中进行数据驱动开发的工具。它还在IPFS 0.5.0发行版的其他部分帮助了我们:比如构建新的潜在解决方案原型,比较彼此的潜在修复程序,以及对边缘用例和升级过程进行压力测试。可重复性和自省测试对于加速我们的开发速度以可靠地改进IPFS至关重要。

  随着Testground v0.5的发布,我们很高兴能够与大家分享这个工具,以及对他们的p2p网络进行基准测试和评估。从今天开始使用Testground吧 !

  6

  现在的目标是“修复”

  通过Testground,我们能够围绕对等可用性、查询终止和路由表维护对DHT问题进行基准测试和量化。我们从对现有网络的模拟开始——展示我们之前的查询逻辑如何与不断变化的网络参数交互,就像许多节点无法拨号一样。

go-ipfs 0.5.0更新- Steven Allen

  Testground允许我们调整这些参数,以度量哪些更改对网络性能的影响最大。当我们在1月份的一次研究峰会上聚集在一起,比较潜在的缓解措施和正在进行的网络挑战时,我们现在获得了对网络结构和工具的定量理解,以立即原型化和测试我们讨论的结果假设。

  接下来是旋风式的测试计划编写,以度量在真实的网络设置中对DHT逻辑的每个更改。我们测试了用于诊断无法拨号的对等点并将其从路由表中删除的新系统,测量了提前结束查询的成功率,甚至重新对Bitswap的改进进行了基准测试,以发现其他改进。在这些重构过程中,我们能够通过我们的Testground模拟以及一些位置良好的canary节点,不断地验证这些更改的性能,以便在整个公共网络上运行基准测试。

  用这些工具,我们冲从峰会释放让这一切发生。从识别社区的问题,到确定潜在的解决方案,构建测试工具,从过去的研究中学习,以及执行所需的技术修复——这次马拉松式的发布无疑让我们经受了考验——产生了一个新的和改进的特性的史诗般的列表。

  接下来,在DHT深度研究的第2部分中,我们将带您了解DHT的新特性,并进一步介绍我们所看到的改进。同时,如果您还没有升级,请升级。随着越来越多的节点更新,我们将获得更高性能的DHT带来的好处!

  发布了go-ipfs有史以来最大的更新:IPFS 0.5.0

相关信息:
您可能喜欢
Copyright © 2017 iIPFS.com IPFS/FileCoin资讯站