线程化作为服务制造技术

技术编号:28622438 阅读:19 留言:0更新日期:2021-05-28 16:18
一种服务管理用于用户代码的低延时执行的多个虚拟机实例。所述多个虚拟机实例可基于预定配置集合来配置。一个或多个容器可在所述虚拟机实例内创建。响应于执行用户代码的请求,所述服务识别适于执行所述用户代码的预配置的虚拟机实例。所述服务可将所述识别的虚拟机实例分配给所述用户,在已分配给所述用户的实例内创建新的容器,或者重新使用已创建用于执行所述用户代码的容器。当所述用户代码在超时期间未激活时,所述服务可使所述虚拟机实例的分配无效,毁坏所述容器。从接收所述请求到开始代码执行的时间小于预定持续时间,例如100ms。

【技术实现步骤摘要】
线程化作为服务本申请是申请号为201580053106.0、申请日为2015年9月29日、专利技术名称为“线程化作为服务”的专利申请的分案申请。对同时提交申请的交叉引用本申请的申请人在2014年9月30日同时提交以下美国专利申请:以上引用的申请的公开内容通过引用整体并入本文。背景一般来说,计算装置利用通信网络或一系列通信网络进行数据交换。公司和组织操作互连许多计算装置来支持操作或者向第三方提供服务的计算机网络。计算系统可位于单一地理位置或者位于多个不同地理位置中(例如,经由私有或公共通信网络互连)。确切地,数据中心或数据处理中心(在本文中总体称之为“数据中心”)可包括多个互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表某一组织操作的私有数据中心或代表公众或者为了公众的利益操作的公共数据中心。为了促进数据中心资源的加大利用,虚拟化技术可允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机作为独立计算装置向数据中心的用户展现并操作。利用虚拟化,单个物理计算装置可按照动态方式创建、维护、删除或以其他方式管理虚拟机。进而,用户可从数据中心请求计算机资源,包括单一计算装置或联网计算装置配置,并且可提供用户不同数目的虚拟机资源。在一些场景中,虚拟机实例可根据多个虚拟机实例类型进行配置以提供特定功能性。例如,各种计算装置可与操作系统或操作系统配置、虚拟化硬件资源和软件应用的不同组合相关联,以使得计算装置能够提供不同的所希望的功能性,或者更有效地提供类似功能性。这些虚拟机实例类型配置经常包含在装置图像内,所述装置图像包括静态数据,所述静态数据包含虚拟机在被启动时将运行的软件(例如,OS和应用以及它们的配置和数据文件等)。装置图像典型地存储在用来创建或初始化实例的硬盘上。因此,计算装置可处理装置图像以便实现所希望的软件配置。附图简述当结合附图参阅以下详细描述时,本公开的上述方面和许多伴随的优点将变得更容易明白,同时变得更好理解,附图中:图1是描绘用于获取低延时计算能力的说明性环境的框图;图2描绘提供用于获取低延时计算能力的虚拟计算系统管理器的计算装置的总体架构;图3是示出根据示例性方面的由工作器管理器实现的低延时计算能力获取例程的流程图;并且图4是示出处理执行用户代码的请求的虚拟机实例管理过程的框图。详细描述公司和组织不再需要获取和管理他们自己的数据中心来执行计算操作(例如,执行代码,包括线程、程序、软件、例程、子例程、进程等)。随着云计算的出现,传统上由硬件计算装置提供的存储空间和计算能力现在可在数分钟内通过互联网获得并配置。因此,开发者可快速购买期望量的计算资源,而不必担心获取物理机器。这类计算资源通常以虚拟计算资源或虚拟机实例的形式来购买。在具有其自己的操作系统和其他软件部件的物理计算装置上托管的虚拟机的这些实例可以以与物理计算机相同的方式加以利用。然而,即使在购买虚拟计算资源时,开发者仍不得不决定要购买的虚拟机实例的数量和类型以及持有时间。例如,根据它们租用的类型和小时数,使用虚拟机实例的成本可能不同。另外,虚拟机可被租用的最小时间典型地以小时计。进一步地,开发者不得不指定安装在虚拟机上的硬件和软件资源(例如,操作系统类型和语言运行时间等)。它们可能具有的其他问题包括利用过度(例如,获取极少计算资源而面临性能问题)、利用不足(例如,获取比运行代码所需更多的计算资源,并且因此付费过度)、流量变化预测(例如,以使得它们了解何时放大规模或减小规模)以及实例和语言运行时间启动延迟(这可花费3-10分钟或者更长,即使用户可能希望计算能力以秒或者甚至毫秒计)。因此,需要一种允许用户利用由服务提供商提供的虚拟机实例的改进方法。根据本公开的各方面,通过维护一旦接收到用户请求就准备好使用的预初始化虚拟机实例的池,与执行用户代码相关联的延迟(有时称为延时)(例如,实例和语言运行时间启动时间)可显著减少。一般来说,本公开的各方面涉及对虚拟机实例和其中创建的容器的管理。具体地,公开有助于虚拟计算系统中的虚拟机实例的管理的系统和方法。虚拟计算系统维护在其上加载有一个或多个软件部件(例如,操作系统、语言运行时间、库等)的虚拟机实例的池。池中的虚拟机实例可指定来服务用户请求以执行程序代码。程序代码可在虚拟机实例上创建的隔离容器中执行。由于池中的虚拟机实例已经被启动并且在接收到请求时加载有特定的操作系统和语言运行时间,所以与发现可处理请求(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)的计算能力相关联的延迟显著减少。在另一方面,虚拟计算系统可在一个或多个物理计算装置上维护虚拟机实例的池,其中每个虚拟机实例在其上加载有一个或多个软件部件。当虚拟计算系统接收到执行用户的程序代码的的请求,其指定用于执行用户的程序代码的一个或多个计算约束,虚拟计算系统可基于由所述请求指定的一个或多个计算约束来选择虚拟机实例以用于执行用户的程序代码,并且致使用户的程序代码在所选择的虚拟机实例上执行。一般来说,本公开的各方面涉及对虚拟机实例的管理以使得其能够线程化作为服务。具体地,公开系统和方法,其通过利用虚拟机实例管理器来有助于虚拟机实例的管理,以使得服务可接收用户代码(线程、程序等)并且以高度可扩展、低延时的方式执行代码,而不需要虚拟机实例的用户配置。虚拟机实例管理器管理可执行由各种编程语言中的任一种书写的用户代码的虚拟机实例。虚拟机实例管理器可在接收用户代码之前并且在从用户接收关于任何特定虚拟机实例配置的任何信息之前,根据预定的配置集合来创建并配置虚拟机实例。相反,虚拟机实例管理器可预配置并建立各种虚拟机实例,每个虚拟机实例具有对应于各种运行时间环境中的任何一个或多个的配置。响应于执行用户代码的请求,虚拟机实例管理器可基于与请求相关联的配置信息来识别预配置的虚拟机实例,并且分配所识别的虚拟机实例来执行用户代码。虚拟机实例管理器可基于执行用户代码的请求的配置信息在所分配的虚拟机实例内创建并配置容器。在一些情况下,虚拟机实例管理器可识别已经分配给相同用户账户的虚拟机实例中的现有容器。单个虚拟机实例内的容器可同时托管同一用户代码的多个副本,并且如果在操作策略下允许的话,也可托管不同用户代码的副本。在一些情况下,虚拟机实例管理器通过利用各种辅助服务来管理并有助于由容器对所请求的用户代码的执行。现在将参考附图描述本公开的具体实施方案和示例性应用。这些实施方案和示例性应用旨在说明而非限制本公开。通过说明,各种示例性用户计算装置102被示出与虚拟计算系统110(包括台式计算机、膝上型计算机和移动电话)通信。一般地,用户计算装置102可以是任何计算装置,诸如台式电脑、膝上型电脑、移动电话(或智能电话)、平板电脑、信息亭、无线装置和其他电子装置。另外,用户计算装置102可包括在相同或不同数据中心上运行的web服务,其中例如不同的web服务可以编程方式彼此通信以便实行本文所描述的一个或多个技术。进一步地,用户计算装置102可本文档来自技高网...

