Piccolo P2P 镜像分发

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

Harbor 在大规模容器启动时面临镜像下载瓶颈,用户构建的镜像质量参差不齐,导致下载压力增大。为此,提出结合中心化服务发现与去中心化 P2P 下载的方案,开发了 Piccolo 项目。Piccolo 通过本地 daemonset 提升下载效率,减少对 Harbor 的依赖,显著改善下载带宽和性能。

🎯

关键要点

  • Harbor 在大规模容器启动时面临镜像下载瓶颈,网络带宽需求极高。
  • 用户构建的镜像质量参差不齐,导致下载压力增大。
  • 需要解决大量 worker 节点迅速扩容上万容器的问题。
  • Spegel 的下载方案存在服务发现性能低的问题。
  • 提出结合中心化服务发现与去中心化 P2P 下载的方案,开发 Piccolo 项目。
  • Piccolo 通过本地 daemonset 提升下载效率,减少对 Harbor 的依赖。
  • Piccolo Server 作为服务发现的源,提供 image 列表上报、查询和全量同步接口。
  • 部署 Piccolo 后,97% 的下载请求可以在 Pi 完成,显著降低 Harbor 流量。
  • Piccolo 为集群提供约 8Tib 的下载带宽,几乎不消耗额外资源。
  • Piccolo server 性能高,一台 8C8G 的实例可支撑 5 万个 Pi。
  • 服务发现核心是用 MySQL 表存储 blob 和 IP 的对应关系,支持不同 group 的 Pi 互相发现。
  • Piccolo server 返回资源时根据请求者 IP 相似度排序,优化下载效率。
  • 所有 API 接口都有重试和指数时间退让,增强系统的稳定性和可用性。
🏷️

标签

➡️

继续阅读