Kraken 点对点(P2P)Docker 容器仓库开源项目

我要开发同款
匿名用户2019年05月12日
46阅读
所属分类Google Go、云计算、PaaS系统/容器
授权协议Apache

作品详情

Kraken是Uber开源的点对点(P2P)Docker容器仓库。Kraken旨在为大规模系统提供Docker镜像服务,解决跨区域支持、性能瓶颈和混合云环境所面临的挑战。

Kraken大致基于BitTorrent协议,与DockerregistryAPI兼容,并提供可配置的存储后端,诸如S3和HDFS等。Kraken最初于2018年初在优步内部开始部署,随后向开源社区公开。

在容器中运行的Docker镜像是由镜像层组成的,这些层包含了相对之前的层所发生的变更,并与镜像文件和可执行文件的二进制大对象(blob)相关联。Docker容器仓库是服务端应用,用于存储和分发镜像层和镜像blob。Docker在DockerHub 提供了免费的容器仓库,另外还提供了商业版本的容器仓库。除Docker外,还诞生了很多其它容器仓库以满足各种特殊需求,例如私有托管或将IPFS实现为存储后端。

优步在一个混合云环境中运行自己的大规模分布式集群。尽管优步努力通过镜像缓存和数据库分片来提高性能,但Docker仓库还是无法满足其环境下不断增长的需求,最终优步团队选择构建了自己的解决方案。

Kraken在优步部署以来,每天能支持超过100万个blob。在优步的生产高峰时期,Kraken可以在30秒内分发多达2万个blob,每个blob的大小从100MB到1GB不等。根据Kraken文档介绍,Kraken能够在每个主机上以高于下载速度上限达50%的速度分发Docker镜像。此外,集群大小和镜像大小都对下载速度没有显著影响。Kraken未来的改进将集中在提升大镜像性能、安全性改进和支持Docker标记转换等方面。

Kraken的优秀架构是优步得以实现可扩展且高度可用的容器仓库的关键所在。该设计的基础是一个定制的P2P网络,其中包含数量有限的主机,这些主机将内容分发(seed)到代理网络上。网络中的代理形成具有高连通性和小直径的伪随机规则图,这是提升系统下载速度的重要环节。代理接受来自源的内容,源则在后端存储镜像blob,并与网络中的端点连接,返回docker所请求的镜像。

优步Kraken架构(图片来自KrakenREADME)

Kraken最初是使用BitTorrent构建的,但Kraken与BT网络面临的挑战差异导致Kraken团队开始构建自己的P2P驱动。但该团队也在积极审查Kraken协议,以便使其再次与BitTorrent实现兼容。

介绍内容来自InfoQ

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论