用于指定基于云的部署的配置的高级语言的制作方法

xiaoxiao2020-7-22  13

用于指定基于云的部署的配置的高级语言的制作方法
【专利摘要】用于指定基于云的部署的配置的高级语言的方法、系统和装置、包括在计算机存储介质上编码的计算机程序。在一个方面中,方法包括:接收用于配置基于云的部署的配置规范,配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对基于云的部署的相应数据或者功能部件进行建模,并且每个类的相应类定义代表由该类建模的数据或者功能部件的请求的状态;导出用于基于一个或者多个类的类定义而配置基于云的部署的多个应用编程接口(API)调用;使得执行多个API调用以配置基于云的部署。
【专利说明】用于指定基于云的部署的配置的高级语言
[0001]有关申请的交叉引用
[0002]本申请根据35U.S.C.§ 119(e)要求对于2011年3月16日提交的第61 / 453, 478号美国临时中请的权益,其整体通过引用而结合于此。【技术领域】
[0003]本说明书主要地涉及云计算。
【背景技术】
[0004]云计算是被开发用以支持对如下可配置计算资源(例如网络、服务器、存储装置、应用和服务)的共享池的方便、按需网络访问,该计算资源可以被快速、动态并且用最少的人工管理精力和与服务提供方的人员交互来配备和释放这些计算资源。
[0005]一些常见的基于云的服务模型包括软件(例如商业上可用软件应用)即服务(SaaS)、平台(例如软件应用、比如虚拟机或者应用框架的托管环境)即服务(PaaS)和基础设施(例如计算机功率、存储装置、数据库、联网服务等)即服务(IaaS)。在使基于云的服务可用于云服务客户之前,根据配置规范来配置服务的各种方面,从而在部署服务时它满足客户的需要和使用需求。

【发明内容】

[0006]本说明书描述涉及云计算环境使用和管理的技术。
[0007]一般而言,可以在包括以下动作的方法中体现本说明书中描述的主题内容的另一创新方面:接收用于配置基于云的部署的配置规范,配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对基于云的部署的相应数据或者功能部件进行建模,并且每个类的相应类定义代表由该类建模的数据或者功能部件的请求的状态;导出用于基于一个或者多个类的类定义而配置基于云的部署的多个应用编程接口(API)调用;并且使得执行多个API调用以配置基于云的部署。
[0008]这些和其它实施例可以各自可选地包括以下附加特征中的一个或者多个附加特征。一个或者多个类包括至少一个现有基本类和至少一个从现有基本类扩展的定制的类,定制的类继承现有基本类的各类参数,并且定制的类修改从现有基本类继承的类参数中的至少一个类参数的值,或者包括未存在于现有基本类中的至少一个新类参数。由每个类建模的数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在基于云的环境中利用的服务、由基于云的环境中安装的应用执行的软件作用、保持将在基于云的环境的部署或者操作期间使用的数据的数据包。规范语言支持在类定义之间的依赖,并且在第一个类与第二个类之间的定义依赖代表在由第一个类和第二个类建模的相应部件之间的部署依赖。规范语言支持在类定义之间的连接,并且将第二类的实例链接到第一类的类参数的值指派代表在由第一类和第二类建模的相应部件之间的连接。基于一个或者多个类的相应类定义来标识由一个或者多个类建模的多个数据和功能部件以及在多个数据或者功能部件之中存在的一个或者多个依赖关系和连接关系;基于标识的多个数据和功能部件以及标识的依赖关系和连接关系导出基于云的环境的框图;并且在框图中表示用于动态重新配置基于云的环境的触发事件。标识各自已经根据用规范语言编写的相应配置规范而执行的多个基于云的部署;标识至少一个基本类,该至少一个基本类的类定义在多个基于云的部署中的数个基于云的部署中被使用;监视多个基于云的部署中的数个基于云的部署中的每个的相应性能;以及基于多个基于云的部署中的数个基于云的部署的总体性能来计算至少一个基本类的质量度量。存储规范语言的多个核心类的各类定义,每个核心类对应于基于云的环境的模块化部件,每个核心类能够利用附加类参数进行扩展以配置相应模块化部件;存储在核心类中的每个核心类与相应API调用组之间的映射,相应API调用组用于根据核心类的类参数来配置与核心类相关联的模块化部件;以及存储多个协议,该多个协议用于修改与每个核心类相关联的相应API调用组以为从核心类导出的新类定义而获得新API调用组。导出用于配置基于云的部署的多个API调用还包括:基于多个核心类中的一个或者多个核心类相关联的相应API调用组、并且基于用于修改相应API调用组的多个协议来导出多个API调用,该配置规范的所述一个或者多个类从所述多个核心类导出。多个协议还包括用于根据在根据规范语言编写的类定义中指定的依赖关系和连接关系施加API调用组的排序的规则。
[0009]一般而言,可以在包括以下动作的方法中体现本说明书中描述的主题内容的另一创新方面:从多个定义供应方中的每个定义供应方接收相应定义提交,其中相应定义提交包括用规范语言编写的一个或者多个类定义,并且每个类定义使用一组可配置类参数对基于云的部署的数据或者功能部件进行建模,并且可扩展以通过修改可配置类参数的组中的一个或者多个类参数、或者添加一个或者多个新类参数来创建至少一个新类定义;并且提供呈现从多个定义供应方接收的类定义的用户界面以用于由多个定义用户回顾和选择。
[0010]这些和其它实施例可以各自可选地包括以下附加特征中的一个或者多个附加特征。接收用规范语言编写的多个不同配置规范,多个不同配置规范各自用于配置不同的基于云的部署,并且包括从多个定义供应方接收的类定义中的相同类定义扩展的不同类定义;并且至少基于在不同的基于云的部署中的不同配置规范中的、接收的类定义中的相同类定义和从接收的类定义扩展的不同类定义来配置该不同的基于云的部署中的每个。对于接收的类定义中的每个类定义:监视类定义在已经被用来配置多个基于云的部署的多个配置规范中的使用;并且为类定义在多个配置规范中的每个使用而记录向类定义的定义供应方的贷记和向与使用关联的定义用户的收费。类定义的使用包括类定义在已经用来执行相应的基于云的部署的相应配置规范中的实例化。类定义的使用包括对类定义的扩展以创建在用来执行相应的基于云的部署的相应配置规范中实例化的新类定义。从软件供应方接收软件提交,软件提交包括将在基于云的环境中部署的软件应用和各自用于用以不同方式在基于云的环境中部署软件应用的多个不同配置规范;并且提供多个不同配置规范以用于由软件用户回顾和选择。接收软件用户对多个不同配置规范之一的选择;根据选择的不同配置规范在基于云的环境中部署软件应用;并且基于与选择的不同配置规范关联的相应架构记录向软件用户的收费和向软件供应方的贷记。
[0011]一般而言,可以在包括以下动作的方法中体现本说明书中描述的主题内容的另一创新方面:提供多个类定义以用于选择,每个类定义使用可配置类参数组来对基于云的环境的相应数据或者功能部件进行建模,每个类定义支持在用于基于云的部署的配置规范中实例化和继承类定义;基于多个基于云的部署的总体性能导出与多个类定义中的每个类定义相关联的相应性能度量,其中已经根据需要实例化类定义或者从类定义导出的新类定义的各配置规范执行多个基于云的部署;并且在对多个类定义排行时利用与多个类定义中的每个类定义相关联的相应性能度量。
[0012]这些和其它实施例可以各自可选地包括以下附加特征中的一个或者多个附加特征。基于该基于云的环境的由多个类定义建模的相应数据或者功能部件对多个类定义分类;并且在多个类定义的相应类别内对类定义排行。提供多个类定义用于选择还包括:在选择用户界面中随着多个类定义中的每个类定义提供相应性能度量用于用户回顾。对于多个类定义中的每个类定义:标识已经根据需要实例化类定义或者从类定义导出的至少一个新类定义的各配置规范执行的多个基于云的部署;监视多个基于云的部署的各性能;并且关联多个部署的各性能与类定义。基于多个基于云的部署的总体性能导出与多个类定义中的每个类定义相关联的相应性能度量还包括:对于多个类定义中的每个类定义,标识根据类定义或者从类定义导出的新类定义而配置的多个基于云的部署中的一个或者多个数据或者功能部件;标识与标识的一个或者多个数据或者功能部件相关联的一个或者多个性能度量;并且通过聚合标识的一个或者多个性能度量来导出与类定义关联的相应性能度量。性能度量包括对延时、可靠性、可缩放性、可用性或者安全性的一个或者多个测量。对于多个类定义中的每个类定义:跟踪已经至少部分根据类定义而配置的基于云的部署的相应计数;并且在对多个类定义排行时利用与多个类定义关联的各计数。对于多个类定义中的每个类定义:跟踪在已经至少部分地基于类定义而配置的基于云的部署中遇到的问题的各计数;并且跟踪用于化解在已经至少部分根据类定义而配置的基于云的部署中遇到的问题的所需改变的数目;以及在对多个类定义排行时利用与多个类定义关联的问题的各计数和所需改变的各数目。与多个类定义关联的所需改变的相应数目用来计算在对多个类定义排行时向与多个类定义关联的相应性能度量给予的各权值。
[0013]可以实施本说明书中描述的主题内容的具体实施例以便实现以下优点中的一个或者多个优点。
[0014]高级面向对象的规范语言允许基于云的部署中的可配置部件由包括可配置类参数的类定义来建模。面向对象的规范语言支持扩展现有基本类定义以创建新类定义,并且支持新类定义继承来自现有基本类定义的类参数。基于云的服务的监管用户可以基于在配置一个或者多个通用部署时使用的类定义、比如通过修改类定义的类参数值、改变在类之间的相互关系和用新类参数补充现有类参数来定制基于云的部署。
[0015]面向对象的规范语言允许对可配置的不同类型的云服务部件进行多层抽象化。例如高级面向对象的规范语言不仅支持对硬件和虚拟资源建模的类定义,而且支持由基于云的部署中的软件应用和服务来服务的软件作用和服务作用。此外,面向对象的规范语言提供用于指定在类之间的依赖和连接的语法。涉及到多个子部件和复杂结果的云部件可以由类定义建模,这些类定义引用多个类型的基本类,并且指定在基本类之间的各相互关系。
[0016]配置规范可以依赖于现有类定义以在高抽象化水平配置云部署的一些方面而使用新导出的类定义在更详细水平定制其它方面。基于云的服务的监管用户能够通过选择用于在用于基于云的部署的配置规范中包括和实例化的适当类定义集合来控制用于基于云的部署的定制水平。
[0017]此外,面向对象的规范语言允许创建和存储对公共或者专用云服务部件建模的许多类定义。这些存储的类定义可以如在将来部署的配置规范中那样由不同云服务客户扩展或者重用。类定义在规范配置中的这一重用可以提高部署过程的速度和效率。
[0018]由于可以重用并且在许多运服务客户之间共享类定义,所以云服务客户无需重复用于为相同或者相似目的开发适当配置规范的工作。可以开发用于共享可重用类定义的集市,从而云服务客户可以选择付费购买或者许可使用由其它云服务客户开发和提供给的现有类定义。此外,可以向软件应用提供适合云客户的不同使用需求和组织基础设施的不同类型的配置规范(即作为“配置卷包”的软件解决方案)。
[0019]在用面向对象的规范语言编写基于云的部署的配置规范时,云服务提供方能够解析配置规范以标识在配置基于云的部署的每个数据或者功能部件时涉及到的类定义。另夕卜,在根据配置规范执行部署时,云服务提供方也能够标识与部署的数据或者功能部件中的每个数据或者功能部件关联的下层软件或者虚拟资源。因此,面向对象的规范语言使云服务提供方能够监视基于云的部署的数据和功能部件的性能并且关联性能与用来配置数据和功能部件中的每个数据和功能部件的类定义。因此,云服务提供方可以向云服务客户提供关于需要修改配置规范的哪些部分以提高部署的性能的指导。
[0020]在一些实现中,云服务提供方可以基于配置规范生成用于基于云的部署的框图。可以在框图上可视地表示部署的不同部件的性能。也可以在框图中表示在配置规范中指定的各种重新配置触发。这一可视表示允许基于云的部署的管理员及时和适当调整部署的配置参数。
[0021]面向对象的规范语言允许类定义在多个配置规范中并且在潜在地由多个云服务客户重用。云服务提供方可以跟踪已经使用涉及到重用的类定义的配置规范而配置的多个基于云的部署的性能。对于每个重用的类定义,云服务提供方可以基于已经使用类定义而配置的多个部署的总体性能评价类定义的质量。在用于共享可重用类定义的集市中,可以提供基于类定义质量的类定义排行和质量分数。这一排行或者质量分数帮助云服务客户更好地选择用于在它们自己的基于云的部署中重用的类定义。排行或者质量分数也帮助可重用类定义的提供方改进它们的类定义。
[0022]在附图和以下描述中阐述在本说明书中描述的主题内容的一个或者多个实施例的细节。主题内容的其它特征、方面和优点将从描述、附图和权利要求中变得清楚。
【专利附图】

