LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > IPFS和Netflix合作-IPFSBitswap的新改进

IPFS和Netflix合作-IPFSBitswap的新改进

2020-06-11 先河系统 来源:区块链网络

先河公司一直紧跟IPFS项目, 今天就给大家分享IPFS项目的最新进展~

本文由先河公司SK翻译

原文见:https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/

Youtube:https://www.youtube.com/watchv=wNfk05D887M&feature=youtu.be

Web2.0服务越来越依赖大型计算基础架构来支持快速迭代和部署周期。为了更快地构建、测试和发布软件,这些服务经常在寻找升级其系统的方法,以利用分布式对等网络的新知识和工具。

在IPFSCamp2019之后,Netflix和IPFS开始在将对等服务合并到Netflix的开发工具的方法上进行合作。我们一起找到了一种利用IPFS来加速云构建、设计和测试解决方案的方法,以实现由高效的p2p容器镜像分发提供支持的更快的持续集成(CI)管道。

作为这次合作的一部分,我们在过去两个季度里对Bitswap(IPFS用于在两个或多个对等端之间传输文件片段的机制)做了很大的改进。促成这一改进的一个关键因素是p2plab,它是Netflix为运行可重复测试而创建的一个性能基准测试工具,允许我们确定和衡量改进的目标。我们的重点是Netflix想要解决的一个容器分发挑战:如何在大规模、多区域的环境中高效地提取容器镜像。镜像层通常位于不同的区域。利用IPFS作为点对点CDN,Netflix基础设施内的节点可以进行协作,并将公共部分播种到相邻的节点,有助于加快容器分发速度。

为了进一步加快速度,我们在Bitswap协议中添加了一些有用的新功能,该功能将用于围绕容器分发的基准用例的传输速度降低了一半。在之前的Bitswap版本中,将一个300 MiB的镜像拉到32个吸取点平均需要9.08秒。优化后的分支将此时间缩短到3.16秒,比DockerHub(3.93秒)快20%!当吸取点的数量超过播种者时,我们观察到由吸取点下载的碎片被重新播种,减少了对播种者的竞争。

Bitswap如何运作

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

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

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

Bitswap改进了P2P镜像分发

为了提高Bitswap的性能和效率,IPFS团队对Bitswap提取区块的方式进行了一些更改。

最初,一个节点想知道其哪个对等方具有根块,但实际上并不想接收该块本身(因为它向许多对等方发送了这个“发现”需求)。因此,一个新的变化是,当Bitswap发送请求时,它可以请求HAVE消息作为响应(而不是取回整个块)。

一旦节点将对等体添加到会话中,它也可以使用这些HAVE消息来找出哪个会话对等体具有相对便宜的其余块需求,因为它不必担心重复的块。在此阶段,节点还希望对等方说出它是否没有该块。因此,我们添加了一个DONT_HAVE响应。

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

节点还可以快速识别会话中的所有对等方何时没有所需的块,并前往DHT查找谁拥有该块。

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

Netflix上的容器分发

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

docker注册表的设计目的是分离像“alpine”这样的镜像引用所呈现的内容以及通过内容可寻址性在镜像中包含的数据的概念。这与IPFS的数据模型是并行的,其中的数据总是由其CID表示的。事实上,这正是IPFS作为CDN用于容器镜像层的方式,因为可以修改容器运行时以检索由其cid标识的层。要了解更多关于IPFS的Netflix用例,请查看IPFS Camp对Edgar的采访!

p2plab

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

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

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

https://asciinema.org/a/264008

—-

编译者/作者:先河系统

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...