首页> 中国专利> 优化用于容器仓库的镜像重构

优化用于容器仓库的镜像重构

摘要

本申请涉及优化用于容器仓库的镜像重构。一种计算机实现的方法包括接收容器仓库的特征信息。容器仓库包括多个容器镜像。该方法包括选择容器仓库中的至少两个容器镜像,并基于特征信息选择用于优化的参数。该方法还包括基于用于优化的参数生成成本函数,并基于该成本函数优化容器仓库中的至少两个容器镜像。一种计算机实现的方法包括接收容器镜像中的至少两层中的每一层的构成。该至少两层中的每一层的构成包括至少一个文件。该方法包括映射该至少两层中的构成之间的重合,并基于该重合估计容器镜像中的冗余。该方法还包括计算减少容器镜像中的冗余的新层。

著录项

  • 公开/公告号CN112181584A

    专利类型发明专利

  • 公开/公告日2021-01-05

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN202010583832.6

  • 申请日2020-06-23

  • 分类号G06F9/455(20060101);G06F9/50(20060101);G06F8/61(20180101);

  • 代理机构11038 中国贸促会专利商标事务所有限公司;

  • 代理人刘玉洁

  • 地址 美国纽约

  • 入库时间 2023-06-19 09:26:02

说明书

技术领域

本发明涉及容器镜像(container image),更具体地,本发明涉及在云存储系统和网络中优化用于容器仓库(registry)的镜像重构。

发明内容

根据一个实施例,计算机实现的方法包括接收容器仓库的特征信息。容器仓库包括多个容器镜像。该方法包括选择容器仓库中的至少两个容器镜像,并基于特征信息选择用于优化的参数。该方法还包括基于用于优化的参数生成成本函数,并基于该成本函数优化容器仓库中的至少两个容器镜像。

根据一个实施例,计算机实现的方法包括接收容器镜像中的至少两层中的每一层的构成(composition)。该至少两层中的每一层的构成包括至少一个文件。该方法包括映射(mapping)该至少两层中的构成之间的重合(overlap),并基于该重合估计容器镜像中的冗余。该方法还包括计算减少容器镜像中的冗余的新层。

根据一个实施例,用于减少冗余的计算机程序产品包括计算机可读存储介质,其具有体现在其中的程序指令。该程序指令可由计算机执行,以使得计算机由计算机接收容器仓库的特征信息。容器仓库包括多个容器镜像。该程序指令使得计算机由计算机选择容器仓库中的至少两个容器镜像,并由计算机基于特征信息选择用于优化的参数。该程序指令还使得计算机由计算机基于用于优化的参数生成成本函数,并由计算机基于该成本函数优化容器仓库中的至少两个容器镜像。

从以下详细描述中,本发明的其它方面和实施例将变得显而易见,当结合附图时,以下详细描述通过示例的方式示出了本发明的原理。

附图说明

图1显示了根据本发明的一个实施例的云计算环境。

图2显示了根据本发明的一个实施例的抽象模型层。

图3是根据本发明的一个实施例的高级架构。

图4是根据本发明的一个实施例的方法的流程图。

图5是根据本发明的一个实施例的方法的流程图。

图6是根据本发明的一个实施例的例示优化的示意图。

图7是根据本发明的一个实施例的例示优化的示意图。

具体实施方式

以下描述是为了说明本发明的一般原理,而不是为了限制这里要求保护的发明概念。此外,本文所述的特定特征可与其他所述特征以各种可能的组合和排列组合使用。

除非本文另有明确定义,否则所有术语将被给予其最广泛的可能解释,包括说明书中暗示的含义以及本领域技术人员理解的和/或词典、论文等中定义的含义。

还必须注意,如在说明书和所附权利要求中所使用的,单数形式"一"、"一个"和"该"包括复数对象,除非另有说明。还将理解,术语"包括"和/或"包含"在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。

下面的描述公开了用于在云存储系统和网络中优化用于容器仓库的镜像重构的几个实施例。

在一个通用实施例中,计算机实现的方法包括接收容器仓库的特征信息。容器仓库包括多个容器镜像。该方法包括选择容器仓库中的至少两个容器镜像,并基于特征信息选择用于优化的参数。该方法还包括基于用于优化的参数生成成本函数,并基于该成本函数优化容器仓库中的至少两个容器镜像。

在另一个通用实施例中,计算机实现的方法包括接收容器镜像中的至少两层中的每一层的构成。该至少两层中的每一层的构成包括至少一个文件。该方法包括映射该至少两层中的构成之间的重合,并基于该重合估计容器镜像中的冗余。该方法还包括计算减少容器镜像中的冗余的新层。

