至联云讲解《新DHT架构:提升IPFS性能和可靠性》

什么是DHT?
DHT,又称为分布式哈希表,就像一个为IPFS目录和导航的系统,帮助网络跟踪和查找数据。常规哈希表是一个键值存储,其中的键被散列并存储在一个位置。对于IPFS而言,键是数据块的内容标识符(CID),值是具有每个块的对等体的集合。
至联云讲解《新DHT架构:提升IPFS性能和可靠性》_第1张图片
DHT在整个网络中许多节点或对等点的小表中分发和存储这些键对和值对。同行则存储有关在何处物理定位特定内容的信息。我们的DHT实施Kademlia帮助跟踪哪些节点正在向网络中的其他节点提供哪些数据。
从理论上讲,DHT应该使在节点之间查找,提供和获取数据成为精心策划且非常有效的事情。但是,在现实情况下以及快速扩展的网络中,事情可能会出错。
历程回顾
去年,IPFS公共网络实现了可观的增长,迅速扩展了30倍,现在有数十万个节点加入该网络!大型软件部署和新的分散式应用程序随即出现,并期望具有可匹配的可靠性和性能的生产就绪型网络。
许多人将IPFS用作分散的CDN(内容交付网络),以在网络上共享和查找内容。不幸的是,由于无法将对等方路由到所需内容的新节点激增,网络使其中一些用户瘫痪。
在2019年初,我们开始听到有关内容路由问题的传言,随着越来越多的节点通过Q1和Q2加入网络而加剧了这种情况-其中许多节点位于家庭防火墙或NAT之后。我们不断地引导和修补网络,以补救性能和可靠性问题。但是,在这些补丁投入生产之前,我们无法真正测试它们的功效(或真正诊断出任何退化),因此很难进行迭代并尝试对网络配置进行更大的修复。
我们显然有一个问题,并且我们正在社区中听到它。我们的第一步是进行彻底调查,以确定首先应确定哪些解决方案的优先级,并确定成功进行变更所需的工具。
发现问题
经过一番调查,很明显,我们的DHT实施,以及近期不可删除节点的增长,是导致内容路由缓慢、不可靠的罪魁祸首。当我们在一起在IPFS营地时,我们有机会对此进行了更深入的调查,并发现了一些问题:
对等可用性:当新的对等节点加入网络后,我们将它们同等对待,但是实际上无法到达大多数对等节点,因为它们位于防火墙或NAT之后。DHT查询时间浪费在尝试拨打从未收到请求的对等方上。
查询终止:即使在DHT查询达到其目标之后,它也没有停止-它继续查询其他对等点以确保它已达到目标。虽然对网络中的许多新的不可删除节点具有鲁棒性,但此过程非常耗时。
路由表维护:路由表被许多无法拨号的对等点所阻塞,导致搜索在查询的对等点数量上线性变化,而不是预期的对数规模效率。
集中精力
通过这一分析以及我们核心用户和社区的综合反馈,显然,我们需要磨练内容路由性能,将其作为IPFS项目的核心重点。
这意味着要对优先级进行一些调整:将我们的工作组集中在DHT和路由逻辑的目标改进集上,以确保我们解决了这些基本的性能和可靠性问题。反过来,我们调整了产品路线图并成立了新的核心工作组,其中一个小组严格关注内容路由,另一个小组致力于新的测试基础架构。
测试
我们从早期的补丁中得知,我们的网络需要能够在接近实际的环境中测试更改,以便能够快速可靠地进行改进。我们拥有进行单元测试和小型仿真的能力,可以证明基本的调整,但是没有办法复制成千上万个节点或典型的网络配置来对主要变更进行基准测试。这使我们在变更付诸实践之前没有关于变更真正影响的真实数据。
为了成功纠正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架构:提升IPFS性能和可靠性》)