Kraken: uber开源的基于P2P的docker镜像仓库

Kraken:一款基于爆破技术的多平台分布式密码安全测试工具 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。同时每个成长路线对应的板块都有配套的视频提供:当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。传送门这里。 阅读详情

Kraken is a P2P-powered docker registry that focuses on scalability and availability. It is designed for docker image management, replication and distribution in a hybrid cloud environment. With pluggable backend support, Kraken can easily integrate into existing docker registry setups as the distribution layer.

Kraken has been in production at Uber since early 2018. In our busiest cluster, Kraken distributes more than 1 million blobs per day, including 100k 1G+ blobs. At its peak production load, Kraken distributes 20K 100MB-1G blobs in under 30 sec.

Below is the visualization of a small Kraken cluster at work:

Table of Contents

Features

Following are some highlights of Kraken:

  • Highly scalable. Kraken is capable of distributing docker images at > 50% of max download speed limit on every host. Cluster size and image size do not have significant impact on download speed.
    • Supports at least 8k hosts per cluster.
    • Supports arbitrarily large blobs/layers. We normally limit max size to 20G for best performance.
  • Highly available. No component is a single point of failure.
  • Secure. Support uploader authentication and data integrity protection through TLS.
  • Pluggable storage options. Instead of managing data, Kraken plugs into reliable blob storage options, like S3, HDFS or another registry. The storage interface is simple and new options are easy to add.
  • Lossless cross cluster replication. Kraken supports rule-based async replication between clusters.
  • Minimal dependencies. Other than pluggable storage, Kraken only has an optional dependency on DNS.

Design

The high level idea of Kraken is to have a small number of dedicated hosts seed content to a network of agents running on each host in the cluster. A central component, the tracker, will orchestrate all participants in the network to form a pseudo-random regular graph. Such a graph has high connectivity and small diameter, so all participants in a reasonably sized cluster can reach > 80% of max upload/download speed in theory, and performance doesn't degrade much as the blob size and cluster size increase.

Architecture

  • Agent
    • Deployed on every host
    • Implements docker registry interface
    • Announces available content to tracker
    • Connects to peers returned by tracker to download content
  • Origin
    • Dedicated seeders
    • Stores blobs as files on disk backed by pluggable storage (e.g. S3)
    • Forms a self-healing hash ring to distribute load
  • Tracker
    • Tracks which peers have what content (both in-progress and completed)
    • Provides ordered lists of peers to connect to for any given blob
  • Proxy
    • Implements docker registry interface
    • Uploads each image layer to the responsible origin (remember, origins form a hash ring)
    • Uploads tags to build-index
  • Build-Index
    • Mapping of human readable tag to blob digest
    • No consistency guarantees: client should use unique tags
    • Powers image replication between clusters (simple duplicated queues with retry)
    • Stores tags as files on disk backed by pluggable storage (e.g. S3)

Benchmark

The following data is from a test where a 3G Docker image with 2 layers is downloaded by 2600 hosts concurrently (5200 blob downloads), with 300MB/s speed limit on all agents (using 5 trackers and 5 origins):

  • p50 = 10s (at speed limit)
  • p99 = 18s
  • p99.9 = 22s

Usage

All Kraken components can be deployed as docker containers. To build the docker images:

$ make images

To start a herd container (which contains origin, tracker, build-index and proxy) and two agent containers with development configuration:

$ make devcluster

Docker-for-Mac is required for making dev-cluster work on your laptop. For more information on devcluster, please check out devcluster README. For information about how to configure and use Kraken, please refer to the documentation.

Comparison With Other Projects

Dragonfly from Alibaba

Dragonfly cluster has one or a few "supernodes" that coordinates transfer of every 4MB chunk of data in the cluster. While the supernode would be able to make optimal decisions, the throughput of the whole cluster is limited by the processing power of one or a few hosts, and the performance would degrade linearly as either blob size or cluster size increases.

Kraken's tracker only helps orchestrate the connection graph, and leaves negotiation of actual data transfer to individual peers, so Kraken scales better with large blobs. On top of that, Kraken is HA and supports cross cluster replication, both are required for a reliable hybrid cloud setup.