【附图说明】
[0023]图1图示示例云计算环境。
[0024]图2A示出用于基于云的部署的常规配置规范的示例。
[0025]图2B图示根据图2A中所示配置规范的基于云的部署的合成拓扑。
[0026]图3A是用示例面向对象的规范语言编写的示例配置规范。
[0027]图3B是包括用示例面向对象的规范语言编写的可重用类定义的示例模块。
[0028]图3C是利用图3B中所示可重用类定义的示例配置规范。
[0029]图4是示例云服务提供方的示例云服务管理器的框图。
[0030]图5是示出根据图3C中所示配置规范配置的示例基于云的部署的拓扑的框图。[0031]图6是用于处理用面向对象的规范语言编写的配置规范的示例过程的流程图。
[0032]图7是用于以基于云的部署的配置规范为基础导出框图的示例过程的流程图,该框图示出基于云的部署的拓扑。
[0033]图8是监视基于云的部署的性能并且关联性能与在配置基于云的部署时使用的类定义的示例过程的流程图。
[0034]图9是用于基于至少部分基于重用的类定义而配置的多个基于云的部署的总体性能评价重用的类定义的质量的示例过程的流程图。
[0035]图10是用于导出API调用的示例过程的流程图,这些API调用用于基于在配置规范中使用的类定义而配置基于云的部署。
[0036]图11是用于提供用于共享可重用类定义的平台的示例过程的流程图。
[0037]图12是用于基于全使用至少一个公共可重用类定义的不同配置规范来配置多个不同的基于云的部署的示例过程的流程图。
[0038]图13是用于向定义用户收费并且基于由定义供应方提供的可重用类定义的使用向定义供应方贷记的示例过程的流程图。
[0039]图14是用于提供用于销售“配置卷包”的软件解决方案的平台的示例过程的流程图。
[0040]图15是用于基于软件用户对配置卷包的软件解决方案的选择向软件用户收费并且向软件提供方贷记的示例过程的流程图。
[0041]图16是用于在对已经在配置多个基于云的部署时使用的可重用类定义排行时利用多个基于云的部署的总体性能度量的示例过程的流程图。
[0042]图17是用于对可重用类定义分类并且在可重用类定义的相应类别内对它们排行的示例过程的流程图。
[0043]图18是用于关联多个基于云的部署的性能与用来配置多个基于云的部署的类定义的示例过程的流程图。
[0044]图19是用于基于多个部署的总体性能导出与重用的类定义关联的性能度量的示例过程的流程图。
[0045]图20是用于在对可重用类定义排行时利用多个因素的示例过程的流程图。
[0046]各种附图中的相似标号和标示指示相似要素。
【具体实施方式】
[0047]在云计算环境中,云服务客户(例如终端用户或者企业)通过一个或者多个网络(例如因特网)获得对软件、平台和/或基础设施服务的访问。云服务客户能够例如通过由云服务提供方提供的配置用户界面和/或通过在云服务提供方存储的可编程建立的配置规范随需缩放服务水平(例如按照服务类型、质量和数量)。对应地,云服务提供方汇聚资源并且经由多租户模型服务于它的客户,在该多租户模型中根据客户需求指派和重新指派、配置和重新配置物理和虚拟资源。在云基础设置下层的物理资源的位置未向云服务客户暴露并且可以动态改变。
[0048]图1是图示示例云计算环境100的框图。在示例云计算环境100中,云服务客户(例如102a、102b、102c)通过一个或者多个网络106使用客户设备来与云服务提供方104通信。云服务客户包括云服务提供方104比如在“软件即服务”(SaaS)模型中提供的软件应用的终端用户。云服务客户也可以包括比如在“平台即服务”(PaaS)和/或“基础设施即服务”(IaaS)模型中从云服务提供方104接收平台和/或基础设施服务的企业客户。云服务提供方104提供的软件应用服务、平台服务和基础设施服务由内勤或者第三方服务开发者108开发并且通过云服务提供方104而对云服务客户可用。云服务客户可以运用来自云服务提供方104的多于一个类型的服务。
[0049]在一个示例中,在多层中在概念上构造云服务提供方104。最低层是在其上构建云服务提供方104的其它层的固件和硬件层110。固件和硬件层110包括跨越因特网在地理上分布的并且提供物理资源的通用贡献节点(例如数据中心、计算机和存储设备),以用于实施云服务提供方104的更高层。
[0050]在固件和硬件层110以上是软件内核层112。软件内核层112包括托管由云服务提供方104提供的云基础设施服务的操作系统111和/或虚拟机管理器113。软件内核层112通过一个或者多个硬件/固件级应用编程接口(API)控制下层固件和硬件层110并且与下层固件和硬件层110通信。硬件/固件级API可以是提供方专属的并且被实施用于支持基于超文本传送协议(HTTP)和HTTP安全(HTTPS)的通信协议。提供方专属API的示例包括 Amazon Web 服务 AP1、Google 应用引擎 API 和 Microsoft SQL Azure API。
[0051]云服务提供方104提供的基础设施服务包括虚拟化的资源、比如虚拟机、虚拟存储装置(例如虚拟盘)、虚拟网络装置(例如防火墙)等。基础设施服务也包括虚拟化的服务、比如数据库服务、联网服务、文件系统服务、web托管服务、负荷平衡服务、MapReduce服务、消息队列服务、地图服务、电子邮件服务等。这些基础设施服务中的每个基础设施服务可以由云服务客户运用并且被部署在软件内核层112以上的基础设施服务层114中。
[0052]基础设施服务部署的规模和各种方面(例如数据、连接性以及在服务部件内和在服务部件之间的依赖关系)可由云服务客户的管理员用户配置。在一个示例中,管理员用户经由云服务提供方104的前端接口 120向云服务提供方104提交配置规范。云服务提供方104根据涉及到的基础设施服务的API和下层软件内核层112的API将配置规范翻译成对基础服务层114和内核层112的指令(例如API调用)。执行这些指令以配备和配置在部署的配置规范中请求的基础设施服务。例如可以将配置规范翻译成基础设施和内核级API调用,这些API调用创建、重建、移动或者删除部件(例如虚拟机和服务)并且指派或者改变部件的属性(例如存储器和CPU分配、网络设置、盘大小和卷)。
[0053]除了基础设施服务之外,示例云服务提供方104也提供平台服务、比如用于运行虚拟机的环境(例如Linux、Solaris、Microsoft Windows等)或者用于开发和起动特定类型的软件应用的框架(例如.NET、Java、Oracle数据库等)。平台服务通过基础设施服务层114实施于平台服务层116中并且可以运用用特定方式配置的一个或者多个基础设施服务。平台服务的配置可以由根据平台服务的API并且可选地根据在启用平台服务时运用的基础设施服务的API编写的程序代码来实现。
[0054]在这一示例中,云服务提供方104也提供应用服务层118中的软件应用服务。软件应用(例如商业上可用软件应用)可以被安装于一个或者多个虚拟机上,或者被部署于平台服务层116中的应用框架中。软件应用也可以与基础设施层114中的一个或者多个基础设施服务部件(例如防火墙、数据库、web服务器等)通信。可以通过软件本身的API以及下层平台和基础设施服务部件的API实现应用服务层118中的软件应用的安装和配置。
[0055]为了管理向云服务客户(例如102a、102b、102c)提供的基于云的服务的部署和操作,示例云服务提供方104包括云服务管理器122。示例云服务管理器122与前端接口 120通信以从云服务客户接收服务请求。示例云服务管理器122还负责管理云资源和服务、包括服务注册、配备、协调、监视、调度等。如在本说明书中描述的那样,示例云服务管理器122也包括用于将不同服务层(例如层114、116和118)(例如如在一个或者多个配置规范和服务水平协定(SLA)中表达的)用户要求翻译成(例如如在一个或者多个内核硬件/固件级API调用中表达的)物理资源需求的工具和库。
[0056]虽然示例云服务提供方104提供所有三个类型的基于云的服务,但是在一些实现中可以提供更少或者更多类型的服务。在一些实现中,云服务提供方104可以向其它云服务提供方外包云服务中的一些云服务或者服务的部分。云服务管理器120可以实施对这些其它云服务提供方的API调用用于向云服务客户支持该云服务管理器的服务中的一些服务。此外,图1中所示云服务提供方104的概念层仅为示例。可以例如根据云服务提供方实际赋予的服务类型来提供云服务提供方的其它概念结构。
[0057]在这一示例中,云服务客户可以运用服务层114、116和118中的每个服务层中赋予的基于云的服务。根据云服务客户已经运用的服务类型,在配置服务时向云服务客户批准不同级别的控制。例如,如果运用软件应用服务,则向云服务客户的管理员用户给予对如何配置软件应用的控制,但是对支持软件应用的下层平台和基础设施服务的控制留在云服务提供方104。如果运用平台服务,则向云服务客户的监管用户给予对如何配置平台和/或应用框架的控制,但是对支持平台和/或应用框架的基础设施服务的控制留在云服务提供方104。类似地,如果运用基础设施服务,则向云服务客户的监管用户给予对运用的特定基础设施服务、而不是对下层内核层112以及固件和硬件层110的控制。
[0058]在云计算环境100中,云服务客户使用数据处理装置、比如个人计算机、智能电话和平板计算机来访问基于云的服务。根据运用的服务类型,不同用户界面或者编程接口可以用来与云服务提供方104通信。
[0059]例如,如果运用软件应用服务,则终端用户可以通过web浏览器访问和使用软件应用。如果运用平台或者基础设施服务,则服务的用户(例如云月服务客户的管理员用户)可以访问配置用户界面,该配置用户界面包括用于控制和配置服务的监管功能。监管功能例如包括启动或者停止虚拟机、管理云存储装置、在虚拟机上安装和部署软件或者建立web服务器等。此外,云服务提供方104可以可选地允许云服务客户的管理员用户根据依赖于提供方、平台、框架和/或服务的应用编程接口(API)编写程序代码以控制和配置云服务客户接收的服务的各种方面。在一些实现中,如果开放标准用于云计算环境,则独立于提供方、平台、框架和服务的API也可以用来控制和配置服务。
[0060]在配置基于云的服务以用于部署时,服务用户或者服务开发者向云服务提供方104提供一个或者多个配置文件。配置文件阐述按照各种配置参数表达的服务的希望的初始状态。通常根据云服务提供方104提供或者识别的规则和语法用结构化方式编写配置文件,从而配置文件将由云服务提供方104正确解析和解译。
[0061]图2A是用于在云计算环境中部署简单web应用的常规配置规范200的示例。用可扩展标记语言(XML)编写示例配置规范200,该XML是用于指定用于基于云的部署的配置的常用语言。在文本文件中向云服务提供方提供示例配置规范200。云服务提供方使用如下工具(例如解析器或者API翻译器),这些工具根据配置文件中的标记(例如MXL标签、元素和属性等)解析配置文件,并且将配置文件中指定的要求转换成一个或者多个API调用集合。在确定适当API调用集合之后,云服务提供方执行API调用以根据在配置文件中阐述的要求执行部署。
[0062]图2B图示web应用服务在根据配置规范200部署它之后的合成拓扑208。首先根据代码块202,在单个网格服务管理器(GSM)虚拟机212上部署单个GSM210。在GSM机器212上部署GSM210之后,如代码块204指定的那样,部署两个网格服务容器(GSC) 214a和214b,每个GSC在相应GSC机器(216a或者216b)上。然后根据代码块202,GSM在两个GSC214a和214b中的每个GSC内安装web应用软件的副本(例如应用副本218a或者218b)。根据代码块206,在负荷平衡器机器222上启动并且使用负荷平衡器服务220以将业务(例如来自客户端浏览器224的HTTP请求)引向两个GSC机器216a和216b,并且用隧道发送回在GSC机器216a和216b上运行的web应用预备的响应。
[0063]如图2A和2B中所示,示例常规配置规范200依赖于嵌套标记构造(例如代码块202、204和206)以描述部署的部件和在部件之间的关系。编写配置规范200的用户需要熟悉在进入配置规范200的每个标记构造内的细节和该标记构造对云服务提供方的API翻译器的含义。对于大型和复杂部署,配置文件可以变成很冗长和复杂而又许多层标记和重复语句。另外,代码重用可能性随着配置规范变成冗长和复杂而减少,因为为另一部署定制配置规范将需要许多改变并且调试定制的配置文件也将变成更困难。
[0064]如在本说明书中公开的那样,取代用标记语言或者通过图形用户界面提供配置规范,云服务客户或者服务开发者可以提供用高级面向对象的规范语言编写的配置规范。高级面向对象的规范语言允许基于云的部署的部件(例如基础设施、存储设备、服务、待安装的软件包和安装的软件应用发挥的“软件作用”)为一个或者多个可重用和可修改类的实例,其中每个类使用可配置类参数组对部署的部件建模。可以使用由面向对象的规范语言提供的语法和函数为特定部署指定、重用或者修改每个类参数的值。每个可重用和可修改类的示例声明由该类建模的部件的希望的状态。
[0065]如在本说明书中描述的那样,高级面向对象的规范语言支持继承类定义。可以基于如下语句提供新类定义,这些语句使用高级规范语言使一个或者多个现有类定义相关或者修改一个或者多个现有类定义。使不同类相关的语句捕获在部署的多个方面(例如数据或者功能部件)之间的关系。这样的关系的示例包括在部署中的软件安装与服务激活之间的依赖在部署中的多个软件作用之间的连接以及在部署中的软件作用与服务或者虚拟设备之间的连接。也可以通过添加新类参数和/或方法扩展现有类定义来创建新类定义。用户可以通过指定从一个或者多个现有基本类导出的新类来定制部署并且实例化新类。
[0066]根据这一规范,云服务提供方能够基于由在配置规范中包括的类定义指定的要求将用高级面向对象的规范语言编写的配置规范编译成API调用集合。在配置规范中包括类定义是指在配置规范中请求实例化类定义或者实例化从类定义导出的新类定义。
[0067]在一些实现中,云服务提供方的不同服务层和在相同层内的不同服务具有不同API。为了编译用面向对象的规范语言编写的配置规范,云服务提供方存储用于将规范语言的更基本类定义(或核心类定义)集合的每个类定义翻译成相应API调用组的规则和协议集合。用于每个核心类定义的API调用组服从由核心类定义建模的部件类型的API。编译器继而能够使用规则和协议集合以将从核心类定义导出的所有类定义翻译成适当API调用组合以配置特定部署的所有部件。在一些实现中,向云服务提供方的一个或者多个服务器发送并且在该一个或者多个服务器上执行API调用。备选地,可以向云服务提供方或者第三方服务提供方的中间部件传递API调用中的一些API调用,其中API调用由更低级AP调用进一步处理并且由中间部件或者第三方服务提供方的子部件执行。
[0068]在一些实现中,高级面向对象的规范语言也包括用于指定触发的语法,这些触发用于缩放或者动态重新配置部署的各种方面。例如对虚拟机建模的类定义可以包括用于缩放策略的一个或者多个类参数,从而编译器可以导出API调用以动态调整基于云服务管理器(例如图1中所示云服务管理器122)监视的各种性能度量部署的虚拟机数目。
[0069]以下示例(图3A-3C中所示)图示了示例面向对象的规范语言的语法和各种属性以及如何可以根据示例面向对象的规范语言并且基于现有和新导出的类定义指定基于云的部署。
[0070]在第一示例中,在图3A中示出用示例面向对象的规范语言编写的示例配置规范300。根据这一配置规范300进行的部署用于起动安装有web服务器(例如Apache web服务器)的虚拟机并且供给数据包中存在的文件。
[0071]这一示例假设存在多个基本类定义,编译器能够解析这些基本类定义并且将它们翻译成API调用。现有基本类定义包括编译器提供的核心类定义集合,并且可能包括直接或者经由一个或者多个中间类定义而从核心类定义中的一个或者多个核心类定义扩展的其它类定义。
[0072]在一些实现中,将现有基本类定义分组成模块(例如图3A中所示模块“utils”、“std”),并且在每个模块中包括的类在配置规范中由跟随有类名称的模块名称(例如如规范 300 中所不"std.Parameters "、" utils.ConfiguratorLAMP "、" std.DataPackage "、 " std.Role "、 " utils.PublicTCPFirewall "、 " utils.BaseDeployment")引用。基本类定义中的每个基本类定义指定受到在配置规范300中阐述的修改和部件关系制约的、基于云的部署的对应部件的初始配置状态。
[0073]如图3A中所示,配置规范300包括从现有基本类定义扩展的新类定义。例如分别如新类定义302、304、306、308、310和312所示,新类"Params"从基本类"std.Parameters "扩展,新类"SimpleHostingPackage "从基本类"std.DataPackage "扩展,新类"S impleHostingVM "从基本类"utils.Configurator.LAMP "扩展,新类SimpleHostingRole"从基本类"std.Role"扩展,类"SimpleHostingFirewall"从基本类"utils.PublicTCPFirewell "扩展,并且类"SimpleHostingDeployment"从基本类扩展"utils.BaseDeployment"。配置规范 300 通过创建"SimpleHostingDeployment"类的如下实例(如语句314所示)来触发部署简单托管应用,该实例又创建其它类的实例,"SimpleHostingDeployment"类是从这些其它类导出的。
[0074]在这一不例中,"SimpleHostingDeployment"类定义312 通过修改"roles"参数和"firewall "参数这两个类参数来定制基本类"utils.BaseDeployment "的定义。"roles"参数指定一个或者多个安装的软件包应当在部署中发挥的相应软件作用。"firewall"参数指定将包括防火墙服务作为部署的部分。在这一情况下,类定义312指定将包括由"SimpleHostingRole"类代表的单个软件作用。类定义312还指定将在这一部署中包括的防火墙服务由"SimpleHostingFirewall"类的实例代表。根据面向对象的规范语言的属性,"SimpleHostingDeployment"类继承基本类"utils.BaseDeployment"中定义的其它类参数而无进一步修改。这些其它类参数描述无需为这一简单托管部署而进一步定制的部署的其它方面。
[0075]根据类定义312, " SimpleHostingDeployment "类的实例化需要也实例化"SimpleHostingRole "和"SimpleHostingFirewall "。如图 3A 中所示,"SimpleHostingRole"类定义308从基本类"std.Role"扩展。两个类基于“软件作用”模型,该模型根据软件安装在基于云的部署中发挥的作用对软件安装分类。例如可以安装软件包以发挥web托管、前端、后端、通信接口等的作用。根据软件安装发挥的特定作用,不同参数可以用来配置软件安装。用于软件作用的每个可配置参数可以在基于“软件作用”模型创建的类定义中具有对应类参数或者函数。
[0076]在一个示例中,除了软件安装在部署中发挥的作用的标识符或者名称之外,“软件作用”模型还可以包括配置用于软件安装的各种方面的模型参数,这些方面包括将在其上安装软件的虚拟机、软件二进制的位置、关于哪个安装器程序应当用来安装软件的指令等。如果软件安装要求先执行其它服务或者软件安装,则在“软件作用”模型中可选地也包括这一依赖。依赖关系的示例是“在…之后开始”或者“在…之前停止”。也可以支持其它依赖类型(例如在相同虚拟机上安装等)。
[0077]在图3A中的这一示例中,用于"SimpleHostingRole"类的类定义308指定软件安装在部署中的作用是用作“webhost”。通过"simplehosting.webhost"类的类定义使将如何部署“webhost”软件为编译器所知。在这一示例中,"simplehosting.webhost"类定义包括已经编写并且变得为编译器所知的简单apache web服务器的配置。在实例化"SimpleHostingRole"类时,也实例化"simplehosting.webhost"类。
[0078]用于"SimpleHostingRole "类的类定义308还声明为了运行这一webhost而需要的数据包由"SimpleHos`tingPackage "类的实例代表,并且将在由"SimpleHostingVM"类的实例代表的虚拟机上安装webhost。
[0079]在这一不例中,"roleName"、"moduIeName"、" dataPackages"和"vms"中的每项是"std.Role"类的参数并且在"SimpleHostingRole "类定义308中被定制。"std.Role"类的其它类参数由"SimpleHostingRole"类继承而无修改。
[0080]" SimpleHostingRole "类的类定义308也定义少数新参数、比如"serving_domain "和"document_root "参数,这些参数的值是通过另一参数名称(例如"Params"类302的"serving_domain")间接或者由直接值条目(例如"/ var /www / static")指派的。在这一示例中,定义仅一个软件作用,因此未在安装或者执行方面为软件作用(例如"SimpleHostingRole")指定在软件作用的依赖。
[0081]关于部署的防火墙部件,"SimpleHostingFirewall"的类定义310基于现有"utils.PublicTCPFirewall "类定义。在这一不例中,"utils.PublicTCPFirewall "类定义将传输控制协议(TCP)设置成协议的公用防火墙。"PubI icTCPFirewal I "类的为这一部署而修改的仅有参数是"target"和"ports"参数。在类定义310中,防火墙的目标由"SimpleHostingRole"类的实例代表,而将防火墙的端口设置成端口" 80"。为了配置防火墙而需要的其它参数(例如参数"source"和"protocol")在"PublicTCPFirewall"的基本类定义中被指定并且由"SimpleHostingFirewall"类继承而无修改。在这一示例中,在防火墙部件与简单托管软件作用(例如由"SimpleHostingRole"类的实例代表)之间的连接由向"target"参数的值指派指定。
[0082]在这一不例中,"SimpleHostingFirewall"和"utils.PublicTCPFirewall "类的类定义均基于防火墙服务模型。不同于“软件作用”模型,服务模型无需包括用于下层虚拟机、盘或者软件包的参数。取而代之,这些方面由云服务提供方控制而未受制于服务的用户的配置。如同在“软件作用”模型中,服务模型也可选地包括如下参数,这些参数指定在服务之间和在服务与软件作用之间的依赖。在这一示例中,防火墙部件连接到web服务器部件,但是未为这一简单托管部署指定防火墙服务的依赖。
[0083]如更早阐述和图3中示出的那样,"SimpleHostingRole "类的类定义 308 需要实例化"SimpleHostingPackage "类和"SimpleHostingVM "类。"SimpleHostingPackage"类的类定义 304 指定需要向托管"SimpleHostingRole"的虚拟机复制的数据的源(例如在当前目录中的“数据”)。类定义304还指定复制的数据在虚拟机上的目的地目录(例如"/ var / www / static")。在根据配置规范300执行部署时,从配置文件驻留于其中的目录向已经根据"SimpleHostingVM"类定义306部署的虚拟机上的目的地目录"/ var / www / static"复制数据包“数据”。
[0084]如图3A 中所不,"SimpleHostingVM "类定义 306 从"utils.ConfiguratorLAMP"类定义扩展。两个类基于虚拟机模型并且指定如何可以配置虚拟机。在这一示例中,"utils.ConfiguratorLAMP"类配置已经安装有Apache web服务器的定制的虚拟机。因此,通过从"utils.ConfiguratorLAMP"类而不是标准虚拟机类扩展,用户可以简化和加速配置过程。"SimpleHostingVM"类定义306也通过新添加的"replicas"和"staticIP"类参数指定将在这一部署中运用的虚拟机数目和将向虚拟机绑定的外部IP地址。常用来配置一个或者多个虚拟机以用于支持软件作用的其它参数例如包括用于虚拟机的CPU和存储器要求、将附着到虚拟机的存储盘、附着到虚拟机的只读存储装置源、虚拟机的IP地址、网络接口、虚拟机的数据中心位置等的配置参数。可选地在虚拟机类定义或者从虚拟机基本类定义扩展的另一个类中包括这些虚拟机模型参数中的每个虚拟机模型参数作为类参数。
[0085]可选地,在部署的配置规范、比如示例配置规范300中所示配置规范中包括特殊"Params"类。可以在这一类定义中提供参数值并且使用这些参数值以向在相同配置文件中包括的其它类定义中的参数指派值。例如通过对各参数名称进行的引用而向类定义306 和 308 中注入参数"replica_count"、" serving_domain"和"ip_array"的值。
[0086]如示例配置规范300中所示,有可能基于不同部件模型来为基于云的部署的不同部件创建类定义。可以基于在基于云的计算环境中普遍出现的各种类型的基础设施、存储装置、服务和软件作用的模型来开发高级面向对象的规范语言。每个模型使用多个模型参数来描述对应基础设施部件、存储装置、服务或者软件作用。可以基于这些部件模型来创建核心类定义,这些核心类定义代表基于云的环境的一些最公共和基本部件的通用初始配置状态。由于可以从多个基本部件的组合构建更复杂部件,所以可以从多个类型类定义和/或从核心内定义导出的其它类定义创建如下类定义,这些类定义代表更复杂部件的初始配置状态。
[0087]创建高级面向对象的规范语言的编译器以基于这些部件模型解析类定义、提取由类参数的值表达的配置要求并且将要求翻译成用于配置由这些部件模型代表的部件类型的恰当API调用集合。在一些实现中,将编译器实现为读取配置文件并且输出API调用集合的软件程序或者脚本。在一些实现中,编译器也指引对云服务提供方或者第三方提供方的适当部件的API调用以用于执行。
[0088]图3A中所示示例已经图示分别基于示例软件数据包模型、示例虚拟机模型、示例“软件作用”模型、示例防火墙服务模型和示例开发模型开发的类定义。作为附加示例,示例存储装置模型包括用于配置部署的存储选项的方面的模型参数,这些方面包括存储装置的大小、存储装置的装配点等。在一些实现中,存储装置模型可选地包括用于基于存储装置的监视的使用来动态调整存储装置的大小的缩放策略。另外,除了防火墙服务之外,基于云的环境还可以包括许多平台和基础设施服务、比如数据库服务、消息队列服务、负荷平衡服务、地图服务、MapReduce服务等。可以为这些基于云的服务中的每个服务开发不同服务模型,并且可以基于不同服务模型创建用于配置不同服务的类定义。
[0089]如图3A的示例所示,面向对象的规范语言使得能够创建类分级,这些类分级代表用于云计算环境的各种层中的部件的不同定制水平。用面向对象的规范语言编写的配置规范可以通过从现有类定义扩展或者在向类参数指派值时引用现有类定义的实例来重用现有类定义。重用现有类定义简化用于新部署的配置规范。另外,在重用现有类定义时,用户仅需知道现有类定义可以实现的配置状态、但是无需在类定义内阐述的所有文字细节以实现该配置状态。
[0090]此外,可以基于多个现有类定义开发高度复杂部件(例如涉及到多个服务、多个数据源和多个部署级别)的类定义而对现有类定义的类参数有或者无修改。用户可以在新部署中重用这些高度复杂类定义而未在所有级别上深入理解这些复杂类定义。
[0091]通过选择用于在新配置规范中定制和修改的适当基本类,用户也获得对部署的特定方面的更精化控制而留下部署的其它方面对基本类的定义为通用。
[0092]图3B示出在多个基于云的部署的配置规范中存储(例如在"lamp"模块320)和重用的一些基本类定义。为各种基于Linux Apache MySQL Perl / Python (LAMP)的应用部署而定制这些基本类定义。每个类定义包括用于配置基于LAMP的应用部署的相应数据或者功能部件的一些常用类参数。
[0093]图3C提供了示例配置规范340,该配置规范利用"lamp"模块320中的基本类以在基于LAMP的应用部署中部署Mantis调试软件。通过利用"lamp "模块320中的基本类定义,用于Mantis应用部署的配置规范340无需包括如何配置基本的基于LAMP的环境的细节,而仅需定制Mantis应用部署特有的方面。
[0094]下文描述"lamp"模块320中的基本类定义如何用来建立基本LAMP部署结构。在"lamp"模块320中,特殊"Params"类322包括多个类定义中使用的一些参数、比如指示是否应当在相同虚拟机上安装Apache软件和MySQL软件的标志"single_node"、用于指定将向LAMP前端部件绑定的IP地址的"frontend_ip"参数、用于指定Apache网站的域名的"serving domain"参数、用于设置Apache服务器的文档根的"doc_root"参数、用于相对于持久盘装配点设置数据库文件夹的"mysqldatafolder"参数、用于指定持久盘的名称的"mysql_pdname"参数、用于指定持久盘的装配点的"mysql_pd_mount_point"参数、用于以GB为单位指定持久盘的大小的"pd_sizegb"参数。可选地,可以通过由云服务提供方提供的命令行工具改变特殊"Params"类中的参数值以使得更便于用户基于"lamp"模块调整部署。
[0095]基于LAMP的应用部署通常包括以下部件:前端(即前端软件应用的软件)、在其上安装前端软件应用(例如Apache web服务器应用)的虚拟机、数据库(即数据库软件的软件作用)、在其上安装数据库软件应用(例如MySQL软件应用)的虚拟机、用于存储数据库的持久盘和防火墙。以上部件中的每个部件由可为特定的基于LAMP的应用部署而配置的相应类参数集合建模。
[0096]如图3B中所不,类定义"FrontendVM " 324从现有类定义"utils.ConfiguratorLAMP"扩展,该类定义配置已经安装有Apache web服务器软件的虚拟机映像。在这一情况下,如"Params"类定义322中的"single_node"标志所示,将在与Apache软件相同的虚拟机上安装MySQL数据库软件。因此,"DatabaseVM"类定义326也从类定义"utils.ConfiguratorLAMP"扩展。
[0097]在"lamp"模块320中,"MysqlPD"类定义328对将在其上存储数据库的持久盘建模。Mysqiro类定义328例如包括指定持久盘的名称、持久盘的大小和持久盘的装配点的参数。从现有"std.PersistentDiskSpec"类定义继承指定应当如何配置持久盘的其它参数而无修改。
[0098]" FrontendRole "类定义330对基于LAMP的环境的前端部件建模。"FrontendRole"类定义330从由现有基本类定义"std.Role"建模的标准软件作用扩展。"FrontendRole"也引用"Iampfront"占位符类和"lamp"占位符模块作为向"roleName"和"moduleName"类参数指派的临时值。这些临时值将被如下实际模块和类的名称取代,该实际模块和类配置待部署的LAMP前端软件应用。如将图3C中示出的那样,配置前端软件(例如Mantis调试软件)的类定义是"mantis"模块中的"mantis_fronten d"类。类定义330也阐述将在其上安装LAMP前端作用的虚拟机由"FrontVM"类324的实例代表。
[0099]" DatabaseRole "类定义332对基于LAMP的环境的数据库部件建模。"DatabaseRole"类也引用用于后端软件配置的占位符模块(例如"lamp"和"lamp_baCkend")中的占位符类。占位符类和占位符模块的名称将被配置后端数据库软件的类和模块的实际名称取代。"DatabaseRole"类定义332也指定存储数据库的持久盘由"MysqlPD"类定义328的实例代表。此外,定义"vms"参数以指示如果将"single_node"标志设置成TRUE则用于安装LAMP环境的后端数据库软件的虚拟机将由"FrontendVM"类的示例代表,否则虚拟机将由"DatabaseVM"类的实例代表。
[0100]最后,在"lamp "模块320中,基于LAMP的环境的防火墙部件由"HttpFirewall"类定义 334 建模。"HttpFirewall"类定义从现有"utils.PublicTCPFirewall "类定义扩展、比如"utils.PublicTCPFirewall "类的协议、源和目标参数由"HttpFirewall"类继承。"HttpFirewall"类定义将"utils.PublicTCPFirewall"的"port"参数从"any"修改成"80"。[0101]在图2B中所示"lamp"模块320中阐述的每个类定义如用于应用专属部署和/或用于创建其它模块中的新类定义那样可扩展、可修改和/或可使用。图3C中所示配置规范340包括图3B中所示"lamp"模块320中的类定义并且在这些类定义上构建。在配置规范340的开头的语句342指向包含"lamp"模块320的类定义的文件以向编译器指示何处定位配置规范340中使用的基本类定义。
[0102]配置规范340用于配置应用部署,该应用部署在LAMP结构中起动虚拟机并且在虚拟机上安装Mantis调试软件。Mantis是用PHP脚本语言编写的基于web的错误跟踪系统并且与MySQL数据库和web服务器工作。
[0103]如在"MantisDeployment "类定义354中指定的那样,该部署需要安装两个软件作用和防火墙。在这一情况下,根据"MantisFrontend"类定义348和"MantisDatabaseRole"类定义350创建两个软件作用,而根据"MantisFirewall"类定义352创建防火墙。在编译配置规范340时,语句356产生"MantisD^loyment"类的实例并且使"MantisDeployment"类依赖于的其它类也被实例化。
[0104]在这一不例中,"MantisFrontend "类定义348从图2B中所不"lamp.FrontendRole"类定义330扩展。为Mantis软件安装而修改的类参数包括"roleName"、软件配置规范的"moduleName",可以从其复制Mantis软件二进制的"dataPackages"和将与Mantis应用部署关联的数据库主机。从"lamp.FrontendRole "类定义332继承用于Mantis前端的虚拟机方面的配置参数而无修改。换而言之,编写配置规范340的用户接受在"lamp"模块320中指定的默认虚拟 机配置并且无需用该级别的细节定制Mantis应用部署。
[0105]类似地,"MantisDatabaseRole"类定义 350 从图 3B 中所不"lamp.DatabaseRole"类定义332扩展。为Mantis软件安装而修改的类参数包括用于后端数据库作用的配置规范的"roleName"和"moduleName"。此外,将数据库作用的前端主机设置成的"MantisFrontendRole"的实例。从"lamp.DatabaseRole"类定义 332 继承用于数据库后端作用的虚拟机方面和持久盘方面的配置而无修改。
[0106]此外,"MantisFirewall"类定义352 从"lamp.HTTpFirewall"继承参数并且仅将用于"target"参数的值修改成"MantisFrontendRole"类的实例。从在"lamp"模块320中定义的基本类"lamp.HTTpFirewall"继承"MantisFirewall"类的其它参数、比如"port"和"protocol "参数。
[0107]在特殊"Params"类定义344中阐述Mantis部署特有的其它参数和值,并且在"MantisPackage"类定义346中指定从其复制Mantis软件的数据包。
[0108]在以上示例中,从为通用的基于LAMP的应用部署而创建的基本类定义(例如在"lamp"模块320中的类定义)导出用于Mantis软件部署的配置规范。无需为Mantis应用部署重新定义基于LAMP的部署的许多方面的配置。用于Mantis应用部署的配置规范仅需指定Mantis应用部署特有的或者需要定制的新参数或者新参数值。无需在配置规范340中重新指定或者修改已经为该部署的其它更多通用方面定义的参数。该部署的这些其它方面的细节可以保持对用户不透明。
[0109]图3A-图3C中所示示例仅举例说明用于编写基于云的部署的配置规范的面向对象的规范语言的性质。在各种实现方式中,面向对象的规范语言的确切语法可以脱离示例中所示语法。另外,可以创建许多类型的基本类以对可以在云环境中存在的部件建模。用于指定在由类建模的部件之间的关系的语法也可以从一个面向对象的规范语言到另一面向对象的规范语言变化。对于给定的面向对象的规范语言,可以创建编译器以根据预定语法规则集合解析在用面向对象的规范语言编写的配置文件中包括的类定义以提取用来在云环境中配置各种类型的部件的参数。
[0110]图4示出示例云服务提供方104的示例云服务管理器222。示例云服务管理器222负责根据由基于云的服务的监管用户(例如102a、102b、102c)提供的配置规范104部署服务。云服务管理器222通过云服务提供方104的前端120从云客户的监管用户接收通信。在一些实现中,云服务管理器222可以具有它自己的与云服务客户直接通信的前端部件。
[0111]在前端120从云服务客户(例如102a、102b、102c)的监管用户接收配置规范104之后,前端120向云服务管理器222的API翻译器404传递接收的配置规范104。API翻译器404具有对核心类定义(例如存储于定义数据库406中)和翻译协议(例如存储于规则数据库408中)的库的访问,这些翻译协议关于如何将核心类定义翻译成用于配置云服务提供方104的基于云的环境的各种部件的各API调用集合。
[0112]例如API翻译器404可以包括编译器(例如解析脚本或者程序),该编译器解析在配置规范104中接收的类定义、标识所有基本类——在配置规范中的类别是从这些基本类导出的——并且提取留为未修改的基本类参数以及修改或者新的类参数。此外,编译器也从类定义中的语句标识在基于云的部署的部件之间的所有关系(例如连接和依赖)。基于类参数的值和存储的翻译协议,API翻译器404生成用于配置基于云的部署的各种方面的适当API调用集合410。
[0113]例如翻译协议可以包括在对基于云的环境的相应模块方面建模的核心类定义到用来配置基于云的环境的该方面的API调用组之间的映射。翻译协议还可以包括用于用从核心类定义导出的类中的为基于云的环境的该模块方面指定的参数值修改API调用集合(例如改变在API调用中使用的默认参数)的协议。
[0114]作为更具体示例,假设标准虚拟机类定义(例如"std.VM"类)是编译器已知的核心类定义。编译器将具有对翻译规则的访问,该翻译规则将核心类定义映射到如下配备API调用集合,对云服务提供方104的内核层中的VM管理器进行这些配备API调用用于部署标准虚拟机影响。可以在配备API调用中使用默认参数集合(例如重复计数、IP地址、存储器要求等)。用于修改API调用的协议可以包括用于根据在规范配置中和在从标准虚拟机类定义导出的中间类定义中指定的参数值改变默认参数值的协议。例如,如果从标准虚拟机映像导出的新类定义的类参数指定将在虚拟机映像上安装软件包,则翻译协议将指定应当如何向与配置标准虚拟机映像关联的API调用组添加用于在指明的虚拟机上安装软件包的附加API调用。
[0115]在一些实现中,编写用于将类定义翻译成API调用的协议为程序脚本。由于向类定义数据库406添加新核心类定义,所以可以创建并且向翻译规则数据库408添加用于翻译新类定义的协议。翻译协议可以例如由云服务提供方104创建。在一些实现中,在解析接收的配置规范的过程中遇到特定类定义时,API翻译器404定位和运行对应脚本以将类定义解析成API调用集合。API调用在执行时使类定义指定的配置在基于云的环境中被实现。[0116]在一些实现中,向云服务管理器222的服务启动器部件412发送API翻译器404生成的API调用410。服务启动器部件412负责向其中可以执行API调用410的、云服务提供方104的云服务环境或者部件的各种层用信道发送API调用。在一些实现中,在由于在部署的各种方面之间的差异而将在若干阶段中执行部署时,服务启动器部件412也负责检查向层和/或部件发送出API调用的顺序并且验证已经在恰当序列中完成API调用。
[0117]由于可以在多个配置规范中重用如在本说明书中公开的那样用面向对象的规范语言编写的类定义,所以云服务的管理员用户可以希望在他们自己的配置规范中运用由第三方(例如另一用户、云服务提供方的服务开发者或者第三方开发者)提供的类定义而不是自行开发那些类定义。在一些实现中,用于共享/销售和选择现有配置规范和可重用类定义的集市可以例如由云服务提供方或者第三方提供方提供。
[0118]在这一示例中,云服务提供方104提供这样的用于共享可重用配置规范和类定义的平台。在一些实现中,云服务提供方的前端120提供定义提交用户界面和定义选择界面以有助于共享可重用配置规范和类定义。提供配置规范和类定义416以用于由其它方使用的各方充当用于云服务提供方104的定义提供方414来服务。潜在定义用户包括基于云的服务的监管用户。潜在定义用户也可选地包括定义供应方,这些定义供应方基于由其它定义供应方提供的现有类定义创建新可重用类定义或者用于提交的类定义。
[0119]如图4中所示,云服务提供方104的云服务管理器222或者云服务管理器222的部件可以服务于管理用于共享可重用类定义的平台。定义供应方414通过由前端120提供的定义提交用户界面向云服务管理器222提交可重用类定义416。每个类定义提交可以比如在类模块中包括多个可重用类定义。在提交中的每个类定义伴随有对类定义如果在配置规范中被随后使用则可以实现的初始配置状态的描述。在一些实现中,描述也包括关于如何可以在配置规范中随后修改类定义中的类参数以适应特定部署的需要的指令。
[0120]在定义供应方提交可重用类定义或者可重用类定义模块时,云服务管理器222可以在类定义数据库(例如类定义数据库406)中存储接收的类定义。在一些实现中,前端120为定义供应方414提供注册和认证服务。与注册的定义供应方414的标识符关联地存储从定义供应方接收的每个类定义或者类模块,从而可以在由定义用户随后使用或者购买类定义时对定义供应方414恰当贷记。
[0121]在一些实现方式中,定义供应方414可以免费或者有成本可重用类定义416。云服务管理器222可以通过定义共享平台有助于向潜在定义用户(例如云服务客户的监管用户)销售或者许可可重用类定义。在一些实现中,定义供应方414针对用于由定义供应方414提供的可重用类定义的不同使用水平提供、并且云服务管理器存储与销售或者许可关联的相应价格。
[0122]在一些实现中,云服务管理器222通过前端210提供定义选择用户界面。定义选择用户界面呈现比如在定义新类定义过程中可用于重用的类定义。新类定义包括在新部署的配置规范中包括的类定义并且可选地包括向云服务提供方提交的用于由其它方重用的类定义。潜在定义用户(例如云服务客户的监管用户和定义供应方)可以将可用于通过定义选择界面选择的类定义与它们的价格和描述并且可选地与评论和质量分数一起查看,并且判决是否在配置规范中重用类定义中的一个或者多个类定义或者用于导出信类定义。
[0123]在一些实现中,定义选择用户界面允许类定义的用户下载或者复制可用于选择的可重用类定义。在一些实现中,用户无需复制或者下载类定义并且可以仅通过在向云服务提供方提交的用于部署的配置规范中标识模块和类名称来使用类定义。云服务管理器222将标识和定位在规范文件中引用的类定义并且保持类定义的使用跟踪。
[0124]在一些实现中,重用涉及到整个模块(图3B中所示"lam p"模块),其中该模块包括多个相关类定义的汇集,这些类定义用于配置包括多个子部件的云部件。在一些实现中,基于类定义或者类模块所建模的部件类型对类定义或者类模块分类。在一些实现中,定义选择界面允许类定义的潜在用户按类别、功能、定义供应方和与类定义和模块关联的其它属性来搜索或者回顾可用类定义。
[0125]在一些实现中,云服务提供方104或者第三方提供方也提供用于软件供应方418提供软件解决方案的平台,这些软件解决方案伴随有用于配置软件解决方案的多个备选配置规范或者备选类定义汇集。例如员工管理程序可以伴随有为具有不同规模、需要和内部基础设施的云服务客户定制的配置规范。在云服务客户购买或者许可用于在云服务提供方104的云环境中部署的软件解决方案时,云服务客户可以选择最适应它的需要的配置规范。
[0126]在一些实现中,服务管理器222可以通过前端120提供的软件提交用户界面接收与伴随有配置规范(例如配置规范或者可重用类定义模块)的软件解决方案的提交。在一些实现中,软件提交用户界面包括注册和认证能力,从而与提交配置卷包的软件解决方案420的软件提供方关联地存储配置卷包的软件解决方案420的每个提交。
[0127]云服务提供方104可以通过前端120在软件选择界面中向云服务客户(例如102a、102b、102c)提供配置卷包的软件解决方案。软件选择界面也可以提供对伴随每个软件解决方案的不同配置规范的描述。在用户(例如基于云的应用服务的监管用户)从软件选择界面选择软件解决方案和伴随配置规范之一时,云服务提供方104可以根据选择的配置规范在基于云的环境中起动软件解决方案而有或者无附加定制。
[0128]在一些实现中,云服务提供方104有助于(例如记账部件426)为通过由基于服务提供方104提供的平台实现的、可重用配置规范、可重用类定义和配置卷包的软件解决方案的销售和购买记账。在一些实现中,云服务提供方无需直接提供这些平台、但是基于已经在云服务提供方104的云环境中出现的实际使用向可重用配置规范、可重用类定义和配置卷包的软件解决方案的用户和提供方提供(例如记账部件426的)记账服务。
[0129]在一些实现中,云服务管理器222包括服务监视器422。服务监视器422监视已经在云服务提供方104的云环境中部署的云服务的状态。服务监视器422监视的状态例如包括为基于云的部署的每个部件运用的虚拟资源、虚拟资源的使用水平、基于云的部署的每个部件运用的云服务、云服务的使用水平。服务监视器422可以基于与每个基于云的部署关联的虚拟资源和基于云的服务的状态计算与部署关联的性能度量。性能度量例如包括接收的用户请求数目、与响应关联的延时、虚拟资源和服务的可用性、每个虚拟资源或者服务的故障率、虚拟资源和服务的容错水平等。在一些实现中,在云服务管理器222的性能数据存储库424中存储性能度量。
[0130]如在本说明书中公开的那样,可以根据用面向对象的规范语言编写的配置规范执行基于云的部署,其中配置规范包括在不同抽象化水平对基于云的部署的不同方面建模的类定义。在云服务管理器222将配置规范处理成类定义集合时,云服务管理器222能够跟踪已经对部署的那些不同方面中的每个方面的配置有影响的类定义的分级。另外,云服务提供方能够将专用于基于云的部署的不同方面的虚拟资源和服务与对基于云的部署的那些方面的配置有影响的不同类分级进行关联。
[0131]因此,面向对象的规范语言允许基于对基于云的部署的方面的性能有贡献的虚拟资源和服务的状态和性能来为这些不同方面中的每个方面导出性能度量。具体而言,与基于云的部署的每个方面关联的性能与在配置基于云的部署的该方面时涉及到的类定义关联。然后可以在为类定义确定质量测量时使用与类定义关联的性能来作为因素。如果在配置多个基于云的部署时使用类定义,则与类定义关联的总体性能可以用来评估类定义的指令。
[0132]使用图3B和3C中所示可重用类定义和配置规范作为示例,在服务云管理器222根据"MantisDeployment"类定义354和"MantisDeployment"类定义354依赖于的所有基本类在Mantis应用部署中部署Mantis和MySQL软件应用和防火墙服务时,服务管理器222可以监视软件作用、防火墙服务和支持软件作用的下层虚拟机的相应性能。云服务管理器222可以例如关联前端作用的相应性能与对Mantis部署的前端部件的配置有影响的类、关联防火墙部件的相应性能与对防火墙部件的配置有影响的类、关联在前端作用下层的虚拟机的相应性能与对前端虚拟机的配置有影响的类等等。
[0133]在一些实现中,云服务管理器222可以根据用面向对象的规范语言编写的配置规范生成基于云的部署的系统框图。例如可以从系统规范中的类定义标识基础设施部件、存储装置、服务、软件作用的性质以及它们的相互关系(例如依赖和连接)和重新配置触发并且将这些表示为部署的系统框图中的对应元素。可以例如在API翻译器404解析配置规范时创建基本系统框图。
[0134]图5示出可以基于图3C中所示部署规范340创建的框图500。在解析Mantis应用部署的配置规范340时,云服务管理器222从"MantisD^loyment"类定义354识别存在在部署中涉及到的两个软件作用和防火墙、例如由"Manti sFrontendRoIe "和"MantisDatabaseRole "类定义建模的软件作用以及由"MatisFirewall "类定义建模的防火墙。因此,云服务管理`器222可以在代表Mantis应用部署的块502内添加用于前端作用的块504、用于数据库作用的块506以及用于防火墙服务的块508。
[0135]接着根据"MantisFrontendRole"类的类定义,云服务管理器222确定将根据"mantis_fronten d" class的类定义部署服务于前端作用的软件应用。云服务管理器222因此在块504内添加块510以代表服务于前端作用的前端软件。类似地,服务管理器222从"MantisDatabaseRole"类的类定义确定将根据"mantis_backend"的类定义部署服务于数据库作用的软件应用。因此,服务管理器在块506内添加块512以代表服务于数据库作用的后端数据库软件。
[0136]另外,根据"MantisFrontendRole"和"MantisDatabaseRole"的类定义348 和350,前端作用和数据库作用相互连接。基于"MantisFirewall"的类定义352,防火墙连接到前端作用。因此,云服务管理器222可以在块504与块506之间插入连接514以代表在前端作用与数据库作用之间的连接关系。此外,云服务管理器222也在块504与块508之间插入连接516以代表在前端作用与防火墙之间的连接关系。
[0137]此外,由于"MantisFrontRole"类定义 348 从"FrontRole "类定义330扩展,所以云服务管理器222从"FrontRole "类的类定义330确定将在由"FrontendVM"类定义324建模的虚拟机上安装前端软件(例如Mantis软件)。类似地,"MantisDatabaseRole"类定义350从"DatabaseRole"类定义332扩展,并且云服务管理器222从"DatabaseRole"类的类定义332确定将在与前端作用软件相同的虚拟机上安装后端数据库软件(例如MySQL数据库软件)。基于以上信息,服务管理器222在块504和506之下添加块518以代表用于前端作用和数据库作用的下层虚拟机。
[0138]另外,根据"DatabaseRole"类定义332,云服务管理器222确定持久盘由在下层虚拟机上的装配点连接到数据库作用。根据在"MysqlPD"类定义328中指定的规范部署来部署持久盘。因此,服务管理器222向块502添加代表mantis部署的块520并且添加连接522以代表在数据库软件、它的下层虚拟机和持久盘之间的连接关系。
[0139]在一些实现中,在部署该部署的部件时,服务管理器222也可以为在框图500中表示的每个块或者连接记录与下层基础部件关联的标识符(例如进程ID或者虚拟机和其它虚拟资源的标识符)。在云服务管理器222监视用于部署的下层虚拟资源和服务的状态时,云服务管理器222可选地为在框图500中表示的每个部件(例如块和连接)确定性能或者使用度量。云服务管理器222也可以可选地代表系统框图500中的不同部件的性能和使用。
[0140]在一些实现中,可以在框图500上示出该部署的这些不同部件的性能和使用及其改变的可视化。在一些实施中,云服务管理器222可以在用于每个云服务用户的云服务的管理界面中在框图上以可视形式呈现性能和使用统计。例如可以将性能和使用统计表示为根据部件在云环境的实际条件动态改变的直方图或者饼形图。在一些实现中,云服务提供方根据性能和使用统计向云服务客户端结算。
[0141]在一些实现中,配置规范可选地包括可编程地触发的重新配置请求。例如用于部件的配置规范可以指定在特定的监视的参数达到指定的阈值时云服务管理器222将按照指定的数量缩放配备的虚拟机或者服务。对于更具体示例,持久盘类的类定义(例如"MysqlPD"类定义)可以包括如下语句,该语句请求在盘容量被80%利用时增加持久盘的大小;"frontendVM"类的类定义可以请求在前端作用的延时多于一秒时前端VM的"replica-count"参数将被增加一;等等。
[0142]如在本说明书中阐述的那样,面向对象的规范语言允许基于云的部署中的每个部件的配置由相应类定义集合指定。在解析配置规范时,服务管理器能够标识部署的部件并且标识所有如下基本类,这些基本类的类参数对部件的配置状态有贡献或者影响。在一些实现中,每个部件的性能与对该部件的配置有贡献的类定义关联。如果类定义对多个部署中的多个部件的配置有贡献,则多个部署中的这些多个部件的性能可以都与该类定义关联。可以至少部分基于多个部署中的所有多个部件的总体性能评估类定义的质量。
[0143]在一些实现中,云服务管理器保持每个类定义在基于云的环境中的使用的跟踪并且向已经在他们的部署中使用类定义的云服务用户收费。可选地,向用户结算的收费数量基于用户已经为在用户已经请求的所有部署中的类定义而增长的使用数量。在一些实现中,在类定义由第三方定义提供方提供时,云服务管理器222可以对于第三方定义提供方提供的类定义的每个使用而记录向第三方定义提供方的贷记。
[0144]例如在解析图3C中所示用于Mantis应用部署的配置规范时,云服务管理器222记录Mantis前端部件504根据从"lamp.FrontendRole "类定义330扩展的"Mant i sFrontendRo I e "类定义 348 来部署、将"mantis_frontend "类定义用于软件配置并且"MantisPackage"类定义347用于标识软件包的位置并且连接到"MantisDatabaseRole"类 350。另外,服务管理器 222 确定"lamp.FrontendRole "类定义330还从"std.Role"类定义扩展、使用FrontendVM"类定义324并且FrontendVM"类定义 324 从"utils.ConfiguratorLAMP"类定义扩展。
[0145]云服务管理器222可以继续通过跟踪连接到"MantisFrontendRole"类定义348的类分级来标识在部署的前端作用部件的配置中涉及到的类定义,直至标识出最基本类定义集合。对前端作用部件的配置有共享的所有类定义与用于部署的前端作用部件关联。可以为部署的每个部件执行相似过程。
[0146]在执行部署时,云服务管理器222可以根据在部署中使用每个类定义的次数记录该类定义在配置部署时的使用。在一些实现中,根据由类定义的定义工艺中建立的支付结构(例如按使用许可或者按销售收费)在每个部署中仅一次或者为每个用户对类定义的多个使用计数。
[0147]在一些实现中,在可重用定义的集市中,可以根据每个重用的类定义在使用该类定义的所有部署中的总体性能比对其它重用的类定义对该重用的类定义排行。在一些实现中,部署的性能可以与对部署的配置有贡献的每个类定义关联,并且在评价该类定义的质量时被使用。在一些实现中,仅配置受类定义影响的那些部件的性能与该类定义关联并且在评价类定义的质量时被使用。
[0148]例如在云服务管理器标识多个部署中的受虚拟机类定义影响的多个部件时,在评价虚拟机类定义的质量时使用多个部件的总体性能。此外,在云服务管理器标识对部署的前端作用部件的配置有贡献的所有类定义时,部署中的与前端作用部件关联的性能将与这些标识的类定义中的每个类定义关联。
[0149]在一些实现中,基于与至少部分基于每个定义而配置的所有多个部件或者部署关联的总体性能为该类定义计算质量分数。可以在云服务提供方提供的定义选择界面中与类定义呈现质量分数。在一些实现中,可以例如基于利用每个类定义的部署的规模、该类定义在利用该类定义的每个部署中的权值或者影响、根据该类定义而配置的部件的可用性、容错性、可缩放性和部件的故障率、遇到的问题类型、为了化解遇到的问题而需要的修改、显式用户反馈等为该类定义计算多个质量度量。基于各种质量度量,可以为每个共享的类定义提供一个或者多个类型的质量分数,并且潜在定义用户可以基于质量分数浏览可用共享类定义的列表。
[0150]虽然以上示例描述关于可重用类定义的质量分数,但是可以为可重用类模块、可重用配置规范或者配置卷包的软件解决方案计算相似质量分数。
[0151]图6是用于处理用面向对象的规范语言编写的配置规范的示例过程600的流程图。在图3A-3C中所示示例中描述这样的高级面向对象的规范语言的示例。示例过程600可以由云服务提供方(例如图1中所示云服务提供方104)、比如由云服务提供方的云服务管理器(例如云服务管理器222)执行。在一些实现中,云服务管理器通过API翻译器部件(例如图4中的API翻译器404)执行过程600。
[0152]在示例过程600中,(例如云服务提供方的API翻译器)接收用于配置基于云的部署的配置规范(602)。配置规范是用面向对象的规范语言编写的并且需要实例化一个或者多个类的类定义。每个类模型使用可配置类参数组对基于云的部署的相应数据或者功能部件建模。每个类的相应类定义代表由该类建模的数据或者功能部件的请求的状态。基于一个或者多个类的类定义导出用于配置基于云的部署的多个API调用(604)。然后,用于云服务提供方的API翻译器使多个API调用被执行以配置基于云的部署(606)。
[0153]在一些实现中,一个或者多个类包括至少一个现有基本类和从现有基本类扩展的至少一个定制的类。在一些实现中,定制的类继承现有基本类的相应类参数并且修改从现有基本类继承的类参数中的至少一个类参数的值。附加地或者备选地,定制的类继承现有基本类的相应类参数并且包括现有基本类中未存在的至少一个新类参数。
[0154]在一些实现中,每个类建模的数据或者功能部件是支持基于云的服务的虚拟设备、在基于云的环境中利用的服务、由基于云的环境中的安装的应用执行的软件作用、保持将在基于云的环境的部署或者操作期间使用的数据的数据包中的一项或者它们中的一项或者多项的组合。
[0155]在一些实现中,面向对象的规范语言支持在类定义之间的依赖,并且在第一类与第二类之间的定义依赖代表在由第一类和第二类建模的各部件之间的部署依赖。在一些实现中,在第一类与第二类之间的定义依赖由第一类的类参数表达,其中第一类的类参数引用第二类的实例。
[0156]在一些实现中,面向对象的规范语言支持在类定义之间的连接,并且将第二类的实例连接到第一类的类参数的值指派代表在由第一类和第二类建模的相应部件之间的连接。
[0157]图7是用于以基于云的部署的配置规范为基础导出框图的示例过程700的流程图,该框图示出基于云的部署的拓扑。示例过程700可以由云服务提供方(例如图1和图4中所示云服务提供方104)的云服务管理器执行。
[0158]在示例过程700中,云服务提供方基于配置规范中的一个或者多个类的各类定义来标识由一个或者多个类建模的多个数据和功能部件以及在多个数据或者功能部件之间存在的一个或者多个依赖和连接关系(702)。然后,云服务提供方基于标识的多个数据和功能部件以及标识的依赖和连接关系导出基于云的环境的框图(704)。在一些实现中,在导出框图时,云服务提供方也在框图中表示用于动态重新配置基于云的环境的触发事件。
[0159]图8是用于监视基于云的部署的性能并且关联性能与在配置基于云的部署时使用的类定义的示例过程800。
[0160]在示例过程800中,对于每个类定义,云服务提供方标识按照基于云的部署的方面的相应初始配置状态受类定义影响的方面(802)。云服务提供方监视与标识的方面关联的一个或者多个性能度量(804)。云服务提供方将一个或者多个性能度量与类定义(806)进行关联。然后,云服务提供方在计算类定义的质量度量时利用一个或者多个性能度量(808)。
[0161]图9是用于基于至少部分基于重用的类定义而配置的多个基于云的部署的总体性能评价重用的类定义的质量的示例过程900的流程图。
[0162]在示例过程900中,云服务提供方标识各自已经根据用面向对象的规范语言编写的相应配置规范执行的多个基于云的部署(902)。云服务提供方然后标识至少一个基本类,该至少一个基本类的类定义在多个基于云的部署中的数个基于云的部署中被使用(904)。云服务提供方监视多个基于云的部署中的数个基于云的部署中的每个的相应性能(906)。云服务提供方然后基于多个基于云的部署中的数个基于云的部署的总体性能计算至少一个基本类的质量度量(908)。在一些实现中,多个基于云的环境中的数个环境中的每个环境的性能是与由至少一个类建模的数据或者功能部件关联的性能。
[0163]图10是用于导出API调用的示例过程1000的流程图,这些API调用用于基于在配置规范中使用的类定义而配置基于云的部署。
[0164]在示例过程1000中,云服务提供方存储面向对象的规范语言的多个核心类的各类定义(1010)。每个核心类对应于基于云的环境的模块部件,并且每个核心类可用附加类参数扩展以配置相应模块部件。云服务提供方也存储在核心类中的每个核心类与各API调用组之间的映射(1020)。相应API调用组用于根据核心类的类参数配置与核心类关联的模块部件。云服务提供方也存储用于修改与每个核心类关联的各API调用组以为从核心类导出的新类定义而获得新API调用组的多个协议(1030)。
[0165]在一些实现中,为了导出用于配置基于云的部署的多个API调用,云服务提供方基于与从其导出配置规范的一个或者多个类的多个核心类中的一个或者多个核心类关联的各API调用组、并且基于用于修改相应API调用组的多个协议来导出多个API调用。
[0166]在一些实现中,多个协议还包括用于根据在根据面向对象的规范语言编写的类定义中指定的依赖和连接关系施加API调用组的排序的规则。
[0167]图11是用于提供用于共享可重用类定义的平台的示例过程1100的流程图。示例过程1100可以由云服务提供方或不提供基于云的服务的平台提供方来执行。
[0168]在示例过程1100中,云服务提供方或者平台提供方从多个定义供应方中的每个定义供应方接收相应定义提交(1110)。相应定义提交包括用面向对象的规范语言编写的一个或者多个类定义。每个类定义使用可配置类参数之对基于云的部署的数据或者功能部件建模并且可扩展以通过修改可配置类参数组的一个或者多个类参数或者添加一个或者多个新类参数来创建至少一个新类定义。云服务提供方或者平台提供方然后提供呈现从多个定义供应方接收的类定义的用户界面以用于由多个定义用户回顾和选择(1120)。
[0169]图12是用于基于都使用至少一个公共可重用类定义的不同配置规范配置多个不同的基于云的部署的示例过程1200的流程图。示例过程1200可以由云服务提供方、比如图4中所示示例云服务提供方104执行。
[0170]在示例过程1200中,云服务提供方接收用面向对象的规范语言编写的多个不同配置规范(1210)。多个不同配置规范各自用于配置不同的基于云的部署并且包括从多个定义供应方接收的类定义中的相同类定义扩展的不同类定义。然后,云服务提供方至少基于在不同的基于云的部署中的每个不同的基于云的部署的不同配置规范中的、接收的类定义中的相同类定义和从相同类定义扩展的不同类定义而配置该不同的基于云的部署(1220)。
[0171]图13是用于向定义用户收费并且基于由定义供应方提供的可重用类定义的使用向定义供应方贷记的示例过程1300的流程图。
[0172]在示例过程1300中,对于接收的类定义中的每个类定义,云服务提供方监视类定义在已经用来配置多个基于云的部署的多个配置规范中的使用(1310)。云服务提供方为类定义在多个配置规范中的每个使用而记录向类定义的定义供应方的贷记和向与使用关联的定义用户的收费(1320)。
[0173]在一些实现方式中,类定义的使用包括类定义在已经用来执行相应的基于云的部署的相应配置规范中的实例化。在一些实现中,类定义的使用包括扩展类定义以创建在用来执行相应的基于云的部署的相应配置规范中实例化的新类定义。
[0174]图14是用于提供用于销售“配置卷包”的软件解决方案的平台的示例过程1400的流程图。过程1400可以由云服务提供方或未提供基于云的服务的平台提供方提供。
[0175]在示例过程1400中,云服务提供方或者平台提供方从软件供应方接收软件提交(1410)。软件提交包括将在基于云的环境中部署的软件应用和各自用于用不同方式在基于云的环境中部署软件应用的多个不同配置规范。然后,云服务提供方或者平台提供方提供多个不同配置规范用于由软件用户回顾和选择(1420)。
[0176]图15是用于基于软件用户对配置卷包的软件解决方案的选择向软件用户收费并且向软件提供方贷记的示例过程1500的流程图。示例过程1500可以由云服务提供方(例如图4中所示云服务提供方104)执行。
[0177]在示例过程1500中,云服务提供方接收软件用户对多个不同配置规范之一的选择(1510)。云服务提供方根据选择的不同配置规范在基于云的环境中部署软件应用(1520)。然后,云服务提供方基于与选择的不同配置规范关联的相应价格记录向软件用户的收费和向软件提供方的贷记(1530)。在一些实现中,为了提供多个类定义用于选择,云服务提供方在选择用户界面中随着多个类定义中的每个类定义提供各性能度量以用于用户回顾。
[0178]图16是用于在对已经在配置多个基于云的部署时使用的可重用类定义排行时利用多个基于云的部署的总体性能度量的示例过程1600的流程图。示例过程1600可以由云服务提供方(例如图4中的云服务提供方104)执行。
[0179]在示例过程1600中,云服务提供方提供多个类定义以用于选择(1610)。每个类定义使用可配置类参数组对基于云的环境的相应数据或者功能部件建模。每个类定义支持在用于基于云的部署的配置规范中实例化和继承类定义。云服务提供方也基于多个基于云的部署的总体性能导出与多个类定义中的每个类定义关联的各性能度量,其中已经根据需要实例化类定义或者从类定义导出的新类定义的相应配置规范执行多个基于云的部署(1620)。然后,云服务提供方在对多个类定义排行时利用与多个类定义中的每个类定义关联的各性能度量(1630)。
[0180]图17是用于对可重用类定义分类并且在可重用类定义的相应类别内对它们排行的示例过程1700的流程图。
[0181]在不例过程1700中,云服务提供方基于该基于云的环境的由多个类定义建模的相应数据或者功能部件对多个类定义分类(1710)。然后,云服务提供方在多个类定义的各类别内对类定义排行(1720)。
[0182]图18是用于关联多个基于云的部署的性能与用来配置多个基于云的部署的类定义的示例过程1800的流程图。
[0183]在示例过程1800中,对于多个类定义中的每个类定义,云服务提供方标识已经根据需要实例化类定义或者从类定义导出的至少一个新类定义的各配置规范执行的多个基于云的部署(1810)。云服务提供方监视多个基于云的部署的各性能(1820)。云服务提供方然后关联多个部署的各性能与类定义(1830)。
[0184]图19是用于基于多个部署的总体性能导出与重用的类定义关联的性能度量的示例过程1900的流程图。
[0185]在基于多个基于云的部署的总体性能导出与多个类定义中的每个类定义关联的各性能度量时,云服务提供方执行示例过程1900。在示例过程1900中,云服务提供方为多个类定义中的每个类定义标识根据类定义或者从类定义导出的新类定义而配置的多个基于云的部署中的一个或者多个数据或者功能部件(1910)。云服务提供方标识与标识的一个或者多个数据或者功能部件关联的一个或者多个性能度量(1920)。然后,云服务提供方通过聚合标识的一个或者多个性能度量来导出与类定义关联的各性能度量(1930)。在一些实现方式中,性能度量包括延时、可靠性、可缩放性、可用性或者安全性的一个或者多个度量。
[0186]图20是用于在对可重用类定义排行时利用多个因素的示例过程2000的流程图。
[0187]在示例过程2000中,对于每个类定义,云服务提供方跟踪已经至少部分根据类定义而配置的基于云的部署的相应计数(2010)。可选地,云服务提供方跟踪在已经至少部分基于类定义而配置的基于云的部署中遇到的问题的相应计数。可选地,云服务提供方也跟踪用于化解在已经至少部分根据类定义而配置的基于云的部署中遇到的问题的所需改变的数目。然后,云服务提供方在对多个类定义排行时利用与多个类定义关联的各计数(2020)。可选地,云服务提供方在对多个类定义排行时也利用与多个类定义关联的问题的各计数和所需改变的各数目。
[0188]在一些实现中,与多个类定义关联所需改变的相应数目用来计算在对多个类定义排行时向与多个类定义关联的相应性能度量给予的相应权值。
[0189]可以在数字电子电路装置中或者在包括说明书中公开的结构及其结构等效物的计算机软件、固件或者硬件中或者在它们中的一项或者多项的组合中实施本说明书中描述的主题内容和功能操作的实施例。可以实施本说明书中描述的主题内容的实施例为一个或者多个计算机程序、即在计算机存储介质上编码的用于由数据处理装置执行或者用于控制数据处理装置的操作的一个或者多个计算机程序指令模块。备选地或者附加地,程序指令可以被编码于人为生成的传播信号、例如机器生成的电、光或者电磁信号上,该传播信号被生成用于对信息进行编码用于向适当接收器装置传输以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或者串行存取存储器设备或者它们中的一项或者多项的组合。
[0190]术语“数据处理装置”涵盖所有种类的用于处理数据的装置、设备和机器、举例而言包括可编程处理器、计算机或者多个处理器或者计算机。装置可以包括专用逻辑电路装置、例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。装置除了硬件之外也可以包括为讨论的计算机程序创建执行环境的代码、例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一项或者多项的组合的代码。
[0191]可以用包括编译或者解译语言或者声明性或者过程化语言的任何形式的编程语言编写计算机程序(也称为程序、软件、软件应用、脚本或者代码),并且可以用任何形式部署它、包括部署为独立程序或者部署为适合在计算环境中使用的模块、部件、子例程或者其它单元。计算机程序可以但是无需对应于文件系统中的文件。程序可以存储于保持其它程序或者数据的文件(例如存储于标记语言文档中的一个或者多个脚本)的部分中、专用于讨论的程序的单个文件中或者多个协同文件(例如存储一个或者多个模块、子程序或者代码部分的文件)中。计算机程序可以被部署用于在一个计算机上或者在位于一个地点或者分布于多个地点并且由通信网络互连的多个计算机上执行。
[0192]在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该一个或者多个可编程处理器执行一个或者多个计算机程序以通过对输入数据操作并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路装置、例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)执行并且也可以实施装置为该专用逻辑电路装置。
[0193]举例而言,适合执行计算机程序的处理器包括通用和专用微处理器以及任何种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的基本单元是用于进行或者执行指令的处理器以及用于存储指令和数据的一个或者多个存储器设备。一般而言,计算机也将包括用于存储数据的一个或者多个海量存储设备、例如磁盘、磁光盘或者光盘或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备发送数据或者二者。然而计算机无需具有这样的设备。另外,计算机可以嵌入于另一设备中,聊举数例,另一设备例如是移动电话、个人数字助理(PDA)、移动音频或者视频播放器、游戏控制台、全球定位系统(GPS)接收器或者便携存储设备(例如通用串行总线(USB)快闪驱动)。
[0194]适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言,这些形式包括半导体存储器设备、例如EPROM、EEPROM和闪存设备;磁盘、例如内部硬盘或者可拆卸盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路装置补充或者并入于专用逻辑电路装置中。
[0195]为了提供与用户的交互,在本说明书中描述的主题内容的实施例可以实施于计算机上,该计算机具有用于向用户显示信息的显示设备、例如CRT (阴极射线管)或者LCD (液晶显示器)监视器以及用户可以用来向计算机提供输入的键盘和指示设备、例如鼠标或者跟踪球。其它种类的设备也可以用来提供与用户的交互;例如向用户提供的反馈可以是任何形式的感测反馈、例如视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声音、话音或者触觉输入的任何形式接收来自用户的输入。此外,计算机可以通过向用户使用的设备发送文档和从该设备接收文档、例如通过响应于从用户的用户上的web浏览器接收的请求向web浏览器发送网页来与用户交互。
[0196]在本说明书中描述的主题内容的实施例可以实施于计算系统中,该计算系统包括例如作为数据服务器的后端部件或者包括中间件部件、例如应用服务器或者包括前端部件、例如具有图形用户界面或者web浏览器——用户可以通过该图形用户界面或者web浏览器与本说明书中描述的主题内容的实现方式交互——的客户端计算机或者一个或者多个这样的后端、中间件或者前端部件的任何组合。系统的部件可以由任何数字数据通信形式或者介质、例如通信网络互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、例如因特网。
[0197]计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。客户端和服务器的关系借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生。
[0198]尽管本说明书包含许多具体实施细节,但是这些不应解释为限制任何发明的或者可以要求保护的内容的范围而实际上描述具体发明的具体实施例可以特有的特征。在本说明书中在单独实施例的背景中描述的某些特征也可以在单个实施例中组合实施。反言之,在单个实施例的背景中描述的各种特征也可以在多个实施例中单独或者在任何适当子组合中实施。另外,虽然上文可以描述特征为在某些组合中动作并且甚至起初这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变化。
[0199]类似地,尽管在附图中按特定顺序描绘操作,但是这不应理解为要求按所示特定顺序或者按依次顺序进行这样的操作或者进行所有所示操作以实现希望的结果。在某些境况中,多任务和并行处理可以是有利的。另外,在以上描述的实施例中的各种系统部件的分离不应理解为在所有实施例中要求这样的分离,并且应当理解描述的程序部件和系统一般可以一起集成于单个软件产品中或者封装成多个软件产品。
[0200]这样已经描述主题内容的具体实施例。其它实施例在所附权利要求的范围内。例如在权利要求中记载的动作可以按不同顺序来进行而仍然实现希望的结果。作为一个示例,在附图中描绘的过程未必需要所示具体顺序或者依次顺序以实现希望的结果。在某些实现方式中,多任务和并行处理可以是有利的。
【权利要求】
1.一种计算机实现的方法,包括: 接收用于配置基于云的部署的配置规范,所述配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 基于所述一个或者多个类的所述相应类定义来标识由所述一个或者多个类建模的多个数据和功能部件以及在所述多个数据或者功能部件之中存在的一个或者多个依赖关系和连接关系; 基于标识的所述多个数据和功能部件以及标识的所述依赖关系和连接关系导出基于云的环境的框图;以及 在所述框图中表示用于动态重新配置所述基于云的环境的触发事件。
2.根据权利要求1所述的计算机实现的方法,其中: 所述一个或者多个类包括至少一个现有基本类和至少一个从所述现有基本类扩展的定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者包括未存在于所述现有基·本类中的至少一个新类参数。
3.根据权利要求1所述的计算机实现的方法,其中: 由每个类建模的所述数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
4.根据权利要求1所述的计算机实现的方法,其中: 所述规范语言支持在类定义之间的依赖以及在类定义之间的连接中的至少一项,并且其中在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的相应部件之间的部署依赖,并且其中将第二类的实例链接到第一类的类参数的值指派代表在由所述第一类和所述第二类建模的各部件之间的连接。
5.一种计算机实现的方法,包括: 接收用于配置基于云的部署的配置规范,所述配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 标识各自已经根据用所述规范语言编写的相应配置规范而执行的多个基于云的部署; 标识至少一个基本类,所述至少一个基本类的类定义在所述多个基于云的部署中的数个基于云的部署中被使用; 监视所述多个基于云的部署中的所述数个基于云的部署中的每个的相应性能;以及 基于所述多个基于云的部署中的所述数个基于云的部署的总体性能来计算所述至少一个基本类的质量度量。
6. 根据权利要求5所述的计算机实现的方法,其中: 所述一个或者多个类包括至少一个现有基本类和至少一个从所述现有基本类扩展的定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者包括未存在于所述现有基本类中的至少一个新类参数。
7.根据权利要求5所述的计算机实现的方法,其中: 由每个类建模的所述数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
8.根据权利要求5所述的计算机实现的方法,其中: 所述规范语言支持在类定义之间的依赖以及在类定义之间的连接中的至少一项,并且其中在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的相应部件之间的部署依赖,并且其中将第二类的实例链接到第一类的类参数的值指派代表在由所述第一类和所述第二类建模的各部件之间的连接。
9.一种计算机实现的方法,包括: 接收用于配置基于云的部署的配置规范,所述配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 存储所述规范语言的多个核心类的各类定义,每个核心类对应于基于云的环境的模块化部件,每个核心类能够利用附加类参数进行扩展以配置所述相应模块化部件; 存储在所述核心类中的每个核心类与相应API调用组之间的映射,所述相应API调用组用于根据所述核心类的所述类参数来配置与所述核心类相关联的所述模块化部件;以及 存储多个协议,所述多个协议用于修改与每个核心类相关联的所述相应API调用组,以为从所述核心类导出的新类定义而获得新API调用组。
10.根据权利要求9所述的方法,其中导出用于配置所述基于云的部署的所述多个API调用还包括: 基于与所述多个核心类中的一个或者多个核心类相关联的所述相应API调用组、并且基于用于修改所述相应API调用组的所述多个协议来导出所述多个API调用,所述配置规范的所述一个或者多个类从所述多个核心类导出。
11.根据权利要求9所述的方法,其中: 所述多个协议还包括用于根据在根据所述规范语言编写的类定义中指定的依赖关系和连接关系施加所述API调用组的排序的规则。
12.根据权利要求9所述的方法,其中: 所述一个或者多个类包括至少一个现有基本类和从所述现有基本类扩展的至少一个定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者包括未存在于所述现有基本类中的至少一个新类参数。
13.根据权利要求9所述的方法,其中: 由每个类建模的所述数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
14.根据权利要求9所述的方法,其中: 所述规范语言支持类定义之间的依赖,并且在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的各部件之间的部署依赖。
15.根据权利要求9所述的方法,其中: 所述规范语言支持类定义之间的连接,并且将第二类的实例链接到第一类的类参数的值指派代表由所述第一类和所述第二类建模的各部件之间的连接。
16.—种系统,包括: 一个或者多个处理器;以及 具有存储于其上的指令的存储器,所述指令在由所述一个或者多个处理器执行时使所述处理器执行操作,所述操作包括: 接收用于配置基于云的部署的配置规范,所述配置规范用规范语言编写的并且需要实例化一个或者多个类的各类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 基于所述一个或者多个类的所述相应类定义来标识由所述一个或者多个类建模的多个数据和功能部件以及在所述多个数据或者功能部件之中存在的一个或者多个依赖关系和连接关系; 基于标识的所述多个数据和功能部件以及标识的所述依赖关系和连接关系导出基于云的环境的框图;以及 在所述框图中表示用于动态重新配置所述基于云的环境的触发事件。
17.根据权利要求16所述的系统,其中: 所述一个或者多个类包括至少一个现有基本类和至少一个从所述现有基本类扩展的定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者包括未存在于所述现有基本类中的至少一个新类参数。
18.根据权利要求16所述的系统,其中: 由每个类建模的所述数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
19.根据权利要求16所述的系统,其中: 所述规范语言支持在类定义之间的依赖以及在类定义之间的连接中的至少一项,并且其中在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的相应部件之间的部署依赖,并且其中将第二类的实例链接到第一类的类参数的值指派代表在由所述第一类和所述第二类建模的各部件之间的连接。
20.—种系统,包括: 一个或者多个处理器;以及 具有存储于其上的指令的存储器,所述指令在由所述一个或者多个处理器执行时使所述处理器执行操作,所述操作包括: 接收用于配置基于云的部署的配置规范,所述配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 标识各自已经根据用所述规范语言编写的相应配置规范而执行的多个基于云的部署; 标识至少一个基本类,所述至少一个基本类的类定义在所述多个基于云的部署中的数个基于云的部署中被使用; 监视所述多个基于云的部署中的所述数个基于云的部署中的每个的相应性能;以及 基于所述多个基于云的部署中的所述数个基于云的部署的总体性能来计算所述至少一个基本类的质量度量。
21.根据权利要求20所述的系统,其中: 所述一个或者多个类包括至少一个现有基本类和至少一个从所述现有基本类扩展的定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者未存在于包括所述现有基本类中的至少一个新类参数。
22.根据权利要求20所述的系统,其中: 由每个类建模的所述数据或者功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
23.根据权利要求20所述的系统,其中: 所述规范语言支持在类定义之间的依赖以及在类定义之间的连接中的至少一项,并且其中在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的相应部件之间的部署依赖,并且其中将第二类的实例链接到第一类的类参数的值指派代表在由所述第一类和所述第二类建模的各部件之间的连接。
24.一种具有存储于其上的指令的非瞬态计算机可读介质,所述指令在由一个或者多个处理器执行时使所述处理器执行操作,所述操作包括: 接收用于配置基于云的部署的配置规范,所述配置规范是用规范语言编写的并且需要实例化一个或者多个类的相应类定义,每个类使用可配置类参数组来对所述基于云的部署的相应数据或者功能部件进行建模,并且每个类的所述相应类定义代表由所述类建模的所述数据或者功能部件的请求的状态; 导出用于基于所述一个或者多个类的所述类定义而配置所述基于云的部署的多个应用编程接口(API)调用; 使得执行所述多个API调用以配置所述基于云的部署; 存储所述规范语言的多个核心类的各类定义,每个核心类对应于基于云的环境的模块化部件,每个核心类能够利用附加类参数进行扩展以配置所述相应模块化部件; 存储在所述核心类中的每个核心类与相应API调用组之间的映射,所述相应API调用组用于根据所述核心类的所述类参数来配置与所述核心类相关联的所述模块化部件;以及 存储多个协议,所述多个协议用于修改与每个核心类相关联的所述相应API调用组,以为从所述核心类导出的新类定义而获得新API调用组。
25.根据权利要求24所述的计算机可读介质,其中导出用于配置所述基于云的部署的所述多个API调用还包括: 基于与所述多个核心类中的一个或者多个核心类相关联的所述相应API调用组、并且基于用于修改所述相应API调用组的所述多个协议来导出所述多个API调用,所述配置规范的所述一个或者多个类从所述多个核心类导出。
26.根据权利要求24所述的计算机可读介质,其中: 所述多个协议还包括用于根据在根据所述规范语言编写的类定义中指定的依赖关系和连接关系来施加所述API调用组的排序的规则。
27.根据权利要求24所述的计算机可读介质,其中: 所述一个或者多个类包括至少一个现有基本类和从所述现有基本类扩展的至少一个定制的类, 所述定制的类继承所述现有基本类的各类参数,并且 所述定制的类修改从所述现有基本类继承的所述类参数中的至少一个类参数的值,或者包括未存在于所述现有基本类中的至少一个新类参数。
28.根据权利要求24所述的计算机可读介质,其中: 由每个类建模的所述数据或者 功能部件是以下中的一项或者以下中一项或者多项的组合:支持基于云的环境的虚拟设备、在所述基于云的环境中利用的服务、由所述基于云的环境中安装的应用执行的软件作用、保持将在所述基于云的环境的部署或者操作期间使用的数据的数据包。
29.根据权利要求24所述的计算机可读介质,其中: 所述规范语言支持类定义之间的依赖,并且在第一类与第二类之间的定义依赖代表在由所述第一类和所述第二类建模的各部件之间的部署依赖。
30.根据权利要求24所述的计算机可读介质,其中: 所述规范语言支持类定义之间的连接,并且将第二类的实例链接到第一类的类参数的值指派代表在由所述第一类和所述第二类建模的各部件之间的连接。
【文档编号】G06F9/06GK103582867SQ201280023417
【公开日】2014年2月12日 申请日期:2012年3月15日 优先权日:2011年3月16日
【发明者】P·里斯博德, P·K·萨达, R·S·库尔卡尼, R·贾因, V·S·谢诺伊, V·萨哈斯拉纳曼 申请人:谷歌公司

最新回复(0)