在另一个通用实施例中,用于减少冗余的计算机程序产品包括计算机可读存储介质,其具有体现在其中的程序指令。该程序指令可由计算机执行,以使得计算机由计算机接收容器仓库的特征信息。容器仓库包括多个容器镜像。该程序指令使得计算机由计算机选择容器仓库中的至少两个容器镜像,并由计算机基于特征信息选择用于优化的参数。该程序指令还使得计算机由计算机基于用于优化的参数生成成本函数,并由计算机基于该成本函数优化容器仓库中的至少两个容器镜像。

应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。

云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。

广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。

资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。

迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。

服务模型如下:

软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。

平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。

基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。

部署模型如下:

私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。

共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。

混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。

现在参考图1,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图1显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。

现在参考图2,其中显示了云计算环境50(图1)提供的一组功能抽象层。首先应当理解,图2所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图2所示,提供下列层和对应功能:

硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。

虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。

在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。

工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及优化用于容器仓库的镜像重构。

容器是轻量级的、独立的、可执行的软件包,其可以是可移植的,而与操作系统(OS)和/或内核环境无关。容器可以是将代码和/或依赖件封装在一起的应用层的抽象。多个容器可以在同一机器上运行,其中这些容器共享OS。每个容器可以在用户空间内运行隔离的进程。

容器镜像是包括用于在信息技术(IT)基础设施上运行隔离进程的可执行代码的静态文件。容器镜像可以存储在在线商店(例如,容器仓库)中。每个容器镜像是清单(manifest)(例如,包括关于容器镜像层、大小、摘要、操作系统(OS)、架构、运行时间要求等的信息的元数据)和各层(例如,压缩的tar文件)的组合。容器镜像包含应用和所需的运行时依赖件。容器镜像可以容易地经由集中式容器仓库服务版本化、存储和共享。容器仓库存储并服务数百万容器镜像,允许开发者"推"和"拉"镜像以及对这些镜像作出改变。

容器镜像按层构造,其中,每层包含镜像内容的一部分(例如,一组文件)。容器镜像中的文件不可从现有镜像移除。只能增加新文件(例如,以增加镜像尺寸和/或层数为代价)。可以合并这些层来形成容器根文件系统。层是只读的。相同层可以在容器镜像和容器中共享,并且作为层只存储一次。在实践中,由于层很少完全相同,在容器镜像中共享层的能力受到限制。

层中的文件级别的可用性受到限制。例如,层1包含文件X、文件1、文件2、…直至文件99。层2包含文件1、文件2、…直至文件99和文件Y。虽然层1和层2中99%的文件都是相同的,但因为重复数据删除(deduplication)常规上是在层级别,所以必须存储每个完整的文件集合。假定文件尺寸相同的话,则空间需求加倍(例如,端到端)。在推/拉操作期间的网络流量也会加倍(例如,端到端)。由于在每层中的文件的差别相对较小,重复文件的个数以及总的冗余容量在容器仓库中非常显著。

在一个常规方法中,可以使用内容可寻址存储方案来识别同一方案之间的重复层,并且只存储每层的一个副本。内容可寻址存储方案可以减少仓库和终端主机上的存储使用。内容可寻址存储方案可应用于本地存储的镜像。在实践中,各层很少相同,内容可寻址存储方案的存储节省非常有限。例如,在10,000个最常见的DockerHub镜像中,包含104,667层,只有36%的层是相同的,采用常规的内容可寻址存储方案,仅仅提高1.48因子的存储减少。

另一个常规的减少仓库的存储需求的方法是使用能够进行重复数据删除的存储。这种存储既不减少网络流量也不减少客户端存储占用量。

类似地,一些可能的方法包括将每个文件放置在其自己的层。每层是内容可寻址的,不存储重复的文件。没有重复文件减少了冗余。然而,客户端侧的统一技术会遇到性能开销,因为将每个文件放置在其自己的层中显著增加了要合并的层的数量。替代地将每个镜像的所有文件放置在同一层中会显著增加存储冗余,导致不需要的文件被下载。本领域普通技术人员将会理解,将所有文件放置在同一层会显著增加超出实际应用的网络/客户存储冗余。

