一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

带有布局管理器系统的容器管理系统的制作方法

2022-02-22 10:27:45 来源:中国专利 TAG:

带有布局管理器系统的容器管理系统


背景技术:

1.用户常常依赖于诸如应用和服务之类的计算资源来执行各种计算任务。分布式计算环境可以支持构建、部署和管理应用和服务。用户和企业正在摆脱传统的计算环境,而在分布式计算环境中运行他们的应用和服务。分布式计算环境实现了操作系统(os)级虚拟化(例如,容器管理系统),以支持分布式计算环境中的多个隔离的计算实例。
2.举例来说,具有容器引擎(例如,docker)的容器管理系统(或平台)可以支持在称为容器的包(package)中开发和交付软件。容器是从指定它们的精确内容的镜像被创建的。特别地,可以使用容器管理系统来支持(例如,管理、创建、挂载和访问)容器,容器管理系统包括被集成并通信以提供容器功能性的数个组件。常规的容器管理系统主要支持具有传统的容器镜像布局的容器镜像。例如,传统的容器镜像布局可以包括磁盘上的目录树结构,这会导致容器管理操作效率低下。随着分布式计算环境对应用和服务的支持越来越多,重要的是提供用于有效创建和管理容器资源的操作以改进计算操作,特别是改进分布式计算环境中用于资源隔离功能性的计算操作。


技术实现要素:

