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 接口都有重试和指数时间退让,增强系统的稳定性和可用性。
➡️