上述的任何常规方法不能解决所有网络、存储和层数的考量来有效地减少仓库和客户之间的网络流量。另外,客户常常继续以原始的、未进行重复数据删除的形式存储镜像,这需要过多的存储空间。常规的重复数据删除过程增加显著的存储器、CPU和I/O开销。例如,在层拉出中,已知的能够进行重复数据删除的仓库将需要对层解压缩,计算所有文件的哈希,并更新存储器内和磁盘上的哈希索引。在层拉中,需要将层从其分段进行重新组装,这会触发每个文件的I/O。这些操作都会要求增加仓库基本架构成本和推/拉时间。

本发明的各个实施例重新组织和优化各层,以减少冗余、存储成本和网络成本。许多层与其他层只有相对少量的文件不同。这里公开的至少一些实施例包括将“几乎相同”的层分成共享的和独特的内容,以创建可以容易重用的新的层。通过利用这些几乎相同的层中的重合,本发明的各个实施例提供至少因子为2的存储节省,提高镜像之间的可重用性,并减少网络流量。

图3是根据各种实施例的用于执行图4和5的各种操作的高级架构。在各种实施例中,架构300可根据本发明在图1-2和4-7中所示出的任何环境中实现。当然,如本领域技术人员在阅读本描述时将理解的,在架构300中可以包括比图3中具体描述的元件更多或更少的元件。

方法400的每个步骤(下面进一步详细描述)可以由架构300的任何合适的组件来执行。以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理器(例如,处理电路、芯片和/或模块)可以在任何设备中使用,以在架构300中执行方法400的一个或多个步骤。例示性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。

方法500的每个步骤(下面进一步详细描述)可以由架构300的任何合适的组件来执行。以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理器(例如,处理电路、芯片和/或模块)可以在任何设备中使用,以在架构300中执行方法500的一个或多个步骤。例示性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。

架构300包括仓库302。仓库302可以是用于容器镜像的第三方仓库。容器镜像可以被推到仓库302或从仓库302拉出。仓库302可以是公共容器仓库、私有容器仓库或本领域已知的任何容器仓库。

架构300包括管理器304。管理器304以本领域已知的任何方式管理仓库。

架构300包括优化器306,用于对仓库数据和任何关联的元数据运行优化操作。在优选方法中,优化器306从管理器304接收用于仓库优化和/或分析的请求。优化器306可以执行如下面参考方法400和方法500描述的各种操作中的任何操作。在一个实施例中,优化器306生成对管理器304的请求的输出。

优化器306包括用于执行下面将参考方法400和方法500详细描述的各种操作的组件。优化器306包括镜像解析器308。在一个实施例中,镜像解析器308可以通过从容器镜像集合生成矩阵来解析容器仓库中的容器镜像。镜像解析器308可以生成包括容器镜像和文件作为矩阵的维度的二进制矩阵。在一个优选实施例中,镜像解析器308生成哪些容器镜像包含哪些文件的映射。在一个实施例中,镜像解析器308生成容器镜像、容器镜像中的层、容器镜像中的文件等之间的重合的映射。

在优选实施例中,镜像解析器308从容器镜像集合生成矩阵M

优化器306包括镜像子集选择器310,用于确定优化仓库302中的哪一部分。镜像子集选择器310可以限制一次优化的镜像的数目。在各个实施例中,优化整个仓库302可能不是有效率的。在优选实施例中,镜像子集选择器310说明(account for)客户端的本地优化参数。镜像子集选择器310基于一个或多个因素选择要重建的镜像子集。一个因素包括镜像拉出的频率(例如,在一个方法中,镜像子集选择器310选择前5%的镜像)。优化相对不频繁地被拉出的镜像对于资源的使用是低效的。可以由用户、制造商、内容提供者、服务提供者等设置用于选择要优化的镜像的阈值频率。阈值频率可以以本领域已知的任何方式来确定。在一个方法中,可以在查找表中找到阈值频率。

另一个因素包括镜像聚类。在本公开的一个实施例中,可以将相对频繁地一起被客户拉出的镜像进行聚类并优化,以提高对于不同客户的节省。相对频率可以上述任何方式设置和/或确定。

被标注为“官方的”的镜像、预先选择的镜像、预先标注为“高质量”(例如,或任何其等效)的镜像等可以被认为是与容器仓库中的其他镜像相比相对更高质量的。在这些镜像在本地级别手动预先优化的情况下,被标注为“官方的”的镜像、预先选择的镜像、预先标注为“高质量”(例如,或任何其等效)的镜像可以不被优化。镜像子集选择器310可以基于这些因素的任何组合来选择要重建的镜像的子集。

