Kraken 点对点(P2P)Docker 容器仓库

程序名称:Kraken

授权协议: Apache

操作系统: 跨平台

开发语言: Google Go

Kraken 介绍

Kraken 是 Uber 开源的点对点(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 实现兼容。

介绍内容来自 InfoQ

Kraken 官网

https://github.com/uber/kraken

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Cyclone是一个打造容器工作流的云原生持续集成持续发布平台。 Cyclone主要致力于将代码从本地开发环境用任意容器引擎封装搬运到测试或者生产环境运行。Cyclone包括一下特性:
Kui Shell 为构建云原生应用程序提供了新的开发经验。通过将熟悉的 CLI 的功能与高影响力区域中的可视化相结合,Kui 使用户能够操作复杂的
Eclipse MicroProfile 是一个 Java 微服务开发的基础编程模型,它致力于定义企业 Java 微服务规范,MicroProfile
Kabanero 构建在 Knative、Istio 与 Tekton 之上,提供构建、流量管理与 CI/CD 等能力,同时支持与 Eclipse
Antrea 是一个 Kubernetes 网络解决方案,旨在实现 Kubernetes 原生。它使用 Open vSwitch 作为网络数据平面,在 Layer3/4 上运行,以为
Linkerd 是一个提供弹性云端原生应用服务网格(service mesh)的开源项目,也是面向微服务的开源 RPC 代理。它的核心是一个透明代理。
YugaByte 是用于构建关键型应用的云原生数据库。 YugaByte 使用 C++ 开发,支持 Cassandra 查询语言(CQL)以及 Redis 协议,对 PostgreSQL
Gloo 是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,它支持传统应用程序、微服务与 Serverless。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议
YugaByte DB 是一个高性能、云原生的分布式 SQL 数据库。 值得关注的特性包括:
ChubaoFS(储宝文件系统)是为大规模容器平台设计的分布式文件系统。它由元数据子系统、数据子系统和资源管理器组成。ChubaoFS
YugaByte 是用于构建关键任务应用程序的云原生数据库。此 repo 是 YugaByte Community Edition。
Draft 是由微软出品的一个帮助开发者在 Kubernetes 上快速创建云原生应用的工具。使用该工具,你可以不需要知道 Docker 或者
Camel K 是一个轻量级集成框架,它使得可以直接在 Kubernetes 与 Knative 上运行Camel。
APISIX 是一个基于云原生、高速可扩展的开源微服务网关节点实现,其自身主要优势是高性能和强大的扩展性。
Open Application Model 是什么? Open Application Model 是一个用来构建云原生应用的规范。它描述了一个模型,开发人员可以在其中定义应用程序组件。应用程序操作员负责创建这些组件的实例并为它们分配应用程序配
ContainerOps 是云原生(Cloud Native)的 DevOps Orchestration。定义 DevOps 组件的基本容器,如Docker 或 rkt。 在浏览器中使用 WYSIWYG 编辑器绘制 DevOps 工作流程,混合 DevOps 组件和现有的
Gravity 是一个开源工具包,为云原生应用程序提供真正的可移植性。它允许开发人员将 Kubernetes
iSula 是一种云原生轻量级容器解决方案,可通过统一、灵活的架构满足 ICT 领域端、边、云场景的多种需求。
Rook将文件、数据块和对象存储系统引入到Kubernetes集群,与其他正在使用存储的应用程序和服务一起无缝运行。通过这种方式,云原生集群可以在公有云和本地部署中自给自足并且具备可移植性。该项目的开发目的是使企
Camel Quarkus 致力于将 280+ Camel 组件移植和打包为 Quarkus 扩展。 Camel 是一个基于规则的路由以及媒介引擎,它提供了一个基于 POJO 的企业集成模式的实现,开发者可以采用其强大且十分易用的 API(Java