IPFS官方升级DHT方案,提升网络整体性能

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

官方希望重新编写 DHT 的整个过程,从确定根本问题到如何设计解决方案,以确保它在实践中起作用。官方的工作带来了重大的性能提升,并带来了新的开发流程和 Testground,这是用于大规模网络测试的全新工具。

什么是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,官方可以对 DHT 问题进行基准测试和量化,这些问题涉及对等方可用性,查询终止和路由表维护。官方从对现有网络的仿真开始,展示了官方先前的查询逻辑如何与不断发展的网络参数进行交互,就像许多节点不可撤销一样。

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

随后是测试计划编写,以测量实际网络环境中 DHT 逻辑的每次更改。官方测试了新系统,以诊断无法删除的对等方并将其从路由表中删除,测量了成功率,以便更早地结束查询,甚至重新确定了对 Bitswap 的改进以寻找其他改进。在所有这些重构过程中,官方都能通过 Testground 仿真以及一些放置良好的节点不断验证这些更改的性能,以针对整个公共网络运行基准测试。

从发现社区中的问题,到确定潜在的解决方案,构建测试工具,从过去的研究中学习以及执行所需的技术修复,这次发布无疑使官方步入了新的步伐。

p2p网络测试工具_自媒体 IPFS官方升级DHT方案,提升网络整体性能相关推荐

  1. p2p网络测试工具_(官方更新)IPFS的网络层——libp2p在2020的发展

    如果您在分散的点对点空间中执行任何操作,您可能听说过 libp2p - 用于对等应用程序的模块化网络堆栈.libp2p 由许多模块化库组成,p2p 网络开发人员可以从中选择和重用所需的协议,同时便于应 ...

  2. 提高mysql吞吐量_【调优】从吞吐量角度提升数据库整体性能

    [调优]从吞吐量角度提升数据库整体性能 不严谨的说:对的使用就是I/O操作! 因此,如果有效的了数据库系统对磁盘的I/O,那么可以说整体就会得到有效地提升. 本文尝试给出一些最常被使用到的提升系统的策 ...

  3. p2p网络测试工具_DHT之路丨大规模网络测试的全新工具!

    原创:协议实验室 编译:华科闪云原文链接:https://blog.ipfs.io/2020-05-19-road-to-dht/ 4月底,我们发布了迄今为止最大的go-ipfs更新:IPFS 0.5 ...

  4. 账号管理工具_新媒体账号管理工具,自媒体运营神器,管理多个账号很简单

    新媒体账号管理工具,自媒体运营神器,管理多个账号很简单,账号管理一直是自媒体人的一个痛点,尤其是现在大家手上都有很多个账号的情况下,无论是进行内容的分发还是账号管理,如果纯靠手动进行发布,那么将会浪费 ...

  5. cad蜂鸟工具_蜂鸟视图地图数据中台,全面提升商业地产的可视化信息管控

    作为曾经的地产新风口,商业地产一度成为广大开发商争相追捧的出路.随着互联网和线上电商的不断崛起,商业地产群雄并起的黄金时代早已经结束,"转型"成为地产行业最大的话题,如何改善商场的 ...

  6. 网站互点工具_如何利用关键词互点互刷提升网站关键词排名?

    最近老是点击一个网站进去看,几天后发现关键词排名提高了,就在想是不是通过点击网站可以提高关键词排名了?网上不是有好多朋友都在寻求关键词互点,而且要求点击某篇文章,并且要在页面停留多少分钟,说这样才以提 ...

  7. 关键词分词工具_打破繁琐,采用智能分词——厚昌网络分词工具2.0版即将正式上线...

    ​​科技改变生活,随着互联网技术和智能手机的发展,互联网+,成为一种新型突破口,企业与互联网的有机结合,也让企业焕发出新的活力.网络营销,则是互联网技术融入市场营销的一种新营销方式,也是传统营销的继承 ...

  8. 预警数据一键升级工具_重磅 | 教务管理全新升级,“章鱼校长”助力机构实现轻松管理...

    暑假开班,教务繁忙 今天小云为您送上一个重磅消息 教务管理系统「章鱼校长」全面上线啦!!! 可能会有校长问,为什么叫"章鱼校长"? 当培训机构校长太难了 要会招生.报名.排班.考勤 ...

  9. 镜头视场角计算工具_再谈远心镜头的设计及其独特的性能

    1.远心镜头的设计与对比镜头可以分为非远心和远心:远心镜头也可以分为物方远心.像方远心和双远心.相关概念的简单说明:孔径光阑在物空间的像称为入射光瞳.同样,孔径光阑被其后面的光学零件成在像空间的像,称 ...

最新文章

  1. JAVA后端常用框架SSM,redis,dubbo等
  2. 网络编程套接字Socket
  3. a标签鼠标放上去变色_一切为了集齐一套装备:杜伽LEO600游戏鼠标和P300鼠标垫简评...
  4. BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
  5. 计算机网络与应用第三次笔记
  6. 移植MyEclipsenbsp;Web项目到Ecli…
  7. (Arduino)蓝牙和 APPinventor实现一键SOS求救(一)
  8. vue全家桶_vue脚手架
  9. (dfppy)2Ir(NHC)的蓝光/蓝绿光铱配合物|苯基喹啉酯的中性铱配合物-齐岳生物
  10. OS=Windows and the assembly descriptor contains a *nix-specific root-relative-reference (starting wi
  11. Groovy脚本极限优化
  12. SwrContext重采样结构体--swr_alloc()、swr_init()、swr_free()
  13. LeetCode代码刷题(17~24)
  14. 一些关于网页设计的优秀网站
  15. CAN IP SjA1000ip核 verilog写的 项目以在稳定的用
  16. 英语口语247之每日十句口语
  17. 传奇更新服务器信息,传奇服务端自动更新boss刷新信息的脚本
  18. Css之scoped (有作用域的 CSS)
  19. Ubuntu下Anaconda创建环境及环境配置
  20. 说说我理解的SVN操作

热门文章

  1. 一个电子工程师的经验之谈!
  2. scrapy中response的方法
  3. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...
  4. 周期同步位置模式(CSP),轮廓位置模式(PPM),位置模式(PM)
  5. SQLSERVER2014中的新功能
  6. secureCRT自动断开的解决方法
  7. 如何实现Conditional Include
  8. 快速原型工具 原型可视化
  9. GridView 72般绝技(转载)
  10. NumPy 广播的可视化