BitTorrent

Kraken was initially built with a BitTorrent driver, however we ended up implementing our own P2P driver based on BitTorrent protocol to allow for tighter integration with storage solutions and more control over performance optimizations.

Kraken's problem space is slightly different than what BitTorrent was designed for. Kraken's goal is to reduce global max download time and communication overhead in a stable environment, while BitTorrent was designed for an unpredictable and adversarial environment, so it needs to preserve more copies of scarce data and defend against malicious or bad behaving peers.

Despite the differences, we re-examine Kraken's protocol from time to time, and if it's feasible, we hope to make it compatible with BitTorrent again.

Limitations

  • If Docker registry throughput is not the bottleneck in your deployment workflow, switching to Kraken will not magically speed up your docker pull. To actually speed up docker pull, consider switching to Makisu to improve layer reusability at build time, or tweak compression ratios, as docker pull spends most of the time on data decompression.
  • Mutating tags (e.g. updating a latest tag) is allowed, however a few things will not work: tag lookups immediately afterwards will still return the old value due to Nginx caching, and replication probably won't trigger. We are working on supporting this functionality better. If you need tag mutation support right now, please reduce cache interval of build-index component. If you also need replication in a multi-cluster setup, please consider setting up another docker registry as Kraken's backend.
  • Theoretically, Kraken should distribute blobs of any size without significant performance degradation, but at Uber we enforce a 20G limit and cannot endorse of the production use of ultra-large blobs (i.e. 100G+). Peers enforce connection limits on a per blob basis, and new peers might be starved for connections if no peers become seeders relatively soon. If you have ultra-large blobs you'd like to distribute, we recommend breaking them into <10G chunks first.

Contributing

Please check out our guide.

Contact

To contact us, please join our Slack channel.

Kraken:基于P2P的容器镜像分发系统,解决大规模集群部署瓶颈 在容器化与云原生架构中,镜像分发是影响部署效率的关键环节。传统中心化镜像仓库面临单点瓶颈、跨地域延迟和带宽压力等挑战。P2P(点对点)技术通过去中心化的网络模型,将数据分发任务分散到各个节点,实现了带宽的线性扩展和资源的就近利用。这一技术价值在于显著提升大规模集群下的镜像拉取速度,降低中心仓库负载,尤其适用于多数据中心同步、CI/CD流水线加速等场景。Kraken作为Uber开源的分布式存储与分发引擎,正是基于P2P原理构建的解决方案,它通过Tracker协调、Origin作为数据源、Agent实现节点间数 阅读详情

相关推荐

自研P2P镜像分发系统

Eagle Eagle is a lightweight and intelligent p2p based docker image distribution system. Features Non-invasive: Eagle can seamlessly support docker for distributing images. High-availability: Eagle supports high-availability in both client-side and serve

小小小小杜 2045

如何使用 Harbor 和 Kraken 优化 Kubernetes 集群镜像拉取速度

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !一、P2P镜像分发简述  随着云原生架构被越来越多的企业接受,企业应用中容器集群的规模也越来越大。当容器集群达到一定的规模且单容器应用副本数达到一定级别时,集群中容器镜像的分发将面临挑战。  P2P(Peer-to-Peer,点对点)镜像分发借鉴了互联网P2P文件传输的思路,旨在提高镜像在容器集群中的分发效率,以更快...

easylife206的专栏 753

kraken:P2P Docker注册表能够在几秒钟内分发TB的数据

Kraken是一个基于P2P的Docker注册表,专注于可伸缩性和可用性。 它设计用于混合云环境中的Docker映像管理,复制和分发。 借助可插入的后端支持,Kraken可以轻松地作为分布层集成到现有Docker注册表设置中。 Kraken自2018年初以来一直在Uber生产。在我们最繁忙的集群中,Kraken每天分发超过100万个Blob,其中包括10万个1G + Blob。 在峰值生产负荷下,Kraken会在30秒内分配20K 100MB-1G斑点。 以下是工作中的小型Kraken群集的可视化效果: 目录 产品特点 以下是Kraken的一些亮点: 高度可扩展。 Kraken能够以大于最大下载速度50%的速度分发Docker映像,每个主机上的速度限制。 群集大小和图像大小对下载速度没有重大影响。 每个群集至少支持1.5万台主机。 支持任意大的斑点/层。 为了获得最佳性能,我们通常将最大大小限制为20G。 高度可用。 没有组件是单点故障。 安全。 通过TLS支持上传者身份验证和数据完整性保护。 可插拔存储选项。 Kraken无需管理数据,而是插入可靠的Blob存储选项,