【技术保护点】
1.一种用于处理在一个或多个虚拟机实例上执行用户代码的请求的计算机实现的方法,所述方法包括:/n当由被配置有特定计算机可执行指令的一个或多个计算装置实现时,/n提供多个预热的虚拟机实例,所述预热的虚拟机实例中的每一个都未分配给特定用户并且包含与编程语言相关联的软件部件;/n在提供所述多个预热的未分配虚拟机实例之后,接收执行用户代码的请求,所述请求包括与执行所述用户代码相关联的配置信息,其中所述请求在第一时间被接收;/n基于所述请求的所述配置信息来从所述多个预热的虚拟机实例中识别虚拟机实例,其中所述识别的虚拟机实例包含适于执行所述用户代码的特定软件部件;/n将所述识别的虚拟机实例与和所述请求相关联的用户账户相关联;/n在所述相关联的虚拟机实例内创建用于执行所述用户代码的容器;/n将所述特定软件部件和所述用户代码加载到所述容器中;以及/n开始由所述容器执行所述用户代码,其中所述开始在第二时间发生,以及/n其中从所述第一时间到所述第二时间的时间段小于预定持续时间。/n

【技术特征摘要】
20140930 US 14/502,9921.一种用于处理在一个或多个虚拟机实例上执行用户代码的请求的计算机实现的方法,所述方法包括:
当由被配置有特定计算机可执行指令的一个或多个计算装置实现时,
提供多个预热的虚拟机实例,所述预热的虚拟机实例中的每一个都未分配给特定用户并且包含与编程语言相关联的软件部件;
在提供所述多个预热的未分配虚拟机实例之后,接收执行用户代码的请求,所述请求包括与执行所述用户代码相关联的配置信息,其中所述请求在第一时间被接收;
基于所述请求的所述配置信息来从所述多个预热的虚拟机实例中识别虚拟机实例,其中所述识别的虚拟机实例包含适于执行所述用户代码的特定软件部件;
将所述识别的虚拟机实例与和所述请求相关联的用户账户相关联;
在所述相关联的虚拟机实例内创建用于执行所述用户代码的容器;
将所述特定软件部件和所述用户代码加载到所述容器中;以及
开始由所述容器执行所述用户代码,其中所述开始在第二时间发生,以及
其中从所述第一时间到所述第二时间的时间段小于预定持续时间。


