至联云讲解《IPFS官方启用大规模网络测试的全新工具Testground》

低调要沉默 10天前   阅读数 10 0

4月底,官方发布的迄今为止go-ipfs最大更新——IPFS 0.5.0,为IPFS的性能和可靠性带来了重大改进(尤其在内容发现和路由方面)。这些改进很大程度上是通过对分布式哈希表(DHT)的改造而实现,该哈希表为IPFS公共网络中的大多数对等和内容发现提供了支持。

本文带您回顾一下官方团队重新编写DHT的历程——从确定潜在问题,到如何设计解决方案,再到确保它在实践中发挥作用。迎来重大的性能提升的同时,增加了新的开发流程和Testground,这是用于大规模网络测试的全新工具。

复习:什么是DHT?

DHT(分布式哈希表)的作用类似于IPFS目录和导航系统,帮助网络跟踪和查找数据(IPFS节点跟踪谁拥有哪些数据)。

常规哈希表是一个密钥-值存储,其中的键被哈希运算并存储在某个位置。对于IPFS,密钥是数据块的内容标识符(CID),值是具有每个块的对等点的集合。

DHT在整个网络中多个节点或对等点的小表中分发和存储这些密钥对和值对。对等节点则存储有关具体内容物理位置的信息。DHT实现Kademlia帮助跟踪哪些节点正在向网络中的其他节点提供哪些数据。

从理论上讲,DHT应该使在节点之间查找,提供和获取数据成为精心安排且非常高效的事情。但是,在现实情况下以及快速扩展的网络中,可能会出错。

回溯过往情形

去年,IPFS公共网络实现了巨大增长,迅速扩展了30倍,目前已有数十万个节点加入该网络!大型软件部署和新的去中心化应用程序随即出现,开发者期待一个具有可靠性和性能相匹配的开发完善型网络。

许多人将IPFS用作分散的CDN(内容交付网络),以在网络上共享和查找内容。但是,由于无法将对等方路由到所需内容的新激增节点,网络不能满足其中一些用户的需求。

缩小范围

经过一番调查,我们的DHT实施,加上近期不可删除节点的增长,是导致内容路由缓慢,不可靠的主要原因。我们在IPFS Camp活动上对此进行了更深入的调查,并发现了一些问题区域:

● 对等节点可用性:当新的节点加入网络后,我们将其同等对待,但它们实际上无法到达大多数对等节点,因为它们位于防火墙或NAT之后。DHT查询时间浪费在尝试拨打从未收到请求的对等方上。

●查询终止:即使在DHT查询达到其目标后,也没有停止-它继续查询其他对等点以确保它已达到目标。虽然对网络中的许多新的不可删除节点性能稳定,但此过程非常耗时。

●路由表维护:路由表被许多无法拨号的对等节点所阻塞,导致搜索在它们查询的对等点数量上是线性的,而不是预期的日志规模效率。

集中精力

通过以上分析以及核心用户和社区的综合反馈,很明显,我们需要磨练内容路由性能,将其作为IPFS项目的核心重点。

即要对优先级进行较大调整:将我们的工作组集中在DHT和路由逻辑的目标改进集上,以确保我们解决了这些基本的性能和可靠性问题。反过来,我们调整了产品路线图并成立了新的核心工作组,其中一个小组严格关注内容路由,另一个小组致力于新的测试基础架构:Testground。

多次严格测试

从早期的补丁中得知,规模网络需要能够在接近实际的环境中测试更改,以便能够快速可靠地进行改进。我们拥有进行单元测试和小型仿真的能力,可以证明基本的调整,但是没有办法复制成千上万个节点或典型的网络配置来对主要变更进行基准测试。这使我们在变更生效之前,没有关于变更真正影响的真实数据。

为了成功改进DHT,我们成立了一个工作组,于是Testground诞生了。

Testground是一个用于大规模测试、基准测试和模拟分布式和对等系统的平台,使我们能够验证所需的修复程序,并在IPFS 0.5.0启用之前对广泛的DHT更改进行压力测试。

Testground 在DHT重写中为我们提供了进行数据驱动的开发工具,还在IPFS 0.5.0版本的其他部分为我们提供了帮助:例如对新的潜在解决方案进行原型制作,相互比较潜在的修复程序以及对边缘情况和升级过程进行压力测试。

Testground的可重复性和自省性,对于加快开发速度以可靠地改善IPFS至关重要。

通过以下链接可立即开始使用Testground!

https://docs.testground.ai/

现在为“修复”

使用Testground,可以对DHT问题进行基准测试和量化,这些问题涉及对等方可用性、查询终止和路由表维护。

我们从对现有网络的模拟开始,展示了我们先前的查询逻辑如何与不断发展的网络参数进行交互,就像许多节点不可撤销一样。

Testground允许我们调整这些参数,以衡量哪些更改将对网络性能产生最大影响。当我们在1月份召开研究峰会以比较潜在缓解措施与持续存在的网络挑战时,我们现在获得了对网络结构和工具的定量了解,可以立即对我们的讨论进行原型化并检验所得出的假设。

随后是测试计划编写的旋风,以测量实际网络环境中DHT逻辑的每次更改。我们测试了新系统,以诊断无法删除的对等方并将其从路由表中删除;测量了成功率,以便更早地结束查询;甚至重新确定了对Bitswap的改进以寻找其他改进。

在整个重构过程中,我们都能通过Testground模拟,以及一些位置良好的canary节点来运行针对整个公共网络的基准测试,不断验证这些更改的性能。

有了这些工具,我们快速从峰会冲刺到发布,以实现一切。从发现社区中的问题,到确定潜在的解决方案,构建测试工具,从过去的研究中学习以及执行所需的技术修复,这次马拉松式的发布无疑让我们加快了步伐——产生了一个新的和改进功能的史诗般列表。

在接下来的深入探究中,我们将详细介绍DHT的新功能。随着越来越多的节点更新,我们都将从性能更高的DHT获得益处!


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: