searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

P2P镜像加速框架介绍

2023-08-15 02:55:20
155
0

1. 技术定义

P2P 即 peer-to-peer,节点将自己的一部分计算、存储或网络资源直接提供给其他节点使用,节点既是资源的供应者又是资源的消费者,这一点与传统的 client-server 模型有着显著区别。P2P 技术被广泛应用于文件分发领域。

2. 发展历史

P2P 镜像加速开源框架的发展历史:

  • Dragonfly: 阿里巴巴开源的基于 P2P 的智能镜像和文件分发工具。
    • 2017 年 11 月: Dragonfly 1.x 正式开源。
    • 2018 年 10 月: 进入 CNCF Sandbox。
    • 2020 年 4 月: 进入 CNCF Incubating。
    • 2021 年 4 月: Dragonfly 2 正式开源,基于 Dragonfly 1.x 的已有问题做了大量优化。
  • Kraken: Uber 开源的基于 P2P 的容器镜像服务。
    • 2018 年正式开源。

3. 框架分析

3.1 Dragonfly

Manager: 维护各 P2P 集群的关联关系、动态配置管理、用户态以及权限管理等功能。也包含了前端控制台,方便用户进行可视化操作集群。
Scheduler: 为下载节点选择最优下载父节点。异常情况控制 Dfdaemon 回源。
Seed Peer: Dfdaemon 开启 Seed Peer 模式可以作为 P2P 集群中回源下载节点, 也就是整个集群中下载的根节点。
Peer: 通过 Dfdaemon 部署,基于 C/S 架构提供 dfget 命令行下载工具,以及 dfget daemon 运行守护进程,提供任务下载能力。

性能测试

测试结果表明 Nydus Mirror 模式和 Dragonfly P2P 集成, 使用 Nydus 下载镜像对比 OCIv1 的模式, 能够有效减少镜像下载时间。Nydus 冷启动和 Nydus & Dragonfly 冷启动数据基本接近。 其他命中 Dragonfly Cache 的结果均好于只使用 Nydus 的情况。最重要的是如果很大规模集群使用 Nydus 拉取镜像, 会将每个镜像层的下载分解按需产生很多 Range 请求, 增加镜像仓库源站 QPS。 而 Dragonfly 可以基于 P2P 技术有效减少回源镜像仓库的请求数量和下载流量。 最优的情况,Dragonfly 可以保证大规模集群中每个下载任务只回源一次。

3.2 Kraken

Agent

  • 部署在每台主机上
  • 实现 Docker 镜像仓库接口
  • 向 Tracker 注册可用的内容
  • 连接 peers 下载内容

Origin

  • 专用的 seeders
  • 将 blobs 作为文件存储在存储服务中(例如 S3、GCS、ECR)
  • 形成一个哈希环来分配负载

Tracker

  • 跟踪 peers 有哪些内容
  • 为给定的 blob 提供需要连接的 peers 列表

Proxy

  • 实现 Docker 镜像仓库接口
  • 将 image layer 上传到 Origin
  • 将 tags 上传到 build-index

build-index

  • 将 tags 映射到 blob 摘要
  • 支持集群之间的镜像复制
  • 将 tags 作为文件存储在存储服务中(例如 S3、GCS、ECR)

性能测试

通过2600个节点并发拉取3G大小且拥有2个镜像层的镜像文件,每个agent有300MB/s的带宽限制。P50拉取时间为10s,P99拉取时间为18s。

4. Dragonfly 和 Kraken 对比

基于项目整体成熟度,社区活跃度、用户数量、架构复杂度,是否针对 Nydus 优化,未来发展趋势等因素综合考虑,Dragonfly 是 P2P 项目中最优的选型。

 

0条评论
0 / 1000
吴****钢
2文章数
0粉丝数
吴****钢
2 文章 | 0 粉丝
吴****钢
2文章数
0粉丝数
吴****钢
2 文章 | 0 粉丝
原创

P2P镜像加速框架介绍

2023-08-15 02:55:20
155
0

1. 技术定义

P2P 即 peer-to-peer,节点将自己的一部分计算、存储或网络资源直接提供给其他节点使用,节点既是资源的供应者又是资源的消费者,这一点与传统的 client-server 模型有着显著区别。P2P 技术被广泛应用于文件分发领域。

2. 发展历史

P2P 镜像加速开源框架的发展历史:

  • Dragonfly: 阿里巴巴开源的基于 P2P 的智能镜像和文件分发工具。
    • 2017 年 11 月: Dragonfly 1.x 正式开源。
    • 2018 年 10 月: 进入 CNCF Sandbox。
    • 2020 年 4 月: 进入 CNCF Incubating。
    • 2021 年 4 月: Dragonfly 2 正式开源,基于 Dragonfly 1.x 的已有问题做了大量优化。
  • Kraken: Uber 开源的基于 P2P 的容器镜像服务。
    • 2018 年正式开源。

3. 框架分析

3.1 Dragonfly

Manager: 维护各 P2P 集群的关联关系、动态配置管理、用户态以及权限管理等功能。也包含了前端控制台,方便用户进行可视化操作集群。
Scheduler: 为下载节点选择最优下载父节点。异常情况控制 Dfdaemon 回源。
Seed Peer: Dfdaemon 开启 Seed Peer 模式可以作为 P2P 集群中回源下载节点, 也就是整个集群中下载的根节点。
Peer: 通过 Dfdaemon 部署,基于 C/S 架构提供 dfget 命令行下载工具,以及 dfget daemon 运行守护进程,提供任务下载能力。

性能测试

测试结果表明 Nydus Mirror 模式和 Dragonfly P2P 集成, 使用 Nydus 下载镜像对比 OCIv1 的模式, 能够有效减少镜像下载时间。Nydus 冷启动和 Nydus & Dragonfly 冷启动数据基本接近。 其他命中 Dragonfly Cache 的结果均好于只使用 Nydus 的情况。最重要的是如果很大规模集群使用 Nydus 拉取镜像, 会将每个镜像层的下载分解按需产生很多 Range 请求, 增加镜像仓库源站 QPS。 而 Dragonfly 可以基于 P2P 技术有效减少回源镜像仓库的请求数量和下载流量。 最优的情况,Dragonfly 可以保证大规模集群中每个下载任务只回源一次。

3.2 Kraken

Agent

  • 部署在每台主机上
  • 实现 Docker 镜像仓库接口
  • 向 Tracker 注册可用的内容
  • 连接 peers 下载内容

Origin

  • 专用的 seeders
  • 将 blobs 作为文件存储在存储服务中(例如 S3、GCS、ECR)
  • 形成一个哈希环来分配负载

Tracker

  • 跟踪 peers 有哪些内容
  • 为给定的 blob 提供需要连接的 peers 列表

Proxy

  • 实现 Docker 镜像仓库接口
  • 将 image layer 上传到 Origin
  • 将 tags 上传到 build-index

build-index

  • 将 tags 映射到 blob 摘要
  • 支持集群之间的镜像复制
  • 将 tags 作为文件存储在存储服务中(例如 S3、GCS、ECR)

性能测试

通过2600个节点并发拉取3G大小且拥有2个镜像层的镜像文件,每个agent有300MB/s的带宽限制。P50拉取时间为10s,P99拉取时间为18s。

4. Dragonfly 和 Kraken 对比

基于项目整体成熟度,社区活跃度、用户数量、架构复杂度,是否针对 Nydus 优化,未来发展趋势等因素综合考虑,Dragonfly 是 P2P 项目中最优的选型。

 

文章来自个人专栏
容器镜像服务
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0