强力推荐:Kraken - 打造高效容器镜像分发新时代

强力推荐:Kraken - 打造高效容器镜像分发新时代 krakenP2P Docker registry capable of distributing TBs of data in seconds项目地址:https://gitcode.com/gh_mirrors/krake/kraken 在今天的云原生时代,Docker已经成为构建和部署微服务不可或缺的工具之一。然而,随着集群规模的扩大...

gitblog_00079的博客 729

kraken

Kraken是基于P2P的Docker注册表,专注于可伸缩性和可用性。 它专为混合云环境中的Docker映像管理,复制和分发而设计。 借助可插拔的后端支持,Kraken可以轻松地作为分布层集成到现有Docker注册表设置中。 Kraken自2018年初以来一直在Uber投入生产。在我们最繁忙的集群中,Kraken每天分发超过100万个Blob,其中包括10万个1G + Blob。 在峰值生产负荷下,Kraken会在30秒内分配20K 100MB-1G Blob。 以下是工作中的小型Kraken群集的可视化效果: 目录 特征 以下是Kraken的一些亮点: 高度可扩展。 Kraken能够在每个主机上以最大下载速度限制的50%以上分发Docker映像。 群集大小和图像大小对下载速度没有重大影响。 每个群集至少支持1.5万台主机。 支持任意大的斑点/层。 为了获得最佳性能,我们通常将最

kraken使用说明中文版

kraken使用说明中文版 让你对kraken更加浅显的理解,使用更加方便,无需进行翻译

使用Harbor 和 Kraken 优化镜像拉取速

如何解决使用harbor仓库时的遇到镜像缓慢的屏障