优化器306包括冗余估计器和参数选择器312。冗余估计器和参数选择器312可以通过检查由镜像解析器308生成的输出来估计仓库302中的冗余量。在一个实施例中,冗余估计器和参数选择器312通过对由镜像解析器308生成的输出中的文件重新出现(reoccurrences)进行计数来计算对仓库302的节省。在这里描述的各个实施例中,冗余指的是层内和/或容器仓库内的文件的冗余。例如,如果几个镜像包含相同的文件并且这些文件在容器仓库中被存储多次,这认为该仓库具有高冗余。

在优选实施例中,冗余估计器和参数选择器312可以确定用于将在下面详细描述的优化机制316的参数。要优化的参数可以包括存储成本、网络成本、操作成本、镜像-到-层的边的数目、文件的数目、层-到-文件的边的数目,镜像-层-文件路径的数目、镜像中的层数等等。

在一个实施例中,冗余估计器和参数选择器312为将在下面详细讨论的每个参数分配一个变量。例如,α可以代表每个镜像的层数,β可以代表存储冗余,γ可以代表网络和/或客户存储冗余,等等。在一个优选方法中,冗余估计器和参数选择器312以本领域已知的任何方式跟踪和/或存储每个参数的历史数据。在一个方法中,每个参数的历史数据存储在表中。冗余估计器和参数选择器312可以周期性地、持续地、手动地、响应于一个或多个参数的变化等更新节省计算。

优化器306包括优化触发器314。优化触发器314触发优化机制316、优化应用器(applier)318、将在下面详细描述的方法400和/或方法500的任何操作等。优化触发器314按需、响应于存储使用增大至高于一个预定阈值、响应于重复文件增大至高于一个预定阈值、响应于每个镜像的层数增大至高于一个预定阈值等而触发优化。可以由用户、管理员304、仓库302、服务提供者、内容提供者等定义任何预定阈值。可以在查找表中找到这里公开的预先确定的值。可以从用户、管理员304、仓库302、服务提供者、内容提供者等接收需求。

在一个方法中,优化触发器314可以通过扫描仓库文件来确定阈值被超过。在一个优选方法中,可以递增地执行扫描,以更新参数的统计和/或估计冗余。

优化器306包括优化机制316。在一个优选实施例中,优化机制316使用由镜像解析器308生成的包括镜像和文件的矩阵的输出。优化机制316可以使用由冗余估计器和参数选择器312生成的任何输出,包括要优化的镜像集合和/为优化选择的任何参数(例如,带有任何关联变量)。在一个优选实施例中,优化机制316由优化触发器314触发。

在一个优选实施例中,优化机制316包括下面描述的至少一些实施例。

镜像集合可以由I表示,层集合可以由J表示,文件集合可以由K表示。E是对(i,k)(i∈I∈K)集合,其中,镜像i包括文件k。在各个方法中,E是输入。由g

可以定义成本函数来最小化与上面定义的参数相关联的成本的加权组合。成本函数可以基于一个或多个因素,包括操作成本、存储成本和/或网络成本。在一个优选实施例中,成本函数至少包括由下式定义的存储、网络和操作成本:

成本=α*操作+β*存储+γ*网络

操作成本对镜像-至-层的边的数目进行计数,并以镜像频率f

操作=∑

存储成本对文件和/或层-至-文件的边的数目进行计数,并以文件尺寸g

存储=∑

网络成本对镜像-层-文件路径的数目进行计数,并以镜像频率g

网络=∑

优化机制316根据各种约束最小化成本函数。

在一个实施例中,生成成本函数以满足镜像的文件需求。可以生成成本函数,使得∑

在一个实施例中,生成成本函数,使得镜像不包含该镜像不使用的任何层。可以生成成本函数,使得

在一个实施例中,生成成本函数,使得镜像不包含该镜像不使用的任何文件。可以生成成本文件,使得y

在另一个实施例中,限制成本函数,使得当文件出现在所得到的镜像中的层堆叠时,文件的顺序由文件的原始顺序约束。

在一个替换实施例中,优化机制316基于上面描述的成本函数使用贪心算法(greedy algorithm)。在一个方法中,贪心算法开始于一个空的层集合,并基于E中的需求来构造层。在一个优选方法中,该算法不使用现有仓库结构中的层。该算法以随机顺序考虑所有文件,对于每个文件,考虑需要该文件的所有镜像。

