IPFS和全球最大的流媒体平台Netflix开始合作啦!

[复制链接]
7388 |0
发表于 2020-2-19 18:04:01 | 显示全部楼层 |阅读模式
原文作者:IPFS Community

本文由IPFS中国社区编译整理原文链接:https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/
Web 2.0服务越来越依赖大型计算基础架构来支持快速迭代和部署周期。为了更快地构建,测试和发布软件,这些服务通常在寻找方法来升级其系统,以利用分布式对等网络中的新知识和新工具。

在IPFS Camp 2019之后,Netflix(奈飞,世界最大的流媒体平台)和IPFS开始合作将对等服务整合到Netflix开发人员工具中的方法。在一起,我们找到了一种利用IPFS加速云构建,设计和测试解决方案的方法,以通过高效的p2p容器映像分发提供支持的更快的持续集成(CI)管道。
1582099491(1).png
作为此次合作的一部分,我们在过去两个季度中对Bitswap进行了重大改进,Bitswap是IPFS在两个或更多对等端之间传输文件片段的机制。进行此项改进的一个关键因素是p2p实验室(一种由Netflix创建的性能基准测试工具,用于运行可重复的测试),使我们能够确定和衡量改进。
我们特别关注的是Netflix想要解决的容器分发挑战:如何在大规模,多区域环境中有效地提取容器图像。图像层通常位于不同的区域。利用IPFS作为点对点CDN,可以使Netflix基础架构内的节点进行协作并将共同的种子播种到相邻节点,从而有助于更快地分发容器。

65925910-890ec180-e3a7-11e9-8eb9-b632a4d3c146.png
为了进一步加快速度,我们在Bitswap协议中添加了一些有用的新功能,该功能将围绕容器分发的基准用例的传输速度降低了一半。在以前版本的Bitswap中,平均需要花费9.08秒将300 MiB图像拉到32个窃取点上。经过优化的分支将这一时间缩短至3.16秒-比DockerHub(3.93秒)快20%!当水peer同伴的数量超过播种者时,我们观察到下载的片段被重新播种,从而减少了种子同种子间的竞争。

11.png

Bitswap如何运作
IPFS将文件分成称为块的块,由内容标识符(CID)标识。当运行Bitswap协议的节点要获取文件时,它们会向其他对等方发送“请求列表”。“希望列表”是对等方想要接收的阻止的CID列表。每个节点都记住其对等体想要的块,并且每次节点接收到一个块时,它都会检查是否有任何对等体想要该块并将其发送给他们。
为了找出哪些对等点具有构成文件的块,Bitswap节点首先向其连接的所有对等点发送对根块CID的需求。如果对等方没有该块,则该节点查询分布式哈希表(DHT)来询问谁拥有根块。任何使用根块响应的对等方都将添加到会话中。从现在开始,Bitswap只向会话中的对等方发送请求,以免向网络发送请求。
节点将每个CID的需求并行发送给会话中的多个对等方,因为并非所有对等方都会拥有所有块。如果节点开始接收大量重复块,则它将每个CID的需求发送给较少的对等方。如果该节点等待块超时,它将向每个对等方发送每个CID的请求。这样,节点尝试在没有太多重复块的情况下保持较高的下载速度。
Bitswap改进了P2P图像分发
为了提高Bitswap的性能和效率,IPFS团队对Bitswap提取块的方式进行了一些更改。
最初,一个节点想知道其哪个对等方具有根块,但实际上并不想接收该块本身(因为它向许多对等方发送了这个“发现”需求)。因此,一个新的变化是,当Bitswap发送请求时,它可以请求HAVE消息作为响应(而不是取回整个块)。

22.png


一旦节点将对等体添加到会话中,它也可以使用这些HAVE消息来找出哪个会话对等体具有相对便宜的其余块需求,因为它不必担心重复的块。在此阶段,节点还希望对等方说出它是否没有该块。因此,我们添加了一个ONT_HAVE响应。
通过这些更改,节点可以廉价地算出如何在其对等节点之间分配块,并且可以更精确地定向对块的请求,从而提高总体下载速度并减少重复块的数量。
该节点还可以快速识别会话中的所有对等方何时没有其需要的阻止,并向DHT找出谁拥有该阻止。
有关Bitswap之前如何工作(“主”)以及我们所做的更改(“ poc”)的更多详细信息,请查看这些幻灯片,此IPFS每周电话会议的演示文稿以及最近的性能比较。

33.png

44.png

55.png
Netflix上的容器分发

Netflix开发人员会定期在Netflix容器管理平台 Titus上部署数百万个容器。由于这些容器中有许多可以处理为Netflix提供支持的关键工作负载,因此通常需要将它们部署在世界各地的许多地区,以适应该地理位置的流量。当开发人员将发布映像推送到生产环境时,该映像需要复制到其他区域的Docker注册表中,否则部署将遭受跨区域数据成本和缓慢的传输速度的困扰。
docker注册表旨在将“ alpine”之类的图像引用以及通过内容寻址能力包含在图像内部的数据分离开来。这与IPFS的数据模型并行,后者的数据始终由其CID表示。实际上,这正是IPFS可以用作容器映像层的CDN的方式,因为可以修改容器运行时以检索由其CID标识的层。要了解有关IPFS Netflix用例的更多信息,请查看IPFS Camp对Edgar的采访!
p2p 实验室77.pngNetflix基础架构部署在全球多个可用性区域和地区的Amazon Web Services(AWS)上。为了模拟这种环境,创建了p2p实验室来测量多区域集群中IPFS网络上数据传输的吞吐量。使用p2plab,我们可以可靠地确定IPFS的更改是否会提高性能。操作员能够使用群集定义来配置活动群集,并使用方案定义对数据传输方案进行基准测试。p2p实验室群集中的节点还可以热交换被测IPFS二进制文件,从而使Protocol Labs和Netflix工程师能够快速测试IPFS组件(如bitwap)的分支。
基准测试完成后,我们可以从libp2p和bitswap中提取指标,以了解应用程序级瓶颈,使用火焰图了解CPU时间,并在jaeger仪表板中进行分布式跟踪,以跟踪整个集群中的请求流。
还提供了p2p实验室的内存驱动程序。转到存储库,并立即在本地系统上试用!
1582099418(1).png
下一步
渴望获得新的加速性能吗?新的和改进的Bitswap已合并并计划用于下一个go-ipfs版本-为所有IPFS用户带来了上述性能优势。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块
快速回复 返回顶部 返回列表