写点什么

优步发布开源服务 Kraken:一款 P2P Docker 容器仓库

作者:K Jonas

  • 2019-04-09
  • 本文字数:1284 字

    阅读完需:约 4 分钟

优步发布开源服务Kraken:一款P2P Docker容器仓库

优步于 3 月 5 日发布了 Kraken,这是一个开源的点对点(P2P)Docker 容器仓库。Kraken 旨在为大规模系统提供 Docker 镜像服务,解决跨区域支持、性能瓶颈和混合云环境所面临的挑战。


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


在容器中运行的Docker镜像是由镜像层组成的,这些层包含了相对之前的层所发生的变更,并与镜像文件和可执行文件的二进制大对象(blob)相关联。Docker容器仓库是服务端应用,用于存储和分发镜像层和镜像 blob。Docker 在Docker Hub 提供了免费的容器仓库,另外还提供了商业版本的容器仓库。除 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 架构(图片来自 Kraken README)


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


阿里巴巴的原生云计算基金会(CNCF)下属的Dragonfly项目也是一个开源的 P2P 镜像和文件分发系统,可以解决原生云应用中面临的分发问题。Kraken 的文档中注明了两者之间的主要差异:


Dragonfly 集群有一个或几个“超级节点”,用于协调集群中每个 4MB 大小的数据块的传输。虽然超级节点能够做出最佳决策,但整个集群的吞吐量会受到一台或数台主机的处理能力限制,并且随着 blob 大小或集群大小的增加,整体性能会线性下降。

Kraken 的追踪器仅帮助协调连接图,并将实际数据传输的协商留给单独的端点处理,因此 Kraken 可以更好地扩展到大型 blob。最重要的是,Kraken 是 HA 并支持跨集群复制,这两点都是可靠的混合云设置所必需的。


有关 Kraken 的更多信息可以访问GitHub页面,也可以加入优步的Slack频道


查看英文原文Uber Releases Kraken: An Open Source P2P Docker Registry


2019-04-09 08:005240

评论

发布
暂无评论
发现更多内容

比尔·盖茨最新AI演讲:人工智能时代已经开启

Chares

人工智能 机器学习 微软 ChatGPT

ChatGPT研究(一)——AI平民化的里程碑

Chares

人工智能 机器学习 AIGC ChatGPT

专业级音频制作软件:Logic Pro X中文激活版

真大的脸盆

Mac 音频制作 Mac 软件 音频处理

极客时间运维进阶训练营第七周作业

忙着长大#

极客时间

pdf增强插件:Enfocus PitStop Pro 2022 中文激活版

真大的脸盆

Mac PDF Mac 软件 PDF编辑

电商秒杀系统

Ryan

IT 数字化转型

L3C老司机

数字化转型 产品研发 工程效能 项目交付 胜任力模型

Spring 项目运行提示错误 Not a managed type

HoneyMoose

Jenkins 修改启动的端口

HoneyMoose

WordPress 插件 g5plus 修改属性

HoneyMoose

CnosDB 2.0 Arrow Flight SQL使用指北

CnosDB

开源 时序数据库 CnosDB Arrow Flight SQL

Git Commit Message 应该怎么写?

AlwaysBeta

git

Go 语言数组和切片的区别

AlwaysBeta

Go 源码 数组 面试题 切片

前端面试实录CSS篇(最近一周)

Immerse

CSS 面试 前端

简单的录屏软件:ScreenFlow v10.0.9汉化版

真大的脸盆

Mac Mac 软件 屏幕录制 录屏软件 屏幕录像

prometheus架构介绍及部署使用

忙着长大#

IntelliJ IDEA 2023.1 版本添加了包中类的列表功能

HoneyMoose

Spring事务失效场景

TaurusCode

Spring Boot 事务 java基础 事务失效 事务回滚

做低代码引擎有多难?OneCode五个版本心路历程

codebee

低代码 低代码开发 低代码平台 低代码报告

uniapp 生成微信小程序码

源字节1号

微信小程序 开源 软件开发

优步发布开源服务Kraken:一款P2P Docker容器仓库_开源_InfoQ精选文章