在一个方法中,对于每个镜像,该算法或者创建新的文件,或者维护原始文件。该算法根据直至该点的解决方案的状态,考虑每个可能的动作的成本。在一个方法中,有五种可能的情况,包括:情况1:增加镜像-层连接,情况2:增加层-文件连接,情况3:什么都不做,情况4:增加镜像-层和层-文件连接,情况5:增加新层和镜像-层和层-文件连接。

对于情况1,算法考虑使用在前一步骤创建的、包括当前文件但还未由镜像引用的现有层l。情况1可以增加一个从镜像到l的新边。在情况1中,操作成本响应于增加一个镜像-至-层的边而增加1,存储成本保持不变,网络成本取决于已经包含在l中的文件。如果镜像i连接到层l,镜像i服务于额外的文件。如果额外的文件由镜像i使用,则不对该额外的文件计数。否则,会不必要地创建过多的文件。

在一个优选实施例中,算法采取具有最低成本的动作。

在一个方法中,算法可以延伸到跳过创建不正确的重新排序的边。

在一个优选实施例中,优化机制316输出将由下面详细描述的优化应用器318实现的新结构。

优化器306包括优化应用器318。优化应用器318接收由优化机制316生成的新结构,并创建新层。优化应用器318可以为每个镜像生成一个清单。

在一些实施例中,在可以由优化应用器318完全应用优化结构之前,可以推入镜像。在一个方法中,可以维护由镜像引用的层的副本,使得对应的被推入的镜像可以不受优化影响。在另一个方法中,可以用根据客户端请求更新的结构在本地更新镜像。该请求可以是明确的,或者是由于针对现有镜像的推入。在优化之前拉出并在优化之后带有额外的层被推入的镜像使用新的(只读)层来避免仓库缓慢存储以前的层。在镜像在优化之前被拉出并且在优化之后带有额外的层被推入的情况下,客户端可以拉出用于镜像的更新层(例如,不包括新层),然后增补新层。在一些实施例中,在这种情况下的拉出和增补可以在推入时自动发生。

现在参考图4,示出了根据一个实施例的方法400的流程图。在各种实施例中,方法400可以根据本发明在图1-3和5-7中所描述的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法400中可以包括比图4中具体描述的操作更多或更少的操作。

方法400的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各种实施例中,方法400可以部分地或完全地由计算机或其中具有一个或多个处理器的一些其他设备执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法400的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。

如图4所示,方法400包括操作402。操作402包括接收容器仓库的特征信息。容器仓库优选地包括多个容器镜像。在一个优选实施例中,特征信息包括容器仓库中的多个容器镜像以及容器仓库中的每个容器镜像中的层和文件。如本领域普通技术人员所理解的,每个容器镜像可以包括层,每层可以包括文件。

可以以本领域已知的任何方式收集特征信息。在一个方法中,可以解析容器镜像以确定每个容器镜像的特征信息。在一个实施例中,镜像解析器可以通过为容器镜像集合生成矩阵来解析容器仓库中的容器镜像。镜像解析器可以生成包括容器镜像和文件作为矩阵的维度的二进制矩阵。在一个优选实施例中,镜像解析器生成哪些容器镜像包括哪些文件的映射。在一个实施例中,镜像解析器生成容器镜像、容器镜像中的层、容器镜像中的文件等之间的重合的映射。在一个示例中,层1包含文件X、文件1、文件2、…直至文件99。层2包含文件1、文件2、…直至文件99、文件Y。映射可以显示出,层1和层2位于同一容器镜像中,在层1和层2之间文件1-99重合。

在一个优选实施例中,镜像解析器从容器镜像集合生成矩阵M

在另一个实施例中,特征信息可以指客户端配置、资源需求、历史资源需求、使用需求等。在一个优选实施例中,可以为这里公开的各个实施例考虑客户端本地优化参数。可以以本领域已知的任何方式收集和/或存储客户端特征信息。

操作404选择容器仓库中的至少两个容器镜像。仓库镜像可以从容器仓库推入/拉出。容器仓库可以是用于容器镜像的第三方仓库。容器仓库可以是公共容器仓库、私有容器仓库或本领域已知的任何容器仓库。

在各个实施例中,选择的至少两个容器镜像可以是与容器仓库中的其他容器镜像相比访问相对频繁的容器镜像。优化整个仓库(例如,容器仓库中的每一个容器镜像)可能不是高效的。在一个示例中,访问相对频繁的容器镜像可以包括在频率上前5%的拉出镜像。优化相对不频繁地被拉出的容器镜像可能在资源的使用上不够高效。

