4月底,我们发布了迄今为止最大的go-ipfs更新: IPFS0.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之后。我们不断地引导和修补网络,以补救性能和可靠性问题。但是,在这些补丁投入生产之前,我们无法真正测试它们的功效(或真正诊断出任何退化),因此很难进行迭代并尝试对网络配置进行更大的修复。
我们显然有一个问题,并且我们正在社区中听到它。我们的第一步是进行彻底调查,以确定首先应确定哪些解决方案的优先级,并确定成功进行变更所需的工具。
点击观看视频:IPFS生态项目负责人对项目的报道
缩 小
经过一番调查,很明显,我们的DHT实施,加上近期不可删除节点的增长,是导致内容路由缓慢,不可靠的罪魁祸首。当我们在一起在IPFS营地时,我们有机会对此进行了更深入的调查,并发现了一些问题区域:
集 中 精 力
通过这一分析以及我们核心用户和社区的综合反馈,很明显,我们需要磨练内容路由性能,将其作为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的好处!
[ID:ipfsunion6]
扫描二维码
关注官方公众号