每天都要开心呀(#^.^#) 2313

CocosCreator3.8实战指南:动态字体与位图字体性能优化技巧

本文深入解析CocosCreator3.8中系统字体、动态字体(TTF)与位图字体(FNT)的核心差异与性能表现。针对动态字体运行时解析开销大、内存占用高的痛点,提供了字体子集化、共享资源等优化技巧;同时详细介绍了位图字体制作流程及其在渲染速度、内存可控性上的绝对优势,并给出跨平台场景下的字体选型与优化策略,帮助开发者有效提升游戏性能。

weixin_29006701的博客 563

P2P镜像分发:Harbor+Kraken优化镜像拉取速度(一)

随着云原生架构被越来越多的企业接受,企业应用中容器集群的规模也越来越大。当容器集群达到一定的规模且单容器应用副本数达到一定级别时,集群中容器镜像的分发将面临挑战。P2P(Peer-to-Peer,点对点)镜像分发借鉴了互联网P2P文件传输的思路,旨在提高镜像在容器集群中的分发效率,以更快的镜像拉取速度来对kubernetes集群进行优化。本篇主要讲述KrakenHarbor的理论部分。

渡江客涂鸦板 1440

保姆级教程:手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动

本文提供了一份详细的保姆级教程,手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动。从基础配置到RGMII接口的特殊设置,再到驱动开发的关键步骤和调试技巧,帮助开发者快速掌握PHY芯片的移植与开发。

weixin_33734785的博客 333

ChatGPT Plus账号被降智?3个实用检测方法+终极解决方案(附国内支付指南)

本文针对ChatGPT Plus账号性能下降问题,提供了3个科学检测方法和系统级解决方案。通过详细分析症状、专业诊断技巧和优化策略,帮助用户有效应对GPT-4o等高级功能失效、响应质量下降等问题,特别包含国内用户关心的支付方案和账号管理建议。

weixin_42639633的博客 469

大规模集群中Docker镜像如何分发管理?试试Uber刚开源的Kraken

Docker注册表的主要目的是存储和分发Docker镜像,看似是一个相对简单的任务,但是如果遇到了像Uber这样的大规模计算集群,就很容易成为可伸缩性的瓶颈。在多区域和混合云系统的计算环境中,镜像分发会变得更具挑战性。为了解决遗留Docker注册表堆栈的性能问题,Uber的集群管理团队开发了一个开源对等(P2P)Docker注册表kraken。Docker容器是Uber基础设施的基础构建块,但是随...

啊啊啊啊2 570

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

Technology Daily - 2019/03/06

2019/03/06 Kraken: uber开源的基于P2P的docker镜像仓库,专注于可扩展性和可用性 https://github.com/uber/kraken The Shutdown Problem: How Does a Blockchain System End? https://arxiv.org/ftp/arxiv/papers/1902/1902.07254.pdf...

onepedalo的博客 647

万象RK3506-EG1800网关使用说明

摘要:HD-RK3506-EG1800是一款高性能工业物联网边缘计算网关,支持Buildroot和Ubuntu双系统。文档详细介绍了网关的网络配置(包括ETH0/ETH1的静态IP设置、WiFi连接)、时钟同步、HSL软件安装配置(含开机自启动服务)、系统日志优化以及刷机操作指南(Loader/Maskrom模式)。特别提供了基于lighttpd的网页管理方案,通过HTML界面实现网络参数可视化配置,包含身份验证、实时状态显示和表单提交功能。网关默认ETH0固定IP为192.168.1.10,提供完整的CL

tian_jiangnan的博客 174

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1064

Uber开源P2P容器仓库Kraken,每秒分布TB级数据

Docker容器仓库的主要职能是存储和分布Docker镜像。这是个看似容易的任务,但是当计算集群达到Uber的规模后,容器仓库很容易成为系统的瓶颈。尤其在混合云多活架构下...

Docker的专栏 1368

基于51单片机设计的花样流水灯设计

花样流水灯是一种常见的LED灯效果,通常由多个LED灯组成,通过控制每个LED灯的亮灭顺序和时间,实现花样流水灯的效果。在51单片机中,可以使用定时器和端口控制来实现这一效果。

3430

Eino生态系统:扩展组件与开发工具全览

Eino生态系统:扩展组件与开发工具全览 【免费下载链接】eino 项目地址: https://gitcode.com/GitHub_Trending/ei/eino 本文...

gitblog_00932的博客 604

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2043

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何快速部署Uber Kraken:终极P2P Docker镜像分发指南

Uber Kraken是一个基于P2P技术的Docker镜像仓库,专注于可扩展性和可用性,能够在几秒钟内分发TB级数据。它专为混合云环境中的Docker镜像管理、复制和分发而设计,通过插件化后端支持,可以轻松集成到现有的Docker registry设置中作为分发层。 ## Kraken的核心优势与应用场景 🚀 Kraken在Uber生产环境中经过验证,每天可分发超过100万个blob,包括

gitblog_00887的博客 493

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

10分钟自建企业级Docker镜像仓库!这个开源项目太顶了!

平时经常用Docker来部署各种环境,发现从DockerHub上下载镜像有时候比较慢。第三方的镜像还可以使用一些国内的镜像仓库来加速,如果我们自己构建的镜像那就不行了。这时候搭建一个私有的镜像仓库很有必要,最近发现Harbor这个企业级镜像仓库,非常好用且功能强大,推荐给大家!Harbor是一款开源的Docker镜像仓库服务,在Github上目前有13.4k+Star。提供了基于角色的镜像访问机制,可以保护你的镜像安全。

weixin_42907150的博客 3180

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[Docker]二.Docker 镜像,仓库,容器介绍以及详解

Docker 镜像,仓库,容器介绍以及详解,docker 容器,镜像相关命令详解

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 5216

Docker 使用基础(1)—镜像仓库

Docker使用基础(1)—理解镜像仓库概念以及使用镜像仓库

B1ue还在专注 5457

K8S 生态周报| KIND v0.9 发布带来众多更新

“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。”KIND v0.9 正式发布KIND 是我很喜欢也一直在...

k8s 生态 403
上一篇: 区块链最基本的技术原理
下一篇: 超级详细Tcpdump 的用法
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值