在另一个实施例中,可以基于镜像聚类来选择容器镜像。在本公开的一个实施例中,可以将相对频繁地一起被客户拉出的镜像进行聚类并优化,以提高对于不同客户的节省。

在另一个实施例中,选择至少两个容器镜像包括不选择与容器仓库中的其他容器镜像相比相对更高质量的容器镜像。被标注为“官方的”的镜像、预先选择的镜像、预先标注为“高质量”(例如,或任何其等效)的镜像等可以被认为是与容器仓库中的其他镜像相比相对更高质量的。在这些镜像在本地级别手动预先优化的情况下,被标注为“官方的”的镜像、预先选择的镜像、预先标注为“高质量”(例如,或任何其等效)的镜像可以不被优化。

在一些方法中,可以响应于来自管理员、用户、容器仓库、服务提供商、内容提供商等的请求选择至少两个容器镜像。例如,管理员可以具体请求要为一个项目优化的容器镜像集合。

操作406包括基于特征信息选择用于优化的参数。在这里公开的各个实施例中,优化指的是减少容器镜像、容器镜像集合和/或容器仓库中的文件的冗余。容器镜像可以包括多个层。每层可以具有多个文件。文件在容器镜像的多个层和/或容器仓库中的多个容器镜像中可以重复。如本领域普通技术人员在阅读了本公开之后所理解的,在容器镜像、容器镜像集合和/或容器仓库中的重复的文件会产生冗余。例如,如果几个镜像包括相同的文件并且文件在容器仓库内存储多次,则该仓库被认为具有高冗余。

用于基于特征信息优化的参数可以包括文件重新出现的次数、存储成本、网络成本、操作成本、镜像-到-层的边的数目、文件的数目、层-到-文件的边的数目,镜像-层-文件路径的数目、镜像中的层数等等。

在一个实施例中,方法400为下面要详细讨论的每个参数分配一个变量。例如,α可以代表每个镜像的层数,β可以代表存储冗余,γ可以代表网络和/或客户存储冗余,等等。在一个优选方法中,方法400以本领域已知的任何方式跟踪和/或存储每个参数的历史数据。在一个方法中,每个参数的历史数据存储在表中。方法400可以周期性地、持续地、手动地、响应于一个或多个参数的变化等更新节省计算。

在各个方法中,用于优化的参数可以包括对优化的触发器。优化触发器可以按需、响应于存储使用增大至高于一个预定阈值、响应于重复文件增大至高于一个预定阈值、响应于每个镜像的层数增大至高于一个预定阈值等而触发优化。可以由用户、管理员、容器仓库、服务提供者、内容提供者等定义任何预定阈值。可以在查找表中找到这里公开的预先确定的值。可以从用户、管理员、容器仓库、服务提供者、内容提供者等接收需求。

操作408包括基于用于优化的参数生成成本函数。在一个优选实施例中,成本函数使用由镜像解析器生成的包括容器镜像和文件的矩阵的输出。可以使用包括要优化的容器镜像集合和/为优化选择的任何参数(例如,带有任何关联变量)的任何输出,生成成本函数。

在一个优选实施例中,成本函数包括下面描述的至少一些实施例。

镜像集合可以由I表示,层集合可以由J表示,文件集合可以由K表示。E是对(i,k)(i∈I∈K)集合,其中,镜像i包括文件k。由g

可以定义成本函数来最小化与上面定义的参数相关联的成本的加权组合。在一个优选实施例中,成本函数至少包括由下式定义的存储、网络和操作成本:

成本=α*操作+β*存储+γ*网络

操作成本对镜像-至-层的边的数目进行计数,并以镜像频率f

操作=∑

存储成本对文件和/或层-至-文件的边的数目进行计数,并以文件尺寸g

存储=∑

网络成本对镜像-层-文件路径的数目进行计数,并以镜像频率g

网络=∑

在一个实施例中,生成成本函数以满足镜像的文件需求。可以生成成本函数,使得∑

在一个实施例中,生成成本函数,使得镜像不包含该镜像不使用的任何层。可以生成成本函数,使得

在一个实施例中,生成成本函数,使得镜像不包含该镜像不使用的任何文件。可以生成成本文件,使得y

在另一个实施例中,限制成本函数,使得当文件出现在所得到的镜像中的层堆叠时,文件的顺序由文件的原始顺序约束。

在一个优选实施例中,成本函数是基于上面描述的因素的任何组合的。根据一个实施例,成本函数可以基于从操作成本、存储成本和网络成本选择的因素。

