该技术已申请专利。仅供学习研究,如用于商业用途,请联系技术所有人。

1.本发明一般涉及应用迁移,并且更具体地,涉及使用成本感知代码依赖图的应用迁移。
背景技术:2.应用迁移是将软件应用从一个计算环境迁移到另一个计算环境的过程。例如,应用程序可在数据中心之间移动,从场所内服务器移动到云供应商的环境,从公共云移动到私有云等。
3.因为应用通常被构建为在特定网络架构中的特定操作系统上运行或者被开发用于单个云平台,所以迁移应用可能造成许多挑战。这些挑战可以包括确保应用的依赖性和技术要求被维持,同时满足企业的安全性、顺应性和成本约束。
4.应用到云平台(或云平台之间)的高效和有效迁移对于应用程序所有者和云提供商两者是优先的。迁移过程包括识别可被迁移的应用部分、识别必须被适配以便被迁移的应用程序部分、以及应用的适配。此外,还必须选择云资源的适当集以高效地托管已迁移的应用。
5.当前,开发者可以手动地更新应用,使得其可以被成功地迁移到目标云环境并且由目标云环境实施。在更新应用之后,开发者可以手动测试应用。这些当前技术使得应用迁移过程易于出错、劳动密集且耗时。
技术实现要素:6.本发明的一个方面针对一种计算机实现的方法,包括将应用迁移到目标云基础设施。所述方法进一步包括在目标云基础设施上执行应用期间生成感知成本代码依赖图。所述方法进一步包括通过根据成本感知代码依赖图移除与未使用节点相对应的源代码并且用对被配置为提供与所识别的源代码的相似的功能的所生成的微服务的调用来替换所述成本感知代码依赖图的高成本子图的所识别的源代码,修改应用。
7.所述方法还包括在目标云基础设施的一个或多个虚拟机上实施经修改的应用。
8.有利地,上述方法实现自动化的即时应用分解,使得所迁移的应用一旦被部署在目标云基础设施上就可以被重新配置。此外,上述方法通过移除与未使用节点相对应的源代码并用对所生成的微服务的调用来替换高成本子图的所识别的源代码,来实现应用的自动化修改,以便实现在目标云基础设施上的应用的改进的性能。移除未使用源代码可使应用更有效且更不易出错。用所生成的微服务替换高成本子图可以实现改进的性能,一旦所生成的微服务可以在适于高效地实施所生成的微服务的目标云基础设施的另一虚拟机上被单独地实施。
9.上述方法的另外的(一个或多个)实施例进一步包括通过将相应节点的相应成本分配给指向所述相应节点的每个边,将所述成本感知代码依赖图中的节点成本转换成边成本。有利地,将节点成本转换成边成本有助于改进对被配置为识别子图成本的图搜索算法
的使用。
10.上述方法的另外的(一个或多个)实施例进一步包括:基于最高成本子图,创建所述所生成的微服务;用所述所生成的微服务替换与所述最高成本子图相关联的第一源代码;识别与最高成本子图的相似性高于阈值的第二子图;以及用所述所生成的微服务替换与所述第二子图相关联的第二源代码。有利地,将所生成的微服务用于与最高成本子图的相似性高于阈值的第二子图,通过针对应用的多于一个部件重用已经生成的微服务来改善效率。
11.本发明的其它方面涉及被配置为执行上述方法的系统和计算机程序产品。本发明内容不旨在示出本公开的每个实施例的每个方面、每个实施方式和/或每个实施例。
附图说明
12.本技术中包括的附图并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅说明某些实施例,而不限制本公开。
13.图1示出了根据本公开的一些实施例的用于应用迁移的示例计算环境的框图。
14.图2示出了根据本公开的一些实施例的用于使用成本感知代码依赖图来迁移应用的示例方法的流程图。
15.图3示出了根据本公开的一些实施例的用于为成本感知代码依赖图的相似子图重用所生成的微服务的示例方法的流程图。
16.图4示出了根据本公开的一些实施例的用于使用成本感知代码依赖图来迁移应用的另一示例方法的流程图。
17.图5示出了根据本公开的一些实施例的用于分析、消减和修改已迁移应用的示例方法的流程图。
18.图6a示出了根据本公开的一些实施例的具有使用的节点和未使用节点的成本感知代码依赖性图的示图。
19.图6b示出了根据本公开的一些实施例的具有节点的感知成本的代码依赖性图的示图,其中,节点具有与其相关联的变化的计算成本。
20.图7示出了根据本公开的一些实施例的感知成本代码依赖性图中的不同高成本路径的图。
21.图8示出了根据本公开的一些实施例的示例计算机的框图。
22.图9描绘了根据本公开的一些实施例的云计算环境。
23.图10描绘了根据本公开的一些实施例的抽象模型层。
24.虽然本公开可修改为各种修改和替代形式,但其细节已在附图中以示例的方式示出并将详细描述。然而,应当理解,其目的不是将本公开限制于所描述的特定实施例。相反,本发明将涵盖落入本公开的范围内的所有修改、等效物和替代方案。
具体实施例
25.本发明的各方面涉及应用迁移,并且更具体地,涉及使用成本感知代码依赖图的应用迁移。虽然不限于这些应用,但是根据上述上下文可以更好地理解本公开的实施例。
26.本公开的各方面涉及用于自动地收缩和分解包括待迁移的应用的图像以减少目标云平台中待迁移的应用的操作成本的技术。本公开的各方面实现了许多特征,诸如但不限于:(i)基于工作负载执行跟踪和/或源代码分析的部署后即时应用分解;(ii)基于该执行跟踪和/或源代码分析、可定制目标函数和/或收集的性能度量来生成成本感知代码依赖图;(iii)移除(例如,消减)成本感知代码依赖图中的未使用节点;(iv)用所生成的微服务替换与成本感知代码依赖图中的高成本子图相对应的源代码,其中,所生成的微服务可以由与待迁移的应用不同的目标云平台的虚拟机实现;和/或(v)将所生成的微服务用于成本感知代码依赖性图中的其他子图,所述其他子图与最初创建的所生成的微服务的高成本子图相似。共同地,这些特征实现自动化应用修改,其中,经修改的应用实现减少的资源利用(例如,减少的存储器和处理器利用)和/或减少的用于被迁移到目标云平台的应用的维护成本。
27.现在参考图1,示出了根据本公开的一些实施例的用于应用迁移的示例计算环境100。计算环境100可以包括通过网络102彼此通信地耦合的迁移工程管理器设备104、源云基础设施106和目标云基础设施108。工程管理器设备104可以是膝上型计算机、平板计算机、台式计算机、服务器、或能够管理(例如,根据来自迁移工程师的用户输入)待从源云基础设施106到目标云基础设施108迁移的应用110的迁移的硬件和/或软件的另一配置。
28.源云基础设施106包括待迁移的应用110的当前托管计算平台。同样,目标云基础设施108包括待迁移的应用110的未来托管计算平台。尽管源云基础设施106和目标云基础设施108都包括适于电子数据处理的部件,例如但不限于存储器资源、处理资源、网络资源、其它资源和/或从任何前述资源提供的虚拟机(vm),但是部件和/或vm的类型、数量和配置可以是不同的。此外,源云基础设施106和目标云基础设施108可以利用不同的操作系统、不同的联网协议和/或不同的编程配置。例如,源云基础设施106可以是场所内硬件、私有云、混合云或公共云。同样地,目标云基础设施108可以是私有云、混合云或公共云。在源云基础设施106和目标云基础设施108两者是相似类型的云基础设施(例如,每个都是混合云配置)的情况下,源云基础设施106可以由第一供应商提供,而目标云基础设施108可以由第二供应商提供。在这样的情况下,第一供应商和第二供应商可以制定不同的方案、协议和配置,其可以促进待迁移的应用110的修改,使得其将在目标云基础设施108上高效地和有效地起作用。
29.待迁移的应用110可以是任何应用、服务、工作负载或其它计算机实施的过程或功能。在一些实施例中,待迁移的应用110可以被封装在系统图像(未示出)内,该系统图像包括用于支持待迁移的应用110的实施的外围软件、固件、操作系统等。
30.目标云基础设施108可以包括用于修改待迁移的应用110以便在目标云基础设施108上高效且有效地部署的功能。例如,目标云基础设施108可以包括云资源选择处理器112、应用结构分析器114、应用分解处理器116、和工作负载分析器118。云资源选择处理器112可被配置用于选择和评估在目标云基础设施108上可用的云资源候选集,以与待迁移的应用110一起使用。云资源可包括存储器资源、处理资源、联网资源等。在一些实施例中,云资源可以被封装为具有存储器资源、处理资源、联网资源和/或可以共同适用于某些类型的工作负载或微服务的高效实施方式的其他资源的可区分配置的预定义或定制的vm。
31.应用结构分析器114可被配置成执行待迁移的应用110的源代码分析和系统调用,
以便为待迁移的应用110开发成本感知代码依赖图120。例如,应用结构分析器114可以实现跟踪、日志分析或用于理解程序的执行的其他功能。此外,应用结构分析器114可分析源代码本身以识别源代码的结构、依赖性、部件、功能和/或其它特征。在一些实施例中,成本感知代码依赖图120被格式化为类似于调用图、调用多重图、控制流图、或待迁移的应用110的调用关系、子例程、功能和/或执行特性的另一图形表示。成本感知代码依赖图120还可以包括关于待迁移的应用110的不同部件(例如,节点)的使用率(例如,使用的节点相对于未使用节点)的信息。此外,成本感知代码依赖图120可以包括关于待迁移应用110的不同组件(例如,节点)的资源成本的信息。
32.应用分解处理器116可以被配置为分解待迁移的应用110,以便修改待迁移的应用110,从而改进在目标云基础设施108上的实施。例如,应用分解处理器116可以被配置为根据成本感知代码依赖图120,移除(例如,消减)与未使用节点相对应的源代码。作为另一示例,应用分解处理器116可以被配置为用所生成的微服务(未示出)替换与成本感知代码依赖图120的高成本子图相对应的源代码。此外,在一些实施例中,应用分解处理器116可以重新使用所生成的微服务来替换成本感知代码依赖图120的另一子图,该另一子图表现出的与所生成的微服务最初针制作的原始高成本子图的相似性高于阈值。
33.工作负载分析器118可以被配置为评估待迁移的应用110的部件的性能,以便识别用于分解的候选者和/或一旦进行修改(例如,消减未使用节点、用所生成的微服务替换高成本子图等)就评估性能。在一些实施例中,工作负载分析器118可以向云资源选择处理器112提供反馈,以用于修改作为vm提供给待迁移的应用110的各方面的云资源,以提高待迁移的应用110的性能和/或效率。
34.尽管在目标云基础设施108上示出了云资源选择处理器112、应用结构分析器114、应用分解处理器116、工作负载分析器118和成本感知代码依赖图120,但是在其他实施例中,这些部件中的一个或多个可以位于其他地方。例如,在一些实施例中,上述部件可以位于迁移工程管理器设备104中。此外,在一些实施例中,前述部件作为软件从远程数据处理设备(未示出)下载到迁移工程管理器设备104或目标云基础设施108。可替换地,上述部件可以根本不被下载,但是可以被容纳在能够提供上述部件的功能作为服务的远程数据处理系统(未示出)中,使得待迁移的应用110可以首先被提供给远程数据处理系统(未示出),并且远程数据处理系统(未示出)然后可以将待迁移的应用110的更新版本提供给目标云基础设施108,其中当被部署在目标云基础设施108上时,待迁移的应用110的更新版本实现相对于待迁移的原始应用110的改进的资源利用。
35.现在参考图2,示出了根据本公开的一些实施例的使用成本感知代码依赖图的用于应用迁移的示例方法200的流程图。在一些实施例中,方法200可以例如由目标云基础设施108、迁移工程管理器设备104、远程数据处理系统、计算机、处理器、或硬件和/或软件的另一配置来实施。
36.操作202包括将应用(例如,图1的待迁移的应用110)迁移到目标云基础设施(例如,图1的目标云基础设施108)。在一些实施例中,操作202包括在目标云基础设施上部署应用。在一些实施例中,应用作为系统图像的一部分被迁移到目标云基础设施。
37.操作204包括在目标云基础设施上执行应用期间,生成成本感知代码依赖图(例如,图1的成本感知代码依赖图120)。在一些实施例中,在应用的执行和/或应用的源代码分
析期间,使用在应用上的跟踪函数来生成成本感知代码依赖图。在一些实施例中,生成成本感知代码依赖图包括确定与成本感知代码依赖图中的每个节点相关联的成本,其中,该成本表示在节点执行期间利用的资源量。在节点执行期间利用的资源可以包括从包括以下各项的组中选择的一个或多个:在节点执行期间利用的存储器,在节点执行期间的处理器(cpu)使用率,在节点执行期间实施的输入/输出(i/o)操作,在预定时间内的节点利用的频率,和/或节点执行的持续时间。
38.操作206和208涉及修改应用以便实现在目标云基础设施上的应用的改进的性能。操作206包括移除与成本感知代码依赖图中的未使用节点相对应的未使用源代码。在一些实施例中,如果成本感知代码依赖图中的节点在预定时间量(例如,五分钟、十五分钟、一小时、一天等)内未被执行,则将它们识别为未使用。
39.操作208包括用对所生成的微服务的调用来替换成本感知代码依赖图的高成本子图的所识别的源代码。在一些实施例中,可以根据高成本子图中的节点、高成本子图中的节点之间的相互关系、以及与高成本子图相对应的源代码来创建所生成的微服务。在一些实施例中,所生成的微服务可以被配置为在与执行应用的一个或多个vm不同的vm上执行。在一些实施例中,不同的vm可以包括对所生成的微服务的资源要求有益的虚拟化资源(例如,用于计算密集型微服务的增加的处理资源等)。
40.操作210包括在目标云基础设施上的一个或多个vm上实施经修改的应用。作为移除未使用源代码(对应于未使用的节点)和/或用所生成的服务替换的所识别的源代码(对应于高成本子图)的结果,经修改的应用可以展现相对于原始迁移的应用的改进的性能。
41.现在参考图3,示出了根据本公开的一些实施例的用于将所生成的微服务重新用于成本感知代码依赖图的相似子图的示例方法300的流程图。在一些实施例中,方法300可以例如由目标云基础设施108、迁移工程管理器设备104、远程数据处理系统、计算机、处理器、或硬件和/或软件的另一配置来实施。在一些实施例中,方法300是图2的操作208的子方法。
42.操作302包括将成本感知代码依赖图中的节点成本转换成边成本。在一些实施例中,通过将相应的节点成本应用于指向相应节点的每个边,节点成本可以被转换成边成本。
43.操作304包括计算感知成本代码依赖图中的节点之间的成本路径。在一些实施例中,操作304利用操作302的边成本来计算成本路径。在一些实施例中,操作304利用dijkstra算法,其中,斐波纳契堆作为优先级队列以便计算成本路径。有利地,斐波纳契堆具有渐近的分摊恒定时间复杂度,将dijkstra最短路径算法的时间复杂度从o(|v|2)(以图中顶点的数目二次方缩放)降低到o(|e|+|v|log|v|)(以边的数目线性缩放,以顶点的数目准线性时间)。该算法公式允许在大规模图中进行高效处理。如本领域技术人员所理解的,o表示给出算法的渐近性能的度量的函数,例如被配置为评估时间复杂度的算法。此外,|e|可以表示图形中的数量,而|v|可以表示图形中的顶点的数量。最后,尽管以上讨论了具有斐波纳契堆的dijkstra算法,但这仅是一个示例,并且操作304可利用任何有效的最短路径图算法。
44.操作306包括基于成本感知代码依赖图的最高成本子图来创建所生成的微服务。操作308包括用对所生成的微服务的调用来替换与最高成本子图相关联的第一源代码。
45.操作310包括识别成本感知代码依赖图中与最高成本子图的相似性高于阈值的第
二子图。在一些实施例中,基于近似图同构算法,诸如基于近似随机游走的算法或图神经网络,来确定图相似性。
46.操作312包括用对所生成的微服务的调用来替换与第二子图相关联的第二源代码。换句话说,方法300使得应用的相似部件(例如,子图)能够重新使用先前生成的微服务。重新使用先前生成的微服务通过以下各项来提高效率:(i)避免重新创建相似的微服务;以及(ii)利用被配置为在应用的多一个部件的专用vm上执行的微服务,用于。
47.现在参考图4,示出了根据本公开的一些实施例的使用成本感知代码依赖图的用于应用迁移的另一示例方法400的流程图。在一些实施例中,方法400可由例如目标云基础设施108、迁移工程管理器设备104、远程数据处理系统、计算机、处理器、或硬件和/或软件的另一配置来实施。
48.操作402包括定义迁移环境。操作402可以包括例如定义用于分析的图像。该图像可以包括待迁移的应用和运行该应用所需的任何底层软件基础结构。该图像可用于启动诸如容器和虚拟机等虚拟化部件。操作402还可以包括定义在分析中要考虑的度量和/或参数。示例度量可以包括图像的每个部件的利用频率、数据输入/输出(i/o)模式、资源利用率、花费在每个部件上的时间等。在一些实施例中,所定义的度量和/或参数可以被转换成目标函数,该目标函数可以被减小到阈值以下(例如,最小化)、增大到阈值以上(例如,最大化)或者以其他方式被优化。
49.操作404包括部署所定义的图像。操作404可以包括将在操作402中定义的图像部署在使用在操作402中定义的度量和/或参数配置的云环境上。操作406包括执行待迁移的应用以分析待迁移的应用。
50.操作408包括扫描待迁移的已执行应用的部件。在一些实施例中,操作408可以利用跟踪、源代码分析和/或系统调用来扫描待迁移的已执行应用的部件和/或当启动时由应用使用的任何其他部件。
51.操作410包括表征在操作408中所识别的部件。操作410可包括生成由每个所识别的部件使用的库和/或包的列表。
52.操作412包括分析和消减部件。操作412可以基于来自操作410的评估来识别待重组和/或消减的元件。操作412将在下文中参考图5更详细地讨论。
53.操作414包括评估反馈。操作414可以从例如由迁移工程器输入到迁移工程器设备的数据收集反馈。可以评估反馈以细化在操作412中使用的分解、重组和/或消减策略。
54.操作416包括构建新图像。新图像可如操作412中所分析的和操作414中所细化的那样分解、重组和/或消减待迁移的应用程序的元件。
55.操作418确定是否应该重复该过程。如果是(418:是),则系统通过返回到操作404并重新部署新图像以便排除故障、改进和/或细化待迁移的经修改的应用来重新启动该过程。如果不是(418:否),则方法400结束。
56.现在参考图5,示出了根据本公开的一些实施例的用于分析和消减待迁移的应用的示例方法500的流程图。在一些实施例中,方法500可以例如由目标云基础设施108、迁移工程管理器设备104、远程数据处理系统、计算机、处理器、或硬件和/或软件的另一配置来实施。在一些实施例中,方法500是图4的操作412的子方法。
57.操作502包括消减未使用节点。消减未使用节点可涉及移除源代码的未使用部分。
例如,操作502可以考虑在用户定义的时间段期间未被访问的源代码的部分。操作502的示例在下文中参考图6a来讨论。
58.操作504包括计算各个节点的成本度量。成本度量可以基于例如资源利用率(例如,存储器利用率、处理利用率等)、数据输入/输出(i/o)模式、利用频率、和/或其它成本度量。操作504的示例在下文参考图4b讨论。
59.操作506包括基于在操作504中所计算的成本度量来识别与待迁移的应用相关联的调用图(例如,成本感知代码依赖图)中的成本路径。在一些实施例中,操作506计算图中所有节点之间的成本路径。当使用斐波纳契堆作为优先级队列的dijkstra算法将时,可以在o(|e|+|v|log|v|)时间内这样做。此外,尽管下文参考图6b和图7讨论的节点成本图用节点中的权重(例如,成本)来实施,但是为了能够使用图搜索算法,本公开的实施例可以将节点权重转换成边权重。这样做的一种方式是将接入节点的所有边的权重分配为等于该节点的权重。
60.操作508包括使用子图来构建待创建的潜在微服务的列表。操作510包括选择具有最高成本的子图以转换成微服务。
61.操作512包括确定所选的子图是否与其他子图相似。相似性的确定可以利用近似图同构算法。如果所选的子图与另一子图相似(512:是),则方法500可以前进到操作514,并且从待创建的潜在微服务的列表中移除相似子图。在一些实施例中,操作514还使得相似子图利用与其他子图相关联的先前所生成的微服务。方法500然后可以返回到操作510。如果所选的子图与另一子图不相似(512:否),则方法500可以前进到操作516,并且生成用于将子图从原始应用解耦合(例如,通过创建微服务)的代码。可以采用各种方法来生成与子图相关联的代码。例如,其余应用编程接口(api)的自动创建可以用于仿真原始应用和新创建的微服务的接口。
62.操作518包括确定成本感知代码依赖图中的子图列表是否为空或者是否达到所生成的微服务的阈值。如果操作518未被满足(518:否),则方法500可返回到操作508,并选择潜在微服务的列表的新子图。如果满足操作518(518:是),则方法500可以结束。
63.图6a示出了根据本公开的一些实施例的具有使用的节点602(阴影)和未使用节点604(无阴影)的待迁移的应用的示例性成本感知代码依赖图600。成本感知代码依赖图600的未使用段606排他地包括未使用节点604。因此,本公开的各方面针对消减其中包括所有未使用节点604的未使用段606(例如,通过从源代码中移除与未使用段606中的未使用节点604相对应的代码)。
64.图6b示出了示例性的成本感知代码依赖图610,其中每个节点由节点成本612加权。可以看出,除了图6b的成本感知代码依赖图610具有被移除的未使用节点604的未使用段606之外,成本感知代码依赖图610类与图6a的成本感知代码依赖性图600相似。返回参考图6b,节点成本612可将较低成本节点表示为较浅阴影,而将较高成本节点表示为较深阴影。节点成本612可以表示存储器资源、处理资源、网络资源、i/o资源、和/或在实施每个相应节点时消耗的其他资源。可以看出,成本感知代码依赖图610中的不同节点与不同的节点成本612相关联。
65.图7示出了图6b的成本感知代码依赖图610中的不同子图。例如,本公开的各方面可识别子图702、子图704和子图706以及其它子图。此外,本公开的各方面可被配置为确定
子图704与子图706相似(例如,使用近似图同构算法)。在识别两个或更多个相似子图时,本公开的各方面可以生成可以用于每一个相似子图的单个微服务。
66.图8示出了根据本公开的一些实施例的示例计算机800的框图。在各种实施例中,计算机800可以执行图2-5中描述的任何或所有方法和/或实现图1和6-7中的一个或多个中讨论的功能。在其他实施例中,计算机800向客户端机器提供用于上述方法和/或功能的指令,使得客户端机器基于由计算机800提供的指令来执行该方法或该方法的一部分。在一些实施例中,计算机800被并入(或与计算机800类似的功能被虚拟地供应给)计算环境100的一个或多个实体(例如,迁移工程管理器设备104、源云基础设施106和/或目标云基础设施108)和/或本公开的其他方面。
67.计算机800包括存储器825、储存器830、互连820(例如,总线)、一个或多个cpu805(在此也被称为处理器)、i/o设备接口810、i/o设备812和网络接口815。
68.每个cpu 805检索并执行存储在存储器825或储存器830中的编程指令。互连820用于在cpu 805、i/o设备接口810、储存器830、网络接口815和存储器825之间移动数据,例如编程指令。互连820可以使用一个或多个总线来实施。在各种实施例中,cpu 805可以是单个cpu、多个cpu、或具有多个处理核的单个cpu。在一些实施例中,cpu 805可以是数字信号处理器(dsp)。在一些实施例中,cpu 805包括一个或多个3d集成电路(3dic)(例如,3d晶片级封装(3dwlp)、基于3d中介体的集成、3d堆叠ic(3d-sic)、单片3d ic、3d异构集成、3d系统级封装(3dsip)和/或封装上封装(pop)cpu配置)。通常包括存储器825以表示随机存取存储器(例如,静态随机存取存储器(sram)、动态随机存取存储器(dram)或闪存)。通常包括储存器830以表示非易失性存储器,例如硬盘驱动器、固态设备(ssd)、可移除存储卡、光学存储器或闪存存储器设备。在一个替换实施例中,存储830可以由存储区域网络(san)设备、云、或经由i/o设备接口810连接到计算机800或经由网络接口815连接到网络850的其他设备来代替。
69.在一些实施例中,存储器825存储指令860。然而,在各种实施例中,指令860被部分地存储在存储器825中并且被部分地存储在储存器830中,或者它们被全部地存储在存储器825中或者被全部地存储在储存器830中,或者它们经由网络接口815通过网络850被访问。
70.指令860可以是用于执行图2-5的方法的任何部分或全部和/或实施图1和6-7的任何部分中讨论的功能的计算机可读和计算机可执行指令。
71.在各种实施例中,i/o设备812包括能够呈现信息和接收输入的接口。例如,i/o设备812可以向与计算机800交互的用户呈现信息,并且从用户接收输入。
72.计算机800经由网络接口815连接到网络850。网络850可以包括物理、无线、蜂窝或不同的网络。
73.应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实施方式不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实施。
74.云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、储存器、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理付出或与服务的提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
75.特征如下:
76.按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供商进行人工交互。
77.广域网接入:在网络上获得能力,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和pda)使用的标准机制来访问。
78.资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中,不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
79.快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
80.测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和激活用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用率,从而为所利用服务的提供商和消费者两者提供透明性。
81.服务模型如下:
82.软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供商的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户端机界面从各种客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、储存器、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
83.平台即服务(paas):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或储存器的底层云基础设施,但具有对所部署的应用和可能的应用托管环境配置的控制。
84.基础设施即服务(iaas):提供给消费者的能力是提供处理、储存器、网络和消费者能够部署和运行任意软件的其它基本计算资源,该软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、储存器、所部署的应用的控制,以及可能对选择的联网部件(例如,主机防火墙)的有限控制。
85.部署模型如下:
86.私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
87.社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
88.公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
89.混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,该云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
90.云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
91.现在参考图9,描绘了说明性云计算环境50。如图所示,云计算环境50包括有云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,该本地计算设备例如个人数字助理(pda)或蜂窝电话54a、台式计算机54b、膝上型计算机54c、和/或汽车计算机系统54n。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云、或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维持本地计算设备上的资源。应当理解,图9所示的计算设备54a-n的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
92.现在参考图10,示出了由云计算环境50(图9)提供的功能抽象层集。应当预先理解,图10中所示的部件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和对应的功能:
93.硬件和软件层60包括硬件和软件部件。硬件部件的示例包括:主机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络计网络部件66。在一些实施例中,软件部件包括网络应用服务器软件67和数据库软件68。
94.虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟储存器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
95.在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及针对消耗这些资源的开帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(sla)规划和履行85提供对云计算资源的预安排和采购,其中根据sla预期未来需求。
96.工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及应用迁移管理96。
97.本发明的实施例可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或媒介),该计算机可读程序指令用于使处理器执行本发明的各方面。
98.计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下各项:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔
卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
99.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
100.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言(包括面向对象的编程语言,例如smalltalk、c++等)和过程编程语言(例如“c”编程语言或类似的编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或完全在服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
101.在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实施。
102.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实施流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
103.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实施的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实施流程图和/或框图的一个或多个框中指定的功能/动作。
104.附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或子集,其包括用于实施指定的一个或多个逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出
的两个框实际上可以被基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实施。
105.虽然可以理解,可以通过经由加载诸如cd、dvd等的存储介质而将过程软件(例如,存储在图8的指令860中的任何指令和/或被配置为执行关于图2-5描述的方法的任何部分和/或实现图1和6-7中讨论的功能的任何部分的任何软件)直接手动加载到客户端、服务器和代理计算机中来部署该过程软件,也可以通过将该过程软件发送到中央服务器或一组中央服务器而将该过程软件自动或半自动地部署到计算机系统中。然后,将处理软件下载到将执行该处理软件的客户端计算机中。或者,处理软件经由电子邮件直接发送到客户端系统。然后,通过执行将处理软件分离到目录中的程序指令集,将所述处理软件分离到目录中或加载到目录中。另一种替换是将处理软件直接发送到客户端计算机硬盘驱动器上的目录。当存在代理服务器时,该过程将选择代理服务器代码,确定将代理服务器的代码放置在哪些计算机上,传送代理服务器代码,然后将代理服务器代码安装在代理计算机上。处理软件将被发送到代理服务器,然后它将被存储在代理服务器上。
106.本发明的实施例还可以作为与客户公司、非盈利组织、政府实体、内部组织结构等的服务约定的一部分来交付。这些实施例可以包括配置计算机系统以执行和部署实施本文描述的方法中的一些或全部的软件、硬件和web服务。这些实施例还可以包括分析客户的操作、响应于分析创建推荐、构建实施推荐子集的系统、将系统集成到现有过程和基础设施中、计量系统的使用、向系统的用户分配费用、以及开账单、开发票(例如,生成发票)、或者以其他方式接收对系统的使用的支付。
107.本文所使用的术语仅用于描述特定实施例的目的,且不旨在限制各种实施例。如本文所用,单数形式“一”、“一个”和“所述”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、部件和/或其群组的存在或添加。在各种实施例的示例实施例的先前详细描述中,参考了附图(其中相同的标号表示相同的元件),附图形成了本发明的一部分,并且其中通过图示示出了其中可以实践各种实施例的特定示例实施例。这些实施例被足够详细地描述以使本领域技术人员能够实践这些实施例,但是可以使用其他实施例,并且可以在不偏离各种实施例的范围的情况下做出逻辑、机械、电气和其他改变。在之前的描述中,阐述了许多具体细节以提供对各种实施例的透彻理解。但是,没有这些具体细节也可以实现各种实施例。在其它实例中,为了不使实施例模糊,没有详细示出公知的电路、结构和技术。
108.在本说明书中使用的词语“实施例”的不同实例不一定是指相同的实施例,但是它们可以是指相同的实施例。在此示出或描述的任何数据和数据结构仅是示例,并且在其他实施例中,可以使用不同的数据量、数据类型、字段的数量和类型、字段名、行的数量和类型、记录、条目或数据的组织。此外,任何数据都可以与逻辑组合,从而可以不需要单独的数据结构。因此,前面的详细描述不应被理解为限制性的。
109.已经出于说明的目的呈现了对本公开的各种实施例的描述,但是其并非旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化
对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
110.尽管已经根据具体实施例描述了本公开,但是可以预期,其改变和修改对于本领域技术人员将变得显而易见。因此,所附权利要求旨在被解释为覆盖落入本公开的真实范围内的所有这样的变更和修改。
111.本公开中讨论的任何优点是示例优点,并且可以存在本公开的实施例,其实现所讨论的优点中的所有优点、一些优点或者不实现任何优点,同时保持在本公开的范围内。