3.本文描述的技术的各方面一般涉及系统、方法和计算机存储介质等,其用于在合成镜像中提供通用平面文件集等,合成镜像可以作为容器(即,合成容器)被挂载以支持计算资源的隔离和互操作。特别地,基于合成镜像文件系统引擎(即,合成镜像文件系统“cimfs”的api)为容器管理系统提供容器管理。合成镜像文件系统引擎(“合成引擎”)提供各种各样的合成镜像文件系统引擎操作(“合成操作”),这些操作被执行以支持资源隔离和操作系统(os)虚拟化功能性。例如,docker平台(容器管理系统)可以与文件系统(即,cimfs)的组件(例如,api和合成操作的机器代码)集成。api可以支持cimfs的不同类型的功能性,诸如,生成(例如,经由容器引擎接口)不同类型的cimfs镜像(即,基本合成镜像、具有共享功能性的合成镜像、具有预计算哈希的合成镜像、或具有预对准的可执行文件的合成镜像)。api和容器引擎接口可以进一步支持与容器引擎一起执行针对容器管理的合成操作,包括挂载不同类型的cimfs镜像以及与支持从不同类型的cimfs镜像进行访问或执行的驱动(即,远程接口或客户端接口)通信。
4.在高层,合成操作被集成到容器管理系统中,以使得合成引擎可以实现合成镜像(即,平面文件镜像)的多用途特征(例如,容器引擎接口、远程共享管理器、和布局管理器系统)。合成引擎可以是为合成镜像文件系统“cimfs”定义逻辑(即,算法或指令)的库。这个库定义了调用cimfs的具体行为的接口,其中这些行为包括关于如何在合成镜像中创建和访问通用平面文件集的指令。该逻辑包括可以使用cimfs的结构(例如,平面文件和命名空间)执行的操作(或指令)。合成引擎是被共享的(即,不是专门的内核模式或用户模式),而是可以通过资源隔离和虚拟化的多个配置被使用,多个配置彼此之间可能没有不同类型的连接。合成引擎被组织起来,因此它可以被不知道库的细节的独立程序或子程序重用,而接口句柄提供cimfs功能性(例如,挂载、共享和访问不同的资源)。
5.在操作中,合成引擎对不同配置和不同主机环境中的合成镜像执行合成操作。特别地,合成引擎提供了各种各样的合成操作,这些操作被执行以支持资源隔离和操作系统虚拟化功能性。合成引擎包括数个不同的组件,包括:容器引擎接口、远程共享管理器、布局管理器、和附加的api(即,远程接口和布局管理器客户端接口)。不同的组件可以被集成到容器引擎或主机(或主机驱动或接口)中以提供本文描述的功能性。这样,本公开中描述的技术方案的若干方面针对的是基于合成引擎来改进容器管理系统中的容器管理。合成引擎、容器引擎接口、远程共享管理器、布局管理器和附加api(即,远程接口和布局管理器客户端接口)提供了合成镜像和合成容器的高效创建和管理,以改进分布式计算环境中的资源隔离功能性。
6.本发明内容被提供以简化的形式介绍在下面的具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用来帮助确定所要求保护的主题范围。
附图说明
7.下面参考附图对本文描述的技术进行详细描述,其中:
8.图1a是用于使用合成镜像文件系统引擎来提供合成操作的示例容器管理系统环境的框图,适用于实现本文描述的技术方面;
9.图1b是适用于实现本文描述的技术方面的示例合成(平面文件)镜像的框图;
10.图2a是根据本文描述的技术方面的用于使用合成镜像文件系统引擎来提供合成操作的示例容器管理系统环境;
11.图2b是根据本文描述的技术方面的用于使用合成镜像文件系统引擎来提供合成操作的示例容器管理系统环境;
12.图3a提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
13.图3b提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
14.图4a提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
15.图4b提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
16.图5a提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
17.图5b提供了根据本文描述的技术方面的使用合成镜像文件系统引擎来提供合成操作的示例方法;
18.图6提供了适用于实现本文描述的技术方面的示例容器管理系统环境的框图;
19.图7提供了适用于实现本文描述的技术方面的示例分布式计算环境的框图;和
20.图8是适用于实现本文描述的技术方面的示例计算环境的框图。
具体实施方式
21.技术问题、技术方案和技术改进方面的概述
22.分布式计算环境实现资源隔离和操作系统(os)级虚拟化(例如,容器管理系统),以支持分布式计算环境中的多个隔离计算实例。作为背景,容器管理系统(或平台)(例如,docker)可以支持在称为容器的包中开发和交付软件。容器一般是相互隔离的,并且捆绑了它们自己的软件、库和配置文件;然而,它们可以通过定义明确的渠道相互交流。容器由单个操作系统内核运行,而这比虚拟机更轻量级。单个服务器或虚拟机可以同时运行数容器。容器是从指定它们的精确内容的镜像被创建的。特别地,可以使用容器管理系统来支持(例如,管理、创建、挂载和访问)包括数个组件的容器,数个组件进行通信以提供容器功能性。
23.常规的容器管理系统主要支持具有传统容器镜像布局的容器镜像,该布局包括在容器管理操作中引入低效率的目录树结构。特别地,经典的容器镜像包括容器的各层,其中这些层由布置在主机文件系统上的各文件组成。在实现经典容器镜像(例如,经由压缩的.tar文件)时,各文件被提取。传统上,层是树结构中文件的目录层次结构,这些文件从.tar中被缓慢提取并存储在磁盘上。容器管理可以包括对容器镜像的操作,包括对支持容器镜像的主机操作系统施加压力的容器镜像提取、操作和访问。例如,当容器提取缓慢时,这可能导致容器管理系统中的容器初始化和其他操作的瓶颈。这样,用于提供可以无延时地提供提取、操纵和访问容器管理操作的容器管理系统的替代方法会改进计算操作以实现更有效的资源隔离和操作系统虚拟化功能性。
24.本发明的实施例针对一种简单有效的方法、系统和计算机存储介质,用于在合成镜像中提供通用平面文件集,合成镜像可以作为合成容器被挂载以支持计算资源的隔离和互操作。特别地,基于合成镜像文件系统引擎(即,合成镜像文件系统“cimfs”的api)为容器管理系统提供容器管理,合成镜像文件系统引擎提供各种各样的合成镜像文件系统引擎操作(“合成操作”),这些操作被执行以支持资源隔离和操作系统(os)虚拟化功能性。合成引擎包括数个不同的组件,包括:容器引擎接口、布局管理器、和合成引擎远程接口。不同的组件可以被集成到容器引擎或主机中以提供本文描述的功能性。
25.举例来说,容器引擎(例如,docker)可以支持api和机器代码,api和机器代码提供合成操作,以用于到主机的合成引擎接口、用于合成镜像的不同布局、并且用于支持cimfs的远程接口。具体来说,cimfs与合成镜像一起操作,合成镜像是表示整容器镜像的平面镜像,并且合成镜像也是由多个平面文件组成。进一步,合成镜像可以在不同类型的配置和不同类型的计算“主机”环境中实现,如下文更详细讨论的。在这方面,具有cimfs和合成镜像的容器管理系统可以更高效地运行(在几种不同的配置和计算环境中),以满足对资源隔离和操作系统虚拟化的不同计算需求。
26.在操作中,容器引擎接口支持创建、挂载合成镜像或合成容器,以及(经由容器引擎)提供到合成镜像或合成容器的访问并且从合成镜像或合成容器提供访问。合成镜像和合成容器基于容器镜像布局,容器镜像布局被设计为支持平面文件(即,通用平面文件集)。合成引擎接口可以进一步支持生成合成镜像时的分层和重复数据删除。远程共享管理器与合成引擎接口一起操作以支持生成合成镜像,合成镜像被配置用于拆分层存储器共享、拆分层直接存取存储器共享、或动态基础镜像。基于远程共享管理器功能性生成的合成镜像与远程接口(例如,主机驱动)一起操作,远程接口支持容器管理系统环境的组件(即,容器、
vm和主机)之间的共享功能性。远程接口支持在不同的计算环境(即,主机环境)中访问合成镜像和实现合成文件系统功能性。远程接口(例如,主机计算机上的合成引擎api)允许容器引擎与不同类型的主机环境配置和功能性一起操作。远程接口提供操作,这些操作支持拆分层存储器共享、拆分层直接存取存储器、以及其他类型的合成镜像和功能性。
27.布局管理器系统包括布局管理器和布局管理器客户端接口。布局管理器与合成引擎接口一起操作,以支持为可执行文件生成具有优化配置(即,预对准和预计算哈希)的合成镜像。基于布局管理器功能性生成的合成镜像(例如,优化的合成镜像)与布局管理器客户端接口一起操作,布局管理器客户端接口在合成镜像作为合成容器被挂载时支持实现优化的配置。此外,布局管理器支持生成合成镜像,同时对准镜像中的可执行代码。布局管理器还支持预计算二进制的哈希,以使得预计算哈希被用来验证主机上的二进制文件。可以使用主机计算机上的布局管理器客户端来访问镜像,该镜像包括对准的可执行代码和预计算哈希之一或其二者。布局管理器客户端接口进一步支持使用预计算哈希来执行预对准的可执行代码并验证二进制文件。这样,合成引擎、容器引擎接口、远程共享管理器、布局管理器以及附加的api和机器代码(即,远程接口和布局管理器客户端接口)提供了合成镜像和合成容器的高效创建和管理,以改进分布式计算环境中的资源隔离功能性。
28.使用合成引擎来提供容器管理的示例环境概述
29.技术方案的各方面可以通过示例的方式并参考图1a、图1b、图2a和图2b来描述。最初参考图1a,图1a公开了合成引擎10和主机20的容器管理系统环境100(即,技术方案环境“容器管理系统”),合成引擎10具有容器引擎接口12、远程共享管理器14和布局管理器16,主机20具有远程接口14x、布局管理器客户端接口16x,运行合成引擎10x的实例的容器引擎30。容器管理系统可以具有与参考图6在本文中描述的容器管理系统环境600对应的特征和功能性。
30.在高层,可以将合成镜像中的通用平面文件集挂载为合成容器,以支持计算资源的隔离和互操作。特别地,基于执行以支持资源隔离和操作系统(os)虚拟化功能性的合成引擎的合成操作,容器管理被提供给容器管理系统。合成引擎包括以上数个组件,这些组件被集成到运行容器引擎的主机中以提供本文描述的功能性。
31.合成引擎接口
32.合成引擎接口12负责管理合成操作,包括创建、挂载合成镜像或合成容器,以及(使用容器引擎)提供到合成镜像或合成容器的访问并且从合成镜像或合成容器提供访问。合成镜像和合成容器基于被设计为支持平面文件(即,通用平面文件集)的容器镜像布局。合成引擎接口12负责将合成镜像创建为平面文件镜像。合成镜像(即,平面文件镜像)表示由通用平面文件集组成的容器,这些文件包括一个或多个对象id文件、一个或多个区域文件、一个或多个元数据(文件系统)文件。区域文件包含文件元数据和用于镜像的数据的编码,称为对象存储库。每文件都可以被存储为文件对象和文件的内容。每个目录都可以被存储为文件对象加上一个目录条目列表,诸如此类。不同的区域类型被存储在不同的文件中,那么一些区域文件存储元数据,一些存储页面对准的文件数据(对于较大的文件),而一些存储未对准的文件数据(对于小文件)。
33.对象指针可以被存储为“区域偏移”。例如,区域偏移可以包括到区域文件中的48位字节偏移和16位区域索引。因此,最多可以有65535个区域,然而可以用每种类型最多一
个区域文件来创建新创建的镜像。对象id文件可以包含从每个区域对象的sha512摘要到其区域偏移的映射。这些在镜像构建期间被用于对数据进行重复数据删除:如果正在添加新对象,并且该对象已经存在于相同类型的现有区域中(通过在对象id文件中查找其摘要而确定),则该对象不需要再次被持久化并且可以在其现有的区域偏移处被引用。在运行时不使用对象id文件。文件系统文件包含文件系统对象的区域偏移,这包含文件表目录的区域偏移、根目录的文件id、以及用于字符串大小写比较的大写表的区域偏移。参考图1b,图1b包括具有上面讨论的对应特征的合成(平面文件)镜像110的图示。合成平面文件镜像110包括对象存储库120和对象id 130。对象存储库120还包括元数据120a和数据120b。在一些实施例中,对象存储库可以包括元数据140、小数据150、大数据160,元数据140具有区域类型142和144,如上面所讨论。
34.合成引擎接口12(例如,经由合成引擎接口10x)还负责将合成镜像挂载为合成容器(或文件系统)。合成引擎接口12(即,作为挂载驱动)执行挂载操作,挂载操作为合成镜像创建文件系统实例(即,合成容器)。文件系统(即,作为合成容器挂载的合成镜像)被创建为它自己的卷,而合成容器仍然可以访问主机文件系统卷。具体地,合成引擎接口12可以是应用编程接口(api),其可以被用来将合成镜像挂载为合成容器。合成引擎接口支持将合成镜像作为合成容器提供,而以前,经典的容器镜像文件只是被简单地挂载到主机上文件系统的某个位置。
35.通过比较的方式,基于每种类型的容器如何被写入(即,随机写入与顺序写入)的差异,可以将经典容器镜像与合成容器区分开来。经典容器镜像是使用树数据结构在磁盘上使用随机位置分配写入的。与挂载合成镜像时支持的顺序写入相比,基于树的写入固有地慢。在挂载合成镜像时依次执行对磁盘写入文件,以提高所写区域文件的速度。
36.然后,在作为合成容器(文件系统)挂载时的合成镜像可以具有与在其对应的树结构中暴露的文件系统相关联的文件。树结构被存储为元数据,元数据在合成容器上被访问以在树结构中显示文件,即使文件在磁盘上是“平面的”。元数据文件包括目录树结构并指向区域文件中存储数据的位置。元数据可以包括文件属性、时间戳和扩展属性。这与包括数据的区域文件形成对比;但是元数据指向数据在区域文件中的位置。合成引擎接口12读取依次写入的合成镜像文件和目录结构元数据,以经由接口将文件以树状结构格式呈现给用户。有利地,当以树结构格式呈现时,文件在磁盘上不被更改(即,保持顺序)。
37.分层
38.合成引擎接口12还可以支持分层(layering)或更改或分层合成(或平面)镜像,其中现有的合成镜像可以通过添加另外的区域文件来更改或扩展。通过创建从现有区域文件到新位置的链接并扩展现有区域,可以使用旧的平面镜像作为基础来构建新的平面镜像。分层支持合成文件的可移植性,因为不必从头开始创建新的合成镜像。可以使用现有的合成镜像来添加.net层。分层支持合成镜像的模块化特征,其中合成镜像(例如,元数据、小数据或大数据)可以从其他合成镜像附加或分离。对合成镜像进行分层包括将更多区域文件添加到现有的区域文件集中,这些文件可以被合成为新的分层合成镜像。对于已经具有第一文件集的第一合成镜像,可以合并第二文件集以生成第二“分层”合成镜像。第二合成镜像有新的文件集可以被引用,新的文件集可以在挂载第二分层合成镜像时作为分层合成容器来操作。添加的文件集可以包括新的卷、新的文件、目录,它们与原始的文件集集成或独
立操作。特别地,新合成文件的元数据文件可以包括树结构以支持访问第一合成镜像文件和第二合成镜像文件。
39.举例来说,客户想要为.net框架创建新的合成镜像。客户已经拥有.net框架可以使用的基础。替代于从新的合成镜像开始并构建基础层并然后添加.net框架层不同,客户可以将.net框架作为其自己的公共(合成镜像)文件集,然后通过合并基础层和新的.net框架的通用平面文件集来“合成”新的分层合成镜像。分层提高了可移植性,因为可以根据需要重用基础层(通用平面文件集)。分层还改进了存储空间的使用方式,因为可以在仅使用基础层的合成容器和使用基础层和.net框架层的另一合成容器之间共享该基础层。在这方面,合成镜像可以被描述为可堆叠的,因为合成镜像可以由完全不同的单独模块部分组成。单独在基础层上或在.net框架和基础层上保持对该公共(平面)文件集的不同层进行分层(例如,app层)是可能的。
40.随着层的增加,每个新层的元数据层至少存储前一层中文件的一些元数据。虽然基础层元数据文件可能只知道它的通用平面文件集,但是.net框架层的元数据可以理解第一层和第二层。.net框架元数据文件可以使用指针来跟踪来自每个不同层的文件的位置。可以使用第二层的元数据来构建目录结构以查看第一层和第二层。每个额外的堆叠层都有元数据文件,用于管理指向前一层的更多指针和引用。
41.另外,单个镜像可以包含任意数量的文件系统;这允许将容器和vm镜像组合到共享区域集中。为了更改现有的文件系统(例如,在提取容器镜像层时),修改后的文件和目录被添加到新的区域文件。为了引用这些新的文件,现有目录以写时拷贝的方式被更新,方法是将它们带着修改拷贝到新区域文件中。根目录最终被更新,并且新的文件系统对象被构建以引用它。最后,可以写入指向这个新对象的新文件系统文件。替代地,通过使用现有的区域文件但从空的根目录开始,可以构建对等文件系统。在对等文件系统之间共享的任何数据将通过对象哈希文件进行重复数据删除,但不需要在文件系统目录树内进行共享。
42.重复数据删除
43.有利地,如所提到,分层可以帮助节省存储空间,因为层之间通用的文件被进行重复数据删除。例如,基础层中已存在的.net框架中的文件不会被添加到合成镜像中。指针被存储在元数据中,那么可以共享文件。重复数据删除指的是合成引擎接口12知道合成镜像中已经存在什么文件(例如,使用跟踪机制)以及添加指向需要共享的文件数据的指针的能力。当.net框架层与基础层合并时,可能会发生重复数据删除。这对于往往有数个通用小文件的容器文件系统特别有用。
44.分享
45.合成引擎接口可以支持共享合成镜像文件,并且可以与运行在主机计算机上的远程接口一起操作。远程接口可以指合成引擎api、机器代码、或驱动和驱动组件,这些驱动和驱动组件被添加到主机计算机处的组件或程序中以支持理解和使用cimfs,如下文更详细讨论的。转到图2a和图2b,图2a和图2b中的每一个公开了容器管理系统(例如,容器管理系统环境100,其中可以执行本发明的特征(例如,容器镜像“cim”层卷、容器镜像文件系统“cimfs”层、隔离点(silo)、过滤器、以及服务器消息块(smb))和功能性。特别地,图2a公开了具有cimfs层0卷210、cimfs层1卷220、主机卷230(包括cim层0 230a和cim层1 230b)、有过滤器242和文件系统暂用卷244的容器a 240,以及容器b 250、过滤器252和文件系统暂用
卷254。图2b公开了用于(基于管理程序的vm)具有cim层0 210b、cim层1 220b、主机磁盘230b、带有过滤器242b的访客vm 240b、cimfs层0卷262、cimfs层1卷264和smb客户端270a,以及有过滤器252b、cimfs层0卷266、cimfs层1卷260和smb客户端270b的访客vm 250b层。
46.在高层,合成镜像和cimfs可以用于两种不同类型的主机场景中。在第一主机模型中,图2a,主机支持基于进程的容器,其中该容器不挂载合成容器但该容器可以访问合成容器文件。基于进程的容器没有访客到主机转换框架;没有管理程序将这些操作系统虚拟化实例分开。这样,合成容器被挂载在主机计算机上,而容器(共享相同内核)可以访问合成容器(例如,使用主机上的远程接口)。在第二主机模型中,图2b,主机支持隔离的vm容器(经由基于管理程序的vm),合成镜像可以作为合成容器挂载(即,直接访问)在vm中,以避免具有对合成容器的区域文件的某些类型的数据请求的访客到主机转换。在这两种主机场景中,cimfs都可以支持文件共享。
47.拆分层存储器共享组件
48.作为背景,经典容器可以共享镜像(即,存储器共享)以节省存储空间。合成镜像可以以第一配置构建,以在单个合成镜像中有所有层。然而,合成镜像可以以第二配置构建,以使得每一层都有它自己的合成镜像(即,通用平面文件集)。第二配置被称为合成镜像的拆分层。当用拆分层来创建合成镜像时,存储器共享是可能的。出于操作系统虚拟化的效率目的,通常在同一主机上实现大量容器(即,存储器密度)。如果容器共享相同的基础层,则以有效的方式存储文件。例如,对于跨不同容器使用的单文件,单个页面仅被加载一次。举例来说,可以将.net框架层和app层组合在(通用平面文件的)单个合成镜像中,而不是具有基础层,每个合成镜像都有它自己的具有通用平面文件的层。公开各个层允许这些层跨合成容器共享存储器,因为如果不对层进行拆封,则容器引擎可能不知道让合成容器共享相同的平面文件。
49.运行合成引擎的容器引擎可以管理哪些合成容器正在使用特定层。容器引擎可能无法支持共享,因为当层没有被拆分为两个单独的合成容器时,容器无法共享相同的基础层。然而,如果层被拆分,则每容器都可以访问和共享相同的合成容器层。那么,第一容器可以打开第一文件,而第二容器可以访问和使用同一文件。拆分层存储器共享可以专门在主机计算机上操作,其中容器(基于进程的容器)使用通用内核;然而,在用户模式下,容器有自己的文件系统和隔离。
50.与在主机上运行的容器引擎一起操作的合成引擎接口可以支持拆分层存储器共享支持功能,以用于准备和使用与用于拆分层存储器共享的合成镜像集相关联的合成镜像。合成镜像集中的每个合成镜像具有对应的通用平面文件集。该实现包括每层具有单独的合成镜像。每个合成镜像可以作为只读文件系统设备被挂载,并且可以使用文件系统接口或驱动(例如,windows容器隔离文件系统“wcifs”过滤器驱动)来访问容器镜像中包含的文件和目录。例如,一个单独的合成镜像表示一个基础、.net和应用,那么每一层都作为其自己的卷而被挂载。那么,例如,第一合成容器可以仅使用基础层,而第二合成容器使用基础层(与第一合成容器共享)和.net层。这样,基于进程的容器能够共享相同的基础合成镜像和文件。这个实现并不排除在合成镜像中具有所有三层;然而,这个实现允许在合成容器之间共享。
51.举例来说,在运行时,合成镜像被公开为只读卷,并且wcifs使用该卷作为源镜像,
这类似于wcifs如何使用单层容器镜像。wcifs可以以这种方式操作,因为现有容器镜像的基础层对应于普通的文件系统镜像,没有特殊的元数据。有多种方法可以将此卷公开给容器,以便wcifs使用服务器消息块协议(例如,vsmb)。对于使用现有容器镜像格式的基于vm的容器,镜像文件经由用于合成设备的传输(例如,vmbus传输)通过smb协议被公开给vm。通过将平面镜像解析器链接到动态链接库“dll”(例如,vsmbdll),也可以这样公开合成镜像的内容。
52.拆分层直接存取存储器共享组件
53.作为背景,可以在需要提高虚拟机的安全性和隔离性的时候专门使用上面参考图2b讨论的第二主机模型,同时仍使用容器镜像(即,基于vm的容器或访客操作系统“os”)。在该第二主机模型中,每个访客os都有它自己的os内核(即,隔离的内核)。有时,这被称为轻量级vm(vm和容器之间的混合)。在访客os有其自己的内核的情况下,合成镜像的拆分层仍然被用于存储器共享。然而,这些访客os需要直接存取存储器共享。合成镜像可以支持使用文件共享接口(例如,vsmb客户端)的直接存取存储器共享。拆分层的区域文件可以在访客os上挂在的合成镜像上共享。
54.通过挂载在访客os内部的合成容器,存储在拆分层上的文件有改进的访问性能。通常,访客os可以通过服务器消息块“smb”客户端来访问拆分层,因为访客os必须在访客os到主机之间转换。访客os可以使用主机上的主机smb客户端来共享拆分层的存储器,主机smb客户端从访客os接收对拆分层中的文件的请求。该文件被映射到主机的存储器中,并且文件存储器直接与访客os共享。在这方面,主机和访客os可以使用拆分层的相同存储器(例如,页面)。即使访客os在操作上是隔离的,数个不同的合成容器也可以具有从主机直接映射到访客os中的拆分层存储器。
55.有利地,在此可以共享拆分层的区域文件。一旦合成容器挂载在访客os上,是合成镜像一部分的任何文件都可以被直接访问(存储器中)。特别地,建设性地映射到访客os中的元数据文件有其自己的虚拟空间,即,可以有效地访问存储在元数据文件中的信息而无需通过smb客户端。当被直接映射时,访问元数据文件要快得多,以消除各个文件级别的访客到主机转换。请注意,第一次访问元数据文件仍然必须用访客到主机转换来完成;但是在访客os上加载文件后,会直接访问元数据文件。任何是合成镜像文件的区域文件(例如,元数据)都被映射一次以提高读取效率。仍然需要通过smb客户端访问区域文件数据以获取各个数据。尽管如此,存储器中已有的任何文件(例如,热文件)都可以被快速访问,同时还避免了访客到主机转换。
56.合成引擎可以支持几种不同类型的远程接口,如共享所示。接口通常是指帮助程序或应用理解cimfs并与cimfs一起操作的合成引擎部分。举例来说,传统的基于vm的容器可能具有无法挂载合成镜像的访客os。例如,传统vm可能没有支持挂载合成镜像的驱动。在高层,可以为主机更新主机上的smb客户端(例如,vsmb)以支持挂载合成容器。smb客户端向访客vm公开合成容器。在这个配置中进行直接访问是不可能的,因为区域文件是使用smb客户端跨管理程序边界提供的。
57.在操作中,在运行时,合成镜像被公开为只读卷,并且wcifs使用该卷作为源镜像,这类似于wcifs怎么使用单层容器镜像。wcifs可以以这种方式操作,因为现有容器镜像的基础层对应于普通的文件系统镜像,没有特殊的元数据。有多种方法可以将此卷公开给容
器,以便wcifs使用服务器消息块协议(例如,vsmb)。对于使用现有容器镜像格式的基于vm的容器,镜像文件经由合成设备的传输(例如,vmbus传输)通过smb协议公开给vm。通过将平面镜像解析器链接到动态链接库“dll”(例如,vsmbdll),也可以这样公开合成镜像的内容。这种方法的优点是该方法可操作于传统容器镜像。这种兼容性对于确保平面镜像可以成为用于新容器主机的专有镜像格式很重要。主要的缺点是元数据操作仍然需要明确的访客到主机通信,所以观察到的性能改进有限。另外,这种方法仅适用于基于vm的容器,不适用于基于silo的容器。
58.此外,传统上,拆分层不是使用直接存取存储器在vm容器中实现存储器共享所必需的,因为该配置中的存储器共享处于镜像的区域文件级而不是处于镜像内的各个文件级。直接在主机上运行的容器通过共享各个文件来共享存储器,因此需要拆分层来增加共享各个层的机会。如果n-1层被拆分并挂载为各个cim卷,则使用层(1...n-1)的容器只能与使用相同镜像的层(1...n)的容器共享存储器。
59.相比之下,所有拆分层的合成镜像可以挂载在vm容器中,同时仍然使用那些层的子集与其他vm容器共享存储器。使用n-1层合成的容器可以与使用所有n层的另一个vm容器共享其所有层的存储器,因为它们都可以直接映射对应于相同n-1层的区域文件。举例来说,合成镜像可以被构建,以使得除了单独挂载每个拆分层之外,它还可以被挂载为n个拆分层的合成,它认为可以在基于主机和基于vm容器中使用相同的合成镜像来实现可选的存储器共享。在操作中,因为镜像可以被构建为拆分层的合成,所以每一层都有它自己的区域文件,这些区域文件可以直接跨vm边界进行映射。
60.动态基础镜像
61.合成引擎接口可以支持创建无数据镜像或动态基础镜像,并且可以与运行在主机上的远程接口一起操作以提供对无数据镜像的访问。合成镜像可以被构建为无数据镜像,因为通用平面文件集可以被包括在合成镜像中而不包括数据文件(例如,小数据或大数据)。相反,合成镜像使用通用平面文件集的元数据文件重定向到其他文件(例如,主机中的文件)。元数据文件可以是占位符文件。元数据文件已经被配置为指示文件在合成镜像的区域文件中的位置,这样,占位符文件可以被用来定位其他位置的文件。
62.通过上下文,基于进程的容器可能希望使用尽可能多的主机os(例如,内核文件)。合成镜像可以被用来缩小从主机os可见的范围。占位符文件可以用于容器以在容器和主机之间共享文件的副本。这避免了主机os的重复。主机可以有数个不同的命名空间供主机os共享一些主机os文件。命名空间允许容器以安全的方式访问来自主机os中与命名空间相关联的文件,而无需共享整个主机os。这样,合成容器基本上可以提供主机文件系统的受限视图。无数据镜像操作以减少磁盘空间和存储器使用,这样,镜像文件就不会被拷贝到本地合成容器卷中。无数据镜像的本质是它们不可改变,这样,内容的目录树就可以被预计算并被存储在元数据区域文件中。内容的预计算的元数据信息规避了数据文件的任何处理或存储。无数据镜像可以在主机上创建或在构建实验室中预先构建。合成容器在运行时访问元数据,以请求访问存储在元数据中的数据。为了读取请求,合成容器使用重解析点、主机文件系统来访问该读取请求的数据。
63.即使访客os可以使用与主机分离的其自己的基本镜像(例如,.net和app层),但在一些情况下,访客os可能需要主机os中的文件。主机os中的文件可以被赋予命名空间,并且
合成容器(无数据镜像)可以被映射到这个命名空间。那么,访客os挂载合成容器并使用合成容器(作为文件系统)访问主机os文件的命名空间。使用占位符的数据请求可以使用访客到主机转换来访问命名空间中的文件。
64.有利地,使用合成容器可以被用来虚拟地改变主机os文件的属性。元数据文件可以被用来改变文件名或路径,所以与主机os相比,通过合成容器文件系统访问文件的方式不同。例如,主机中的文件可以不受任何限制地可访问,但在容器或访客os上可以提高特定文件的安全性,并且只能对文件进行受信任的访问。可以使用合成容器中的元数据文件对文件进行其他类型的改变。
65.可执行镜像数据对准
66.布局管理器可以支持文件构建操作(例如,可执行镜像数据对准和代码完整性预计算)以创建合成镜像,并且合成接口引擎可以与运行在支持运行时功能性的主机上的远程接口一起操作。通过上下文,具有可执行代码的文件在磁盘(磁盘对准)上的存储(或布局)可以与在存储器中(存储器对准)不同。这被称为数据对准,即,数据的每个个体部分如何在磁盘上布局。磁盘上的数据对准可以与存储器中的数据对准不同。特别地,磁盘上(数据)对准可能小于存储器中(数据)对准,其中数据对准与可执行代码的节(section)相关联。例如,对于给定的字节数(例如,512字节)使用新页面。而如果一个节在页面中途停止,则页面的其余部分将被填充,并且在新页面上开始新的节。存储器管理器(例如,动态链接器)负责将存储器中文件从磁盘对准重新对准为存储器对准。
67.一方面,合成镜像具有许多可执行文件,并且以较小的页面对准方式来存储这些文件中的每一个可能是有益的。例如,基础os包括数个dll文件和.net框架,而app包括可执行文件,每次一个节在页面结束前结束时,每个可执行文件都有额外的填充。另一方面,磁盘上较小的页面对准最初是被设计为节省空间(例如,节省消费者机器上的空间)。目前,在商业场景中,关注点更多与执行计算操作的效率(例如,计算速度)一致。存储器管理器将文件从磁盘对准重新对准到存储器对准的操作效率低下,这并没有缓解效率问题。在商业环境中,绕过重新对准的优先级高于通过每页较小的磁盘对准所实现的存储收益。
68.合成文件被配置为具有与在将执行可执行代码的存储器的存储器对准相同的磁盘对准。磁盘对准可以比传统的磁盘对准更大,每个页面都有填充以满足磁盘对准要求。然而,因为当文件在存储器中被加载时文件不会被重新映射,从而实现了显著的效率。因为合成镜像中的文件已经处于存储器对准中,所以向存储器管理器传递指示以绕过从磁盘对准到存储器对准的映射。有利地,对于os虚拟化,改进了启动时间度量。那么,即使存储效率有所下降,启动时间也会有所改善,其中通常会出现瓶颈,因为存储器管理器会从磁盘对准重新对准到存储器对准。
69.在另一个场景中,合成镜像包括可执行图像(pe二进制文件)。pe二进制文件可以由若干报头和节组成,这些报头和段指示存储器管理器(例如,动态链接器,其在运行时加载可执行文件所需的共享库并将其链接到ram)如何将pe二进制文件映射到存储器。当pe被加载到存储器中执行时,每个二进制节都必须与二进制的节对准格式对准。例如,系统页面大小为4k。然而,当被存储在磁盘上时,这些节仅根据二进制文件的对准格式进行对准。例如,每节512个字节。当从磁盘加载二进制文件时,存储器管理器将二进制节从它们在磁盘上的位置读取到适当对准的存储器中。
70.这意味着,如果典型的二进制文件从其磁盘表示被直接映射到存储器中,则它不能就地执行而是需要被拷贝到新位置。对于现有的容器镜像格式,这不是问题;当容器需要用于二进制文件的镜像映射时,主机存储器管理器可以创建这种映射并将其提供给容器,从而在系统上的所有容器中对这种映射进行重复数据删除。
71.不过,对于合成镜像,这是一个问题,因为主机存储器管理器不能从区域文件的中间解析出pe二进制文件。换句话说,区域文件不可访问以访问pe二进制文件。各个文件系统驱动可以在运行时构建兼容的镜像映射,但很难在系统上的所有容器中进行重复数据删除。为了修复这个问题,pe二进制文件在平面镜像构建期间被解析并被存储在区域文件中,它们的节与节对准相对准,以使得二进制文件可以就地执行。以这种方式解析pe二进制文件不可能直接将二进制文件映射为数据文件,但是普通的数据读取可以通过在运行时逆展开来执行。这与现有方案之间的一个区别在于,主机将不再在将二进制文件映射到访客os之前就重新定位它们。
72.代码完整性
73.布局管理器可以支持文件构建操作(例如,可执行镜像数据对准和代码完整性预计算)以创建合成镜像,并且合成接口引擎可以与运行在支持运行时功能性的主机机器上的远程接口一起操作。合成镜像的代码完整性由对合成镜像中二进制文件进行预计算哈希而提供。预计算的哈希被存储在合成镜像中。预计算的哈希在合成容器中可访问以确保代码完整性。例如,预计算的哈希作为二进制文件的预计算的哈希扩展属性被提供给代码完整性(ci)驱动。以这种方式,对合成镜像的哈希绕过了对存储为二进制文件的扩展属性的验证结果的预缓存。
74.代码完整性是被用来验证os想要执行的二进制文件的os组件(例如,内核组件)。验证二进制文件是指验证该二进制文件已签名。不同的二进制文件有不同的签名要求(例如,核心系统状态与正常系统进程)。验证签名作为代码完整性的一部分可能具有挑战性。具体来说,必须读取整个可执行文件并生成该可执行文件的哈希。然后,使用二进制签名(例如,嵌入二进制文件的签名)来验证该哈希。在其他情形下,可以使用具有哈希列表的目录文件来代替。该二进制文件与被用来存储验证结果的扩展属性相关联。可以访问存储缓存验证结果的扩展属性(例如,在执行二进制文件之前)以避免执行昂贵的验证过程。
75.在主机中使用的容器通常不会长时间操作。另外,容器依赖于快速启动时间来快速提供容器(例如,应用或服务)所支持的功能性。主机机器操作以支持容器的方式无法充分支持常规pc文件系统缓存以实现代码完整性。对于现有的经典容器,为了缓解这个问题,每个二进制文件都经过预先验证,并将结果缓存在主机文件系统上。
76.对于合成镜像,为了代码完整性的缓存并不简单,因为缓存代码是在内核模式中进行的并且期望接收二进制文件的句柄;它不能对区域文件段(segment)进行操作。更糟糕的是,缓存代码需要访问目录文件以找到大多数容器镜像二进制文件的签名,并且在容器镜像导入期间无法经由普通文件系统api访问这些目录文件。而且即使对于经典的容器镜像,这种缓存方案也存在问题。存储缓存结果的扩展属性是版本化的,旧的访客os中的ci驱动可能无法解释主机ci驱动生成的较新的缓存结果。另外,ci驱动使用诸如usn日志id之类的各种系统输入来确定缓存的有效性,并且这些输入难以在容器和主机之间可靠地同步。
77.为了保持合成镜像可接受的ci性能,需要新的方案。不依赖于签名验证的完全预
缓存,只预计算每个二进制镜像的哈希并将其存储在合成镜像中,并经由新的扩展属性使其对容器ci驱动可用。在容器启动期间,ci驱动可以根据此哈希来验证二进制文件的签名,但它不需要访问二进制文件的每一页面或花费大量cpu时间来计算哈希。由于镜像哈希值在ci驱动版本之间是稳定的,容易计算,并且不需要因容器os状态的任何改变而被无效化,因此永远不需要在运行时计算镜像哈希。这个哈希计算负责大约85%的未缓存ci验证过程,因此它的预计算应该足以允许移除现有的预缓存方案。
78.而且一旦这种哈希加速的ci验证发生,ci缓存方案就可以在容器暂用卷上照常操作,因此给定二进制文件的后续使用不需要再次评估签名。仅在暂用卷上缓存是更可靠和正确的,因为它的失效语义只是容器操作系统状态的函数。
79.已经参考与容器管理组件(例如,具有合成引擎接口的合成引擎、远程共享管理器和布局管理器,其中合成引擎与远程接口和布局管理器客户端接口一起操作以提供本文描述的功能性)描述了本公开的技术方案的各方面。特别地,合成引擎用容器引擎为容器管理提供了合成操作,合成操作包括挂载不同类型的cimfs镜像以及与支持执行不同类型cimfs镜像的驱动(即,远程接口或客户端接口)通信。执行合成操作以支持资源隔离和操作系统(os)虚拟化功能性。总的来说,所描述的技术方案的若干方面的实际应用导致基于更少的cpu计算、更小的存储器需求、提高的容器管理效率和灵活性的改进。用于基于合成镜像文件系统引擎来提供容器管理的示例性方法
80.参考图3a、图3b、图4a、图4b和图5a以及图5b提供了流程图,其图示了用于基于合成镜像文件系统引擎来提供容器管理的方法。可以使用本文描述的容器管理环境来执行这些方法。在实施例中,其上包含计算机可执行指令的一个或多个计算机存储介质在由一个或多个处理器执行时可以使一个或多个处理器执行容器管理环境中的方法。
81.转到图3a,提供了图示方法300a的流程图,方法300a用于基于合成镜像文件系统引擎来提供容器管理。最初在框310处,接收用于生成合成镜像的多个文件。在框320处,生成多个文件的合成镜像。合成镜像包括通用平面文件集。在框330处,合成镜像被传递以引起合成镜像的挂载。挂载合成镜像是基于通用平面文件集中的元数据文件。
82.转到图3b,提供了图示方法300b的流程图,方法300b用于基于合成镜像文件系统引擎来提供容器管理。最初在框340处,访问合成镜像,从多个文件生成合成镜像。合成镜像包括通用平面文件集。在框350处,引起合成镜像的挂载,其中基于来自通用平面文件集的元数据文件来挂载合成镜像。挂载合成镜像进一步包括创建与用于该合成镜像的容器相对应的文件系统实例。在框360处,提供对通用平面文件集中的文件的访问。通用平面文件集被配置为基于用于通用平面文件集中的文件的树结构的元数据以树结构呈现。
83.转到图4a,提供了图示方法400a的流程图,方法400a用于基于合成镜像文件系统引擎来提供容器管理。最初在框410处,访问用于生成合成镜像的多个文件和选择用于生成合成镜像的远程共享配置。远程共享配置的选择是以下之一:拆分层存储器共享配置、拆分层直接存取存储器共享配置、或动态基础镜像配置。在框420处,生成用于多个文件的合成镜像。合成镜像包括通用平面文件集。合成镜像被生成为拆分层存储器共享镜像、拆分层直接存取存储器共享镜像、或动态基础镜像。在框430处,合成镜像被传递以引起合成镜像的挂载。挂载合成镜像是基于来自通用平面文件集的元数据文件和远程共享配置的选择。
84.转到图4b,提供了图示方法300b的流程图,方法300b用于基于合成镜像文件系统
引擎来提供容器管理。最初在框440处,访问合成镜像。合成镜像包括通用平面文件集。在框450处,确定合成镜像被配置用于远程共享配置的类型。远程共享配置的类型对应于以下之一:拆分层存储器共享配置、拆分层直接存取存储器共享配置、或动态基础镜像配置。在框460处,基于合成镜像的远程共享配置的类型,提供合成镜像以用于访问通用文件集中的文件。
85.转到图5a,提供了图示方法500a的流程图,方法500a用于基于合成镜像文件系统引擎来提供容器管理。最初在框510处,访问用于生成合成镜像的多个文件。在框520处,生成多个文件的合成镜像。合成镜像包括通用平面文件集。在框530处,生成多个文件的合成镜像包括:基于用于执行可执行文件的存储器的存储器对准,预对准多个文件中的一个或多个可执行文件。一个或多个可执行文件被存储在合成镜像中。
86.转到图5b,提供了图示方法500b的流程图,方法500b用于基于合成镜像文件系统引擎来提供容器管理。最初在框540处,访问用于生成合成镜像的多个文件。在框550处,生成多个文件的合成镜像。合成镜像包括通用平面文件集。在框560处,生成多个文件的合成镜像包括预计算多个文件中的一个或多个可执行文件的哈希。哈希被存储在合成镜像中。
87.示例容器管理系统环境
88.参考容器管理系统环境600(“容器管理系统”),其包括容器管理系统,容器管理系统用于执行本文描述的支持技术方案的功能性的实施例。容器管理系统包括容器管理系统的分布式组件,这些组件与实现技术方案各方面的其他集成组件相结合地通信而被实现。容器管理系统环境600是指支持技术方案功能性的硬件架构和软件架构。
89.在高层,容器管理系统(例如,docker)为在分布式计算系统中的称为容器的分装中开发和交付软件提供支持。容器是从指定精确内容的镜像创建的。特别地,可以使用容器管理系统来支持(例如,管理、创建、挂载和访问)容器,容器管理系统包括集成和通信以提供容器功能性的数个组件。例如,容器管理系统可以是平台即服务产品集,这些产品使用os级虚拟化来提供彼此隔离并与其自己的软件、库和配置文件捆绑在一起的容器。容器可以通过明确定义的渠道相互通信。容器可以通过单操作运行
90.继续参考图6,图6示出了具有根据本公开实现的组件的高级架构文件系统环境600。应当理解,本文描述的布置仅作为示例被阐述,并且可以预期所示出布置之外的其他布置。在未示出的其他组件中,容器管理系统包括容器引擎610、接口612、容器620(包括app622、.net 624、基部(base)628)和镜像630。容器管理系统进一步包括客户端640、合成650、注册表660、群集(swarm)670和操作系统680(包括计算服务682、控制组684、命名空间686、层能力688和其他os功能性690)。
91.容器管理系统可以支持具有特性的容器和虚拟机(vm),这些特性包括隔离环境、主机机器之间的可移植性、以及资源治理等。基于虚拟化级别(即,容器的os虚拟化与vm的硬件虚拟化相比)、os功能性(即,容器与其他容器和容器主机共享os内核模式,vm可以是全os并且有专用内核模式可用,以及架构模块化模型(例如,容器共享容器主机的底层资源并构建运行应用所需的镜像,而vm用全os并取决于应用精简功能性来构建),可以区分容器与vm。
92.容器管理系统可以支持操作系统的内核模式,该内核模式已经被实现用于需要对底层硬件具有不受限制的访问的驱动。容器管理系统还可以支持用户使用os api访问硬件
或存储器。在内核模式下运行的代码可以直接访问资源并与操作系统和其他内核驱动共享相同的存储器位置和虚拟地址空间。在用户模式下,代码在单独的进程(例如,用户空间)中运行,该进程具有它自己的专用存储器位置集(私有虚拟地址空间)。因为每个应用的虚拟地址空间都是私有的,所以一个应用不能更改属于另一个应用的数据。每个应用都是隔离运行的,如果某个应用崩溃,则崩溃仅限于该应用。
93.容器管理系统提供执行并运行应用的完整环境,包括具有计算服务、控制组、命名空间、层能力和其他os功能性的操作系统。容器管理系统还包括容器引擎,以基于命令和客户端接口来支持容器相关的动作。在操作中,容器引擎不断经由接口侦听api请求并对其进行处理。客户端可以与容器引擎(例如,客户端的命令行接口)交互,管理(例如,合成)容器实例。客户端向容器引擎发送命令以执行操作。
94.容器引擎可以包括管理镜像、容器、网络和存储卷的持久后台进程(例如,守护进程)。镜像可以参考可以构建容器的只读二进制模板。镜像可以用于存储和发送应用。镜像可以用于构建容器或被自定义以添加其他元素来扩展镜像的当前配置。容器是运行应用的封装环境。容器可以由镜像定义,并且在启动容器上提供了任何附加的配置操作,包括但不限于网络连接和存储选项。
95.容器引擎为隔离的容器组件和使用不同驱动的其他组件提供支持通信。例如,overlay驱动可以支持用于多个应用的swarm服务(即,集群和调度服务工具),或者当不需要网络隔离时,主机驱动移除容器之间的网络隔离。容器引擎包括提供位置的注册表,可以从这些位置存储和下载镜像(即,容器引擎注册表包含用于一个或多个镜像的仓库)。以这种方式,容器引擎和容器管理系统支持常规的资源隔离和操作系统虚拟化。
96.示例分布式计算环境
97.现在参考图7,图7图示了其中可以采用本公开实现的示例分布式计算环境700。特别地,图7示出了可以托管技术方案环境或其一部分(例如,数据受托人环境)的示例云计算平台710的高级架构。应当理解,本文所描述的这种和其他布置仅作为示例阐述。例如,如上所述,本文所描述的许多元件可以被实现为分立或分布式组件,或者与其他组件结合地实现,并且以任何合适的组合和位置来实现。除了所示的那些之外或代替所示的那些,可以使用其他的布置和元件(例如,机器、接口、功能、顺序和功能分组)。
98.数据中心可以支持分布式计算环境700,分布式计算环境700包括云计算平台710、机架720和机架720中的节点730(例如,计算设备、处理单元或刀片)。技术方案环境可以用云计算平台710来实现,云计算平台710跨不同的数据中心和地理区域来运行云服务。云计算平台710可以实现用于供应和管理云服务的资源分配、部署、升级和管理的结构控制器740组件。通常,云计算平台710用于以分布式方式来存储数据或运行服务应用。数据中心中的云计算基础设施710可以被配置为托管和支持特定服务应用的端点的操作。云计算基础设施710可以是公共云、私有云或专用云。
99.节点730可以配备有在节点730上运行定义的软件堆栈的主机750(例如,操作系统或运行时环境)。节点730还可以被配置为在云计算平台710内执行专门的功能性(例如,计算节点或存储节点)节点730被分配用于运行租户的服务应用的一个或多个部分。租户可以指使用云计算平台710的资源的客户。支持特定租户的云计算平台710的服务应用组件可以被称为租户基础设施或租屋。术语服务应用、应用或服务在本文中可互换使用并且泛指在
数据中心之上运行或访问数据中心内的储存器和计算设备位置的任何软件或软件部分。
100.当节点730支持不止一个单独的服务应用时,节点730可以被划分为虚拟机(例如,虚拟机752和虚拟机754)。物理机也可以同时运行单独的服务应用。虚拟机或物理机可以被配置为由云计算平台710中的资源760(例如,硬件资源和软件资源)和内容引擎762支持的个性化计算环境。可以设想,资源可以被配置用于具体的服务应用。此外,每个服务应用可以被划分为功能性部分,以使每个功能性部分能够在单独的虚拟机上运行。在云计算平台710中,可以使用多个服务器在集群中运行服务应用和执行数据存储操作。特别地,服务器可以独立地执行数据操作,但作为被称为集群的单个设备被暴露。集群中的每个服务器都可以实现为节点。
101.客户端设备780可以被链接到云计算平台710中的服务应用。客户端设备780可以是任何类型的计算设备,它们可以对应于参考图8所描述的计算设备800,例如,客户端设备780可以被配置为向云计算平台710发出命令。在实施例中,通过虚拟互联网协议(ip)和负载平衡器或将通信请求定向到云计算平台710中指定端点的其他部件,客户端设备780可以与服务应用通信。云计算平台710的组件可以通过网络(未示出)彼此通信,网络可以包括但不限于一个或多个局域网(lan)和/或广域网(广域网)。
102.示例操作环境
103.已经简要描述了本发明的实施例的概述,下面描述可以在其中实现本发明的实施例的示例操作环境,以便为本发明的各个方面提供一般背景。特别地,首先参考图8,示出了用于实现本发明实施例的示例操作环境并且通常将其指定为计算设备800。计算设备800只是合适的计算环境的一个示例并且不旨在暗示对本发明的用途或功能性的范围的任何限制。计算设备800也不应被解释为对所图示的任何一个组件或其组合具有任何依赖性或要求。
104.可以在计算机代码或机器可用指令的一般上下文中描述本发明,包括由计算机或诸如个人数据助理或其他手持设备之类的其他机器执行的计算机可执行指令,诸如程序模块。通常,包括例程、程序、对象、组件、数据结构等的程序模块是指执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种各样的系统配置中实践,包括手持设备、消费电子产品、通用计算机、更专业的计算设备等。本发明也可以在分布式计算环境中实践,其中任务由通过通信网络连接的远程处理设备执行。
105.参考图8,计算设备800包括直接或间接耦合下列设备的总线810:存储器812、一个或多个处理器814、一个或多个呈现组件816、输入/输出端口818、输入/输出组件820、和说明性电源822。总线810表示什么可以是一个或多个总线(诸如地址总线、数据总线或其组合)。为了概念清楚起见,图8的各个框用线示出,并且还设想了所描述的组件和/或组件功能性的其他布置。例如,人们可以将诸如显示设备之类的呈现组件视为i/o组件。此外,处理器具有存储器。我们认识到这是本领域的本质,并重申图8的图表仅仅说明可结合本发明的一个或多个实施例使用的示例计算设备。在诸如“工作站”、“服务器”、“膝上型电脑”、“手持设备”之类的类别之间不做区分,因为所有设备都是在图8的范围内并参考“计算设备”来设想的。
106.计算设备800通常包括各种各样的计算机可读介质。计算机可读介质可以是可由计算设备800访问的任何可用介质并且包括易失性和非易失性介质、可移动和不可移动介
质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
107.计算机存储介质包括以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字多功能性磁盘(dvd)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可以用于存储所需信息并且可以由计算设备800访问的任何其他介质。计算机存储介质本身不包括信号。
108.通信介质通常包含诸如载波或其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“调制数据信号”是指一种信号,其具有以编码信号中的信息的方式进行设置或改变的一个或多个特性。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、rf、红外线和其他无线介质之类的无线介质。上述任何一种介质的组合也应包括在计算机可读介质的范围内。
109.存储器812包括以易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的,或是二者的组合。示例性的硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备800包括从诸如存储器812或i/o组件820之类的各种实体读取数据的一个或多个处理器。(多个)呈现组件816向用户或其他设备呈现数据指示。示例性的呈现组件包括显示设备、扬声器、打印组件、振动组件等。
110.i/o端口818允许计算设备800逻辑耦合到包括i/o组件820的其他设备,其中一些可以是内置的。说明性组件包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、打印机、无线设备等。
111.结合本文所描述的技术方案环境,本文所描述的实施例支持本文所描述的技术方案。技术方案环境的组件可以是包括支持技术方案系统内的约束计算和/或约束查询功能性的硬件架构和软件框架的集成组件。硬件架构是指物理组件及其相互关系,而软件框架是指提供可以用在设备上体现的硬件来实现的功能性的软件。
112.端到端的基于软件的系统可以在系统组件内运行,以操作计算机硬件以提供系统功能性。在低层,硬件处理器执行从机器语言(也称为机器代码或本机代码)指令集中针对给定处理器选择的指令。处理器识别本机指令并执行对应的低层功能,低层功能性例如与逻辑、控制和存储器操作有关。用机器代码编写的低层软件可以为更高层软件提供更复杂的功能性。如本文所用,计算机可执行指令包括任何软件,包括以机器代码编写的低层软件、诸如应用软件之类的高级软件,及其任何组合。在这方面,系统组件可以管理资源并为系统功能性提供服务。可以设想本发明的实施例还由任何其他变化和组合。
113.举例来说,技术方案系统可以包括api库,api库包括例程、数据结构、对象类和可以支持设备的硬件架构和技术方案系统的软件框架之间交互的变量的规范。这些api包括用于技术方案系统的配置规范,以使其中的不同组件可以在技术方案系统中彼此通信,如本文描述。
114.已经确定了本文使用的各种组件,应当理解,可以采用任何数量的组件和布置来实现在本公开范围内的期望功能性。例如,为了概念清楚起见,在图中描绘的实施例中的组件用线示出。也可以实现这些和其他组件的其他布置。例如,虽然一些组件被描绘为单个组件,但本文所描述的许多元件可以被实现为离散或分布式组件或与其他组件结合地实现,
并且可以以任何合适的组合和位置来实现。一些元件可以完全省略。此外,在本文中描述为由一个或多个实体执行的各种功能可以由硬件、固件和/或软件来执行,如下所述。例如,各种功能可以由执行存储器中存储的指令的处理器来执行。因此,除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、顺序和功能分组)。
115.在以下段落中描述的实施例可以与一个或多个具体描述的替代方案进行组合。特别地,要求保护的实施例可以包含对多于一个的其他实施例的替代参考。要求保护的实施例可以指定对要求保护的主题的进一步限制。
116.本发明的实施例的主题在本文中被具体描述以满足法定要求。然而,描述本身并不旨在限制本专利的范围。相反,发明人已经考虑到,要求保护的主题也可以结合其他现有或未来的技术以其他方式体现,以包括与本文档中描述的步骤类似的不同步骤或步骤组合。此外,尽管术语“步骤”和/或“框”在本文中可以用于暗示所采用方法的不同元素,但这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各个步骤的顺序。
117.出于本公开的目的,“包括”一词与“包含”一词具有相同的广泛含义,而单词“访问”包括“接收”、“引用”或“检索”。此外,单词“通信”与单词“接收”或“发射”具有相同的广泛含义,这些含义由使用本文描述的通信介质的基于软件或硬件的总线、接收机或发射机来促进。此外,除非另有相反说明,诸如“一”和“一个”之类的单词包括复数和单数。因此,例如,当存在一个或多个特征时,满足了“特征”的约束。此外,术语“或”包括连词、反意连接词、及其两者(因此,a或b包括a或b,以及a和b)。
118.为了以上详细讨论的目的,参考分布式计算环境描述了本发明的实施例;然而,本文所描述的分布式计算环境仅仅是示例性的。组件可以被配置为执行实施例的新颖方面,其中术语“被配置为”可以指“被编程为”使用代码来执行特定任务或实现特定抽象数据类型。此外,虽然本发明的实施例可以泛指本文所描述的技术方案环境和示意图,但是应当理解,所描述的技术可以扩展到其他实现上下文。
119.已经关于特定实施例描述了本发明的实施例,这些特定实施例在所有方面都是说明性的而不是限制性的。在不脱离本发明范围的情况下,替代实施例对于本发明所属领域的普通技术人员将变得明显。
120.从上述内容可以看出,本发明很好地适合实现上文的所有目的和目标以及其他明显且结构固有的优点。
121.应当理解,某些特征和子组合是有用的并且可以在不参考其他特征或子组合的情况下使用。这是可以想到的并且在权利要求的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献