在一个替换实施例中,基于上面描述的成本函数使用贪心算法执行优化。在一个方法中,贪心算法开始于一个空的层集合,并基于E中的需求来构造层。在一个优选方法中,该算法不使用现有仓库结构中的层。该算法以随机顺序考虑所有文件,对于每个文件,考虑需要该文件的所有镜像。

在一个方法中,对于每个镜像,该算法或者创建新的文件,或者维护原始文件。该算法根据直至该点的解决方案的状态,考虑每个可能的动作的成本。在一个方法中,有五种可能的情况,包括:情况1:增加镜像-层连接,情况2:增加层-文件连接,情况3:什么都不做,情况4:增加镜像-层和层-文件连接,情况5:增加新层和镜像-层和层-文件连接。

对于情况1,算法考虑使用在前一步骤创建的、包括当前文件但还未由镜像引用的现有层l。情况1可以增加一个从镜像到l的新边。在情况1中,操作成本响应于增加一个镜像-至-层的边而增加1,存储成本保持不变,网络成本取决于已经包含在l中的文件。如果镜像i连接到层l,镜像i服务于额外的文件。如果额外的文件由镜像i使用,则不对该额外的文件计数。否则,会不必要地创建过多的文件。

在一个优选实施例中,算法采取具有最低成本的动作。

在一个方法中,算法可以延伸到跳过创建不正确的重新排序的边。

在一个优选实施例中,成本函数输出新结构以基于该成本函数优化容器仓库中的至少两个容器镜像。

操作410包括基于成本函数优化容器仓库中的至少两个容器镜像。在一个优选方法中,基于成本函数优化容器仓库中的至少两个容器镜像减少在每个容器镜像、容器镜像集合和/或容器仓库中的文件的冗余。

在一个优选实施例中,优化容器仓库中的容器镜像包括计算减少容器镜像中的冗余的新层。

在方法400的一个示例中,采用操作402中的容器仓库的特征信息生成用于容器仓库的镜像-至-文件需求矩阵。操作404可以基于来自管理员的请求和/或基于管理员的偏好,选择矩阵中的镜像子集。选择参数α、β和γ,并优化镜像子集。优化可以替换原始层,并重构仓库,使得文件的冗余减小。响应于该优化,可以存储优化的输入/输出以供将来的优化。优化的输入/输出可以以本领域已知的任何方式存储。在一个优选方法中,优化的输入/输出可以存储在表中。