2.如权利要求1所述的方法,其中所述预定持续时间是100ms。


3.如权利要求1所述的方法,其中创建所述容器还包括:
接收执行所述用户代码的多个请求;
在所述识别的虚拟机实例内创建多个容器,其中所述多个容器中的每一个基于一个所述请求的所述配置信息来配置;以及
选择所述多个容器中的一个来执行所述用户代码。


4.如权利要求1所述的方法,其中创建所述容器还包括:
接收执行多个用户代码的多个请求;
在所述识别的虚拟机实例内创建多个容器,其中所述多个容器中的每一个基于多个所述请求的配置信息来配置;以及
选择所述多个容器中的一个来执行所述用户代码。


5.如权利要求1所述的方法,其中创建所述至少一个容器还包括:
使用所述配置信息确定资源需求;以及
创建具有至少所述资源需求的至少一个容器。


6.如权利要求1所述的方法,其中所述软件部件包括运行时间或一个或多个库中的至少一个。


7.如权利要求1所述的方法,其还包括:
监测所述识别的虚拟机实例中的所述用户代码的激活历史;以及
基于所述激活历史将所述识别的虚拟机实例与所述用户账户解除关联或者毁坏所述容器。


8.一种系统,其包括:
计算装置,其包括耦合到存储器的处理器,所述存储器包括特定指令,所述特定指令在执行时配置所述系统以:
提供多个预热的虚拟机实例,所述预热的虚拟机实例中的每一个都未分配给特定用户并且包含与编程语言相关联的软件部件;
在提供所述多个预热的未分配虚拟机实例之后,接收执行用户代码的请求,所述请求包括与执行所述用户代码相关联的配置信息,其中所述请求在第一时间被接收;
基于所述请求的所述配置信息来从所述多个预热的虚拟机实例识别虚拟机实例,其中所述识别的虚拟机实例包含适于执行所述用户代码的特定软件部件;
将所述识别的虚拟机实例与和所述请求相关联的用户账户相关联;
在所述相关联的虚拟机实例内创建用于执行所述用户代码的容器;
将所述特定软件部件和所述用户代码加载到所述容器中;以及
开始由所述容器执行所述用户代码,其中所述开始在第二时间发生,以及
其中从所述第一时间到所述第二时间的时间段小于预定持续时间。


9.如权利要求8所述的系统,其中所述预定持续时间是100ms。


10.如权利要求8所述的系统,其中所述特定指令还将所述系统配置来在接收执行所述用户代码的所述请求之前提供所述多个虚拟机实例。


11.如权利要求8所述的系统,其中所述软件部件包括运行时间或一个或多个库中的至少一个。


12.如权利要求8所述的系统,其中所述特定指令还将所述系统配置来:
监测所述识别的虚拟机实例中的所述用户代码的激活历史;以及
基于所述激活历史将所述识别的虚拟机实例与所述用户账户解除关联或者毁坏所述容器。


13.如权利要求8所述的系统,其中所述识别的虚拟机实例在接收所述请求之前包括所述容器。


14.如权利要求13所述的系统,其中所述容器在接收所述请求之前包括所述用户代码。


15.如权利要求13所述的系统,其中所述特定指令还将所述系统配置来基于与所述请求相关联的资源需求来选择所述容器。


16.如权利要求8所述的系统,其中所述特定指令还将所述系统配置...

【专利技术属性】
技术研发人员:蒂莫西·艾伦·瓦格纳
申请(专利权)人:亚马逊技术有限公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1