速度大提升 IPFS与Netflix(网飞)合作对Bitswap进行重大改进

CN
5年前

IPFS Bitswap的新改进,可以更快地分发容器镜像。


Bitswap(比特交换)是IPFS的数据块交换协议。用来处理IPFS用户和应用的请求,从网络中获取数据。并跟其他节点的Bitswap相互通信来交换彼此所需的数据。


Web2.0服务愈加依赖于大规模计算基础设施,以支持快速迭代和发展循环。为了更快地构建,测试并发布软件,这些服务往往寻求升级其系统的方法,利用分布式点对点网络的新知识和工具。


在2019年IPFS训练营后,Netflix与IPFS开始协商将点对点服务整合到Netflix工具当中的合作。我们共同找出了利用IPFS加速云构建,设计和测试解决方案的方法,高效点对点容器图像分布支持的更快的连续集成管道。


Netflix(网飞)是什么?点击下方链接查看


IPFS官方:与全球最大收费视频网站展开合作?IPFS周刊第78期。


?wx_fmt=png


埃德加·李 Netflix 高级软件工程师


本次合作,我们在过去的两个季度中针对Bitswap进行了重大改进,Bitswap是IPFS在两个或多个对等端之间传输文件片段的机制。能够实现这一改进的一个关键因素是p2plab-一种由Netflix创建的性能基准测试工具,用于运行可重复的测试-使我们能够确定和衡量改进。我们特别关注的是Netflix想要解决的容器分发难题:如何在大规模,多区域环境中有效地提取容器镜像。镜像层通常位于不同的区域。利用IPFS作为点对点CDN,可以使Netflix基础架构内的节点进行协作并将共同的种子播种到相邻节点,从而有助于更快地分发容器。


为了进一步加快这一进程,我们在Bitswap协议中添加了一些有用的新功能,该功能将围绕容器分发的基准用例的传输速度降低了一半。在旧版Bitswap中,平均需要花费9.08秒将300 MiB图像拉到32个窃取点上。经过优化的分支将这一时间缩短至3.16秒-比DockerHub(3.93秒)快20%!当窃取点的数量超过播种者时,我们观察到窃取的片段被重新播种,从而减少了种子与窃取者之间的联系。


?wx_fmt=png


读取图片容器的耗时对比


Bitswap运行方式


?wx_fmt=png


IPFS将文件分解为称为区块的块,由内容标识符(CID)标识。当运行Bitswap协议的节点要获取文件时,它们会向其他节点发送“请求列表”。“请求列表”是其他节点想要接收的区块CID列表。每个节点都会记住其他节点想要的块,并且每次节点接收到一个块时,都会检查是否有任何其他节点想要该块并将其发送给他们。


为了找出哪些节点具有构成文件的块,Bitswap节点首先向其连接的所有节点发送对根块CID的需求。如果其他节点没有该块,则该节点查询分布式哈希表(DHT),以询问谁拥有根块。任何使用根块响应的对等方都将添加到会话中。从现在开始,Bitswap仅向会话中的对等方发送请求,以免向网络发送请求。


节点将每个CID的需求并行发送给会话中的多个节点,因为并非所有节点都会拥有全部的区块。如果节点开始接收大量重复块,则它将每个CID的需求发送给少部分节点。如果该节点等待块超时,会向每个节点发送每个CID的请求。这样,节点尝试在没有太多重复块的情况下保持较高的下载速度。


Bitswap改进了P2P镜像分布


?wx_fmt=png


为了改进Bitswap性能和效率,IPFS团队对Bitswap获取区块的方式做出改变。


最初一个节点想要知道哪个其他节点拥有根块,但是不想接受该块(因为会发送“发现”请求给很多节点)。所以新的改变就是当Bitswap发送请求时,,可以请求“有”的消息作为相应(而不是将整个区块取回)。


?wx_fmt=png


一旦节点在此部分添加其他节点,也可以使用“有”消息说明该部分节点有剩余块且价格相对合理,因为不用担心重复块。在此阶段,如果对方没有该块,节点同样想收到通知。所以我们添加了“没有”响应。


通过这些更改,节点可以廉价地算出如何在其他节点之间分配块,并且可以更准确地定向对块的请求,从而提高总体下载速度并减少重复块的数量。


该节点还可以快速识别会话中的所有节点何时没有其需要的块,并通过DHT找到。


有关Bitswap之前如何工作(“master”)以及我们所做的更改(“ poc”)的更多详细信息,请查看这些幻灯片,该IPFS每周电话会议的演示文稿以及近期性能比较。


?wx_fmt=png


?wx_fmt=png?wx_fmt=png


?wx_fmt=png


Netflix容器分布


?wx_fmt=png


Netflx开发人员会定期在Netflix容器管理平台Titus上部署数百万个容器。由于这些容器中有许多可以处理为Netflix提供支持的关键工作负载,因此通常需要将它们部署在世界各地的许多地区,以适应该地理位置的流量。当开发人员将发布镜像推向生产环境时,该镜像需要复制到其他区域的Docker注册表中,否则部署将遭受跨区域数据成本和传输速度缓慢的困扰。


?wx_fmt=jpeg


docker注册表旨在将“ alpine”之类的图像引用所呈现的内容与哪些内容通过内容可寻址性包含在图像中的概念分离开来。这与IPFS的数据模型并行,后者的数据始终由其CID表示。实际上,这正是IPFS可以用作容器映像层的CDN的方式,因为可以修改容器运行时以检索由其CID标识的层。要了解有关IPFS Netflix用例的更多信息,请查看IPFS Camp对Edgar的采访!


p2plab一种由Netflix创建的性能基准测试工具


?wx_fmt=png


?wx_fmt=png


Netflix基础架构部署在全球多个可用性区域和地区的亚马逊云服务(AWS)上。为了模拟这种环境,创建了p2plab来测量多区域集群中IPFS网络上数据传输的吞吐量。使用p2plab,我们可以可靠地确定IPFS的更改是否会提高性能。操作员能够使用群集定义来配置活动群集,并使用方案定义对数据传输方案进行基准测试。p2plab群集中的节点还可以热交换被测IPFS二进制文件,从而使协议实验室的工程师和Netflix工程师能够快速测试IPFS组件(如bitwap)的分支。


基准测试完成后,我们可以从libp2p和bitswap中提取指标,以了解应用程序级瓶颈,使用火焰图了解CPU时间,并在jaeger仪表板中进行分布式跟踪,以跟踪整个集群中的请求流。


还提供了p2plab的内存驱动程序。跳转到存储库,并立即在本地系统上试用!


?wx_fmt=png


接下来


?wx_fmt=png


已经迫不及待想获取新的加速性能了吗?改进版Bitswap已经合并且将在下个go-ipfs中发布-将会为所有用户以上所述的所有性能优势。



免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

欧易返20%,前100送AiCoin保温杯
链接:https://www.okx.com/zh-hans/join/aicoin20
广告
分享至:
APP下载

X

Telegram

Facebook

Reddit

复制链接