在方法400的另一个示例中,管理员可以生成配置值的集合C,C={{max

在方法400的又一个示例中,在第一种情况下,可以按照上面描述的第一个示例中设置的来重构仓库。可以基于系统资源、容器镜像中的镜像的类型、历史数据等推荐将来的配置。存储受约束的系统受益于更大的存储容量减少(例如,增大的最大值)。在第二种情况下,可以根据上面描述的第二个示例重构仓库。在每次重构仓库时,可以减少配置值。可以基于之前的用于相同或者实质相同的系统和/或具有实质相同的资源的系统的重构,选择配置值。在这两种情况下,可以存储优化的输入/输出以供将来的优化。优化的输入/输出可以以本领域已知的任何方式存储。在一个优选方法中,优化的输入/输出可以存储在表中。

在一些实施例中,可以在优化容器镜像之间推入一些容器镜像。在一个方法中,可以维护由容器镜像引用的层的副本,使得对应的被推入的容器镜像不受优化影响。在另一个方法中,可以用客户请求上的更新的结构在本地更新镜像。该请求可以是明确的,或者是由于针对现有镜像的推入。在优化之前拉出并在优化之后带有额外的层被推入的镜像使用新的(只读)层来避免仓库缓慢存储以前的层。在镜像在优化之前被拉出并且在优化之后带有额外的层被推入的情况下,客户端可以拉出用于镜像的更新层(例如,不包括新层),然后增补新层。在一些实施例中,在这种情况下的拉出和增补可以在推入时自动发生。

现在参考图5,显示了根据一个实施例的方法500的流程图。在各个实施例中,可根据本发明在图1-4和图6-7中所描绘的任何环境中执行方法500。当然,如本领域技术人员在阅读本描述时将理解的,比图5中具体描述的那些更多或更少的元件可以包括在方法500中。

方法500的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各个实施例中,方法500可以部分地或者全部由计算机或其中具有一个或多个处理器的一些其他设备执行。以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理器(例如,处理电路、芯片和/或模块)可以在任何设备中使用,以执行方法500的一个或多个步骤。例示性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。

如图5所示,方法500包括操作502。操作502包括接收容器镜像中的至少两层中的每一层的构成。在一个优选实施例中,该至少两层中的每一层的构成包括至少一个文件。

可以根据本领域已知的任何方式确定容器镜像中的至少两层中的每一层的构成。在一个方法中,可以解析容器镜像以确定容器镜像的构成。在一个实施例中,镜像解析器可以将容器镜像解析成层和文件。

操作504包括映射该至少两层的构成之间的重合。镜像解析器可以生成哪些层包括哪些文件的映射。在一个实施例中,镜像解析器生成容器镜像中的层和/或层中的文件之间的重合的映射。在一个示例中,层1包含文件X、文件1、文件2、…直至文件99。层2包含文件1、文件2、…直至文件99和文件Y。映射可以显示出,层1和层2位于同一容器镜像中,在层1和层2之间文件1-99重合。如本领域普通技术人员在阅读了本公开之后所理解的,重合可以指数据、文件、层、镜像、仓库等中的任何冗余。

操作506包括基于重合估计容器镜像中的冗余。在这里描述的各个实施例中,冗余指的是层内和/或容器镜像内的文件的冗余。例如,如果镜像内的几个层包括相同文件并且这些文件在容器镜像内存储多次,则认为容器镜像具有高冗余。在一个优选实施例中,可以基于容器镜像中的至少两层中的每一层的构成中的重合来估计冗余。在一个实施例中,可以基于文件再次出现的次数来估计冗余。可以以本领域已知的任何方式估计冗余。

操作508包括计算减少容器镜像中的冗余的新层。在一个优选实施例中,计算减少容器镜像中的冗余的新层包括根据上面描述的实施例生成成本函数。在一些方法中,计算出的新层替换容器镜像中的原来的至少两层。

在一个实施例中,如上面详细描述的,为与具有该容器镜像的容器仓库中的其他容器镜像相比相对频繁地访问的容器镜像计算新层。

在另一个实施例中,如上面详细描述的,不为具有相对更高质量的容器镜像计算新层。

图6是根据各个实施例的示例性优化的示意图。在各个实施例中,可根据本发明在图1-5和图7中所描绘的任何环境中实现优化600。当然,如本领域技术人员在阅读本描述时将理解的,比图6中具体描述的那些更多或更少的元件可以包括在优化600中。

在一个优选实施例中,可以根据上面详细描述的方法400来执行优化600。如图所示,包括镜像1和镜像2的容器仓库具有高冗余,其中,文件1-99同时存储在镜像1和镜像2中。镜像2具有高冗余,因为镜像2包括层1和层2并且文件1-99同时存储在层1和层2中。根据上面描述的各个实施例,层X、层A和层Y是计算出的新层,其替换层1和层2。当文件在容器仓库和容器镜像内的存储都不超过一次时,容器仓库和容器镜像被优化。

图7是根据各个实施例的示例性优化的示意图。在各个实施例中,可根据本发明在图1-6中所描绘的任何环境中实现优化700。当然,如本领域技术人员在阅读本描述时将理解的,比图7中具体描述的那些更多或更少的元件可以包括在优化700中。

在一个优选实施例中,可以根据如上面详细描述的方法500执行优化700。在文件1-99同时存储在镜像1和镜像2中时,容器镜像具有高冗余。根据上面描述的各个实施例,层X、层A和层Y是计算的新层,替换层1和层2。当文件在容器镜像内的存储都不超过一次时,容器镜像被优化。

本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质,所述计算机可读程序指令用于使处理器执行本发明的各方面。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

此外,根据各种实施例的系统可以包括处理器和与处理器集成和/或可由处理器集成的逻辑,该逻辑被配置为执行本文所述的过程步骤中的一个或多个。所谓与其集成,是指处理器具有与其一起嵌入的逻辑作为硬件逻辑,诸如专用集成电路(ASIC)、FPGA等。通过可由处理器执行,意味着逻辑是硬件逻辑;软件逻辑,例如固件、操作系统的一部分、应用程序的一部分;等等,或者硬件和软件逻辑的某种组合,其可由处理器访问并且被配置成使处理器在由处理器执行时执行某种功能。软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上,如本领域所公知的。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。

很清楚,前述系统和/或方法的各种特征可以以任何方式组合,从而从以上所呈现的描述中产生多个组合。

还应当理解,本发明的实施例可以以代表客户部署的服务的形式提供,以便按需提供服务。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号