优步开源点对点Docker注册表,镜像分发很强悍,每天100万个!

Docker注册表的主要目的是存储和分发Docker镜像。这似乎是一项相对简单的任务,但对于像Uber这样的大规模计算集群,它很容易变成一个扩展瓶颈。在具有多个区域和混合云系统的计算环境中,镜像分发变得更具挑战性。

优步开源点对点Docker注册表,镜像分发很强悍,每天100万个!

为了解决传统的Docker注册表堆栈的性能问题,Uber的Cluster Management团队开发了Kraken,一个开源的点对点(P2P)Docker注册表。Docker容器是Uber基础架构的基础构建块,Uber甚至构建了自己的开源Docker镜像构建器Makisu。随着Uber的计算群集的数量和大小的增长,带有分片和缓存的简单Docker注册表设置无法实现跟上有效分发Docker镜像所需的吞吐量。

优步开源点对点Docker注册表,镜像分发很强悍,每天100万个!

Kraken诞生了,它专注于可扩展性和可用性,专为混合云环境中的Docker镜像管理,复制和分发而设计。借助可插拔的后端支持,Kraken还可以作为分布层插入现有的Docker注册表设置中。

架构

在开发Kraken时,Uber探索了多种设计选择,最终选择了P2P架构。Kraken使用针对数据中心网络环境定制的P2P协议,并改善企业级的微服务生命周期管理。

Kraken支持可插拔存储选项,而不是管理数据blob,Kraken可以插入可靠的blob存储选项,如S3,HDFS或其他注册表。存储界面简单,易于添加新选项。

独特的数据分发解决方案基于现有的成熟技术。此外,Kraken具有自我修复功能,易于维护,并支持集群之间的无损和基于规则的异步复制。

大规模的性能改进

Kraken于2018年初首次部署在Uber,从那时起,Uber在旧版Docker注册表堆栈中遇到的性能问题已得到解决。

Uber生产中最繁忙的Kraken集群每天分发超过100万个blob,每天发行100000个,总计1GB或更多。此外,在最高时,Kraken可在30秒内分配20000个100MB至1GB的blob。

Kraken的高可扩展性使其能够支持每个集群至少8000台主机,并以超过集群中主机最大下载速度限制的50%分配Docker镜像。事实上,对于Kraken,集群和镜像大小对下载速度没有显著影响。

开源Kraken

自内部发布以来,Kraken一直用于管理和分发Uber的所有Docker镜像。

优步开源点对点Docker注册表,镜像分发很强悍,每天100万个!

Uber表示,通过将该工具提供给更广泛的开源社区,希望激发有关使用Docker构建适应性强,且可靠的基础架构的工程和设计最佳实践的讨论。

这个工具牛不牛?欢迎评论

相关推荐