一种云托管函数的暖启动技术的制作方法

文档序号:20499448发布日期:2020-04-21 22:38阅读:250来源:国知局
一种云托管函数的暖启动技术的制作方法

相关申请案

本发明要求2018年1月23递交的发明名称为“warmstarttechniqueforcloud-hostedfunctions”的第15/878,318号美国非临时申请案的在先申请优先权,其中,该非临时专利申请要求2017年9月1递交的第62/553,637号美国临时申请案的在先申请优先权。这些申请的内容以引入的方式并入本文。

本公开涉及云托管函数,更具体地,涉及降低与云托管函数调用相关的时延。



背景技术:

“云”是一种与通过网络进行的资源管理相关的抽象概念,更具体地,它涉及一种数据中心架构,该数据中心架构提供一种通过网络交付服务的平台。例如,云可以指各种通过因特网交付的服务,如基于网络的存储服务及计算服务。典型的云架构部署包括层级体系,该层级体系包括网络硬件的物理层以及一个或多个使用户接入网络硬件的软件层。例如,一种常见的云架构部署形式包括网络资源(如服务器、存储设备阵列、网络交换机等)的物理层及多层分级软件框架。该软件框架包括实现基础设施即服务(iaas)的第一层,实现平台即服务(paas)的第二层以及实现软件即服务(saas)的第三层。虽然可能存在特例,但通常来说,第三层中的资源依赖于第二层中的资源,第二层中的资源依赖于第一层中的资源,第一层中的资源依赖于物理层中的资源。

最近开发出一种无服务器云架构,该架构使用户能够执行云中的函数,而无需在上述传统分级结构中发放资源。例如,亚马逊网络服务(aws)开发的awslambda服务使用户能够运行代码而无需像在传统计算服务中一样发放或管理用于运行代码的服务器。因此,可以开发用于呼叫上传到awslambda服务上的函数的网络应用,其中,用于执行函数的计算资源由亚马逊,而非网络应用,管理发放。

在一些环境中,由服务器应用向函数管理器发送请求,调用云托管函数(此处也称作云函数)。该函数管理器通过在服务器或虚拟机上发放容器来处理该请求,其中,该容器中包括执行该云函数所需的所有资源(如计算资源、存储资源等);然后将该云函数的镜像加载到该容器中执行。但是创建该容器并将该云函数的镜像加载到该容器中需要计算周期,并且可能导致长达几百毫秒的云函数执行时延。该时延增加了接收该请求与从云函数向服务器应用返回结果之间的延迟。因此,需要降低与云托管函数调用相关联的时延。



技术实现要素:

提供一种云托管函数的暖启动技术的系统,包括非瞬时性存储器及一个或多个与所述存储器通信的处理器,其中,所述非瞬时性存储器包含指令,所述一个或多个处理器执行所述指令以激活函数工作流,所述函数工作流包括多个状态及所述状态之间的转换。另外,激活所述函数工作流之后,所述一个或多个处理器执行所述指令以确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数。所述一个或多个处理器还执行所述指令以在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化。

还提供一种云托管函数的暖启动技术的计算机实现方法。激活函数工作流,其中,所述函数工作流包括多个状态及所述状态之间的转换。此外,激活所述函数工作流之后,确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数。进一步地,在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化。

还提供一种存储有计算机指令的非瞬时性计算机可读介质。当一个或多个处理器执行所述指令时,使得所述一个或多个处理器执行相关步骤基于移动设备的当前场景再次执行应用中先前完成的任务。所述步骤包括:激活函数工作流,其中,所述函数工作流包括多个状态及所述状态之间的转换。所述步骤还包括:激活所述函数工作流之后,确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数。所述步骤还包括:在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化。

可提供一种云托管函数的函数工作流控制系统。所述函数工作流控制系统可包括:激活元件,用于激活函数工作流,其中所述函数工作流包括多个状态及所述状态之间的转换;决策元件,用于在激活所述函数工作流之后,确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数;实例化元件,用于在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化。

还提供一种包括函数工作流控制器的系统。所述函数工作流控制器用于激活函数工作流,其中,所述函数工作流包括多个状态及所述状态之间的转换。所述函数工作流控制器还用于在激活所述函数工作流之后,确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数。所述函数工作流控制器还用于在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化。

可选地,在上述任一实施例中,在云计算环境中通过人工指令或触发事件激活所述函数工作流。

可选地,在上述任一实施例中,所述函数工作流包括的所述多个状态中的所述特定状态是所述函数工作流包括的所述多个状态中的任意状态,这样在所述函数工作流激活时直接确定与所述函数工作流包括的所述多个状态相关联的所有云托管函数,以实现其实例化。

可选地,在上述任一实施例中,通过以下方式确定所述云托管函数:确认所述函数工作流中的当前状态;确定所述特定状态在所述函数工作流中与所述当前状态相距预定义转换次数;确认所述云托管函数与所述特定状态相关联。进一步可选地,所述预定义转换次数为1,因此,确定所述特定状态为所述函数工作流中所述当前状态能够转换到的下一状态。

可选地,在上述任一实施例中,通过以下方式确定所述云托管函数:确认所述函数工作流中触发的当前状态;确定所述函数工作流中从所述当前状态开始的多个可能的转换路径;预测所述多个可能的转换路径中的特定转换路径将用于所述函数工作流的激活;确定所述特定状态包括在所述特定转换路径中;确认所述云托管函数与所述特定状态相关联。进一步可选地,根据在所述函数工作流的先前执行中收集的历史统计信息预测所述特定转换路径将用于所述函数工作流的激活。

可选地,在上述任一实施例中,通过以下方式确定所述云托管函数:确认所述函数工作流中的当前状态;确定所述当前状态具有一个或多个相关联的云托管函数。

可选地,在上述任一实施例中,将确定的云托管函数实例化包括在云计算环境中为所述云托管函数创建一个容器,其中,所述容器为所述云托管函数的执行环境;在所述容器中加载所述云托管函数的镜像;初始化所述云托管函数的运行时环境。

可选地,在上述任一实施例中,将确定的云托管函数实例化包括在云计算环境中创建所述云托管函数的实例。

可选地,在上述任一实施例中,所述一个或多个处理器还执行所述指令以在所述函数工作流中触发所述特定状态时执行所述云托管函数。

可选地,在上述任一实施例中,所述一个或多个处理器还执行所述指令以在确定所述函数工作流已经终止时,从云计算环境中释放所述云托管函数的实例化。

提供一种云托管函数的暖启动技术的系统,包括非瞬时性存储器及一个或多个与所述存储器通信的处理器,其中,所述非瞬时性存储器包含指令,所述一个或多个处理器执行所述指令以确认用于在云计算环境中执行的云托管函数。此外,所述一个或多个处理器执行所述指令以基于为所述云托管函数计算的多个参数确定在所述云计算环境中保持所述云托管函数的实例化的维持(保留)时间。所述一个或多个处理器还执行所述指令以在所述云计算环境中将所述云托管函数实例化之后,在所述云计算环境中将所述云托管函数的实例化保持确定的维持时间。在一实施例中,所述维持时间是所述云托管函数执行完成之后,所述云托管函数的实例保持在暖启动模式的时长。

还提供一种云托管函数的暖启动技术的计算机实现方法。确认用于在云计算环境中执行的云托管函数,并且基于为所述云托管函数计算的多个参数确定在所述云计算环境中保持所述云托管函数的实例化的维持时间。进一步地,在所述云计算环境中将所述云托管函数实例化之后,在所述云计算环境中将所述云托管函数的实例化保持确定的维持时间。

还提供一种存储有计算机指令的非瞬时性计算机可读介质。当所述指令为一个或多个处理器执行时,使得所述一个或多个处理器执行云托管函数的暖启动技术相关的步骤。所述步骤包括:确认用于在云计算环境中执行的云托管函数。所述步骤还包括:基于为所述云托管函数计算的多个参数确定在所述云计算环境中保持所述云托管函数的实例化的维持时间。所述步骤还包括:在所述云计算环境中将所述云托管函数实例化之后,在所述云计算环境中将所述云托管函数的实例化保持确定的维持时间。

可选地,在上述任一实施例中,在所述云计算环境中保持所述云托管函数的实例化的维持时间是通过预定义函数确定的,其中,所述预定义函数:接收为所述云托管函数计算的所述参数作为输入;处理所述参数以确定所述维持时间;输出确定的维持时间。

可选地,在上述任一实施例中,所述参数包括所述云托管函数的镜像大小。

可选地,在上述任一实施例中,所述参数包括所述云托管函数所需的存储器分配。

可选地,在上述任一实施例中,所述参数包括所述云托管函数的执行持续时间。

可选地,在上述任一实施例中,所述参数包括触发所述云托管函数的事件的顺序到达间隔。

可选地,在上述任一实施例中,采用先前在云计算环境中执行所述云托管函数时收集的历史信息计算所述参数。

可选地,在上述任一实施例中,在所述云计算环境中将所述云托管函数实例化包括在所述云计算环境中创建所述云托管函数的实例。进一步可选地,在完成其正常执行后,所述云托管函数的实例可在所述云计算环境中保持一段时间。

可选地,在上述任一实施例中,在所述云计算环境中将所述云托管函数实例化包括:在云计算环境中为所述云托管函数创建一个容器,其中,所述容器为所述云托管函数的执行环境;在所述容器中加载所述云托管函数的镜像;初始化所述云托管函数的运行时环境。进一步可选地,在所述云计算环境中保持所述云托管函数的实例包括保持所述容器、所述容器中所述云托管函数的所述镜像以及所述运行时环境。

可选地,在上述任一实施例中,所述一个或多个处理器还执行所述指令,以确定在所述维持时间内未在所述云计算环境中执行所述云托管函数;确定在所述维持时间内未在所述云计算环境中执行所述云托管函数后,从所述云计算环境中释放所述云托管函数的实例化。

为此,在一些可选的实施例中,上述系统、计算机实现方法和/或非瞬时性计算机可读介质的前述特征中的一个或多个可提供云托管函数的暖启动技术。通过确定与激活的函数工作流关联的云托管函数并在其与激活的函数工作流关联执行之前将该云托管函数实例化(例如,以便后续请求执行该云托管函数),和/或,通过在为已经实例化的云托管函数动态确定的维持时间内保持该云托管函数(以便后续在该维持时间内请求执行该云托管函数),该暖启动技术可降低与所述云托管函数的执行时间相关联的时延。应注意的是上述潜在优势仅用于说明而不应被理解为任何形式的限制。

附图说明

图1a与图1b示出根据现有技术的一种用于实现云的基础设施;

图2为根据现有技术的一种云架构的概念图;

图3为根据现有技术的一种无服务器云架构的概念图;

图4为根据一实施例的一种无服务器云架构的概念图;

图5为根据一实施例的一种状态机模型的概念示意图;

图6示出根据一实施例的云托管函数的调用;

图7示出根据另一实施例的云托管函数的调用;

图8示出根据一实施例的与每个云函数相关的执行参数的使用;

图9为根据一实施例的一种提供云托管函数的暖启动技术的方法的流程图;

图10为根据一实施例的一种提供云托管函数的暖启动技术的方法的流程图;

图11示出一种可在其中实现上述不同实施例中的多种架构和/或功能的示例性系统。

具体实施方式

函数工作流将云托管函数编排成协作微服务应用。函数工作流代表由多种不同来源的事件驱动的状态机模型,这些事件控制云托管函数以规定的方式执行。函数工作流使用户能够设置是按顺序还是同时执行云托管函数,调用函数呼叫进行错误状态管理,按不同的事件负载进行扩减容等。函数工作流控制器支持多个状态机实例的实例化及调度,以实现函数工作流定义的状态机模型。

函数工作流还允许用户在执行云托管函数及通过函数工作流进行处理之前定义集合点(即状态),以等待预定义的事件。协调函数工作流执行云托管函数的优势在于所述函数工作流为云托管函数的管理提供了一个统一的框架,用户无需自行解决协调问题。可以在进入特定状态、退出特定状态或在特定状态中发生事件时触发云托管函数的调用。

通常,触发云托管函数后,会向函数管理器传输请求,以发放用于执行所述云托管函数的容器,执行所述云托管函数,然后将结果返回给所述函数工作流控制器。所述函数工作流控制器可将所述结果转发到与函数工作流实例关联的服务器应用。通过提前将所述云托管函数实例化以便后续调用(请求执行)所述云托管函数可降低与发放容器并准备执行云托管函数相关联的时延。在一个实施例,可以使用函数工作流高效地管理函数管理器中云托管函数的暖启动(即早期实例化)。

图1a与图1b示出了根据现有技术的一种用于实现云100的基础设施。此处所用的云100指的是一组位于一个或多个数据中心(及物理地址)的硬件资源及软件架构,用于通过网络,如因特网,实现一组服务。如图1a所述,所述云100包括多个数据中心110,所述多个数据中心110中的每个数据中心110包括一个或多个资源池120。资源池120中包括存储器件122,计算器件124及网络器件126。

如图1b所示,存储层122包括物理资源,用于存储指令和/或云100中的数据。存储层122包括多个存储区域网络(san)152,每个san152提供对个或多个块级存储设备的访问。在一个实施例中,san152包括一个或多个可通过网络访问的非易失性存储设备。例如,非易失性存储设备包括但不限于硬盘驱动器(hdd),固态硬盘(ssd),eeprom或紧凑式闪存(cf)卡等闪速存储器,等等。在另一实施例中,san152是将多个物理磁盘驱动器件(比如若干相似的hdd)结合成单个逻辑存储单元的raid(冗余磁盘阵列)存储阵列。在又一实施例中,san152是一种为物理存储资源提供抽象层的虚拟存储资源,这样虚拟块地址可用于引用存储于一个或多个物理非易失性存储设备的存储器中的一个或多个对应块中的数据。在此类实施例中,所述存储层122可包括在一个或多个处理器上执行的软件框架,用于实现虚拟存储资源。

所述存储器件124包括物理资源,用于执行云100中的进程(即指令集)。所述存储器件124可包括多个计算单元154,每个计算单元154包括至少一个处理器及用于应用所述至少一个处理器的软件架构。在一实施例中,计算单元154包括一个或多个服务器(即刀片服务器),其中,所述服务器提供用于执行指令集的物理硬件。每个服务器可包括一个或多个处理器(即一个或多个cpu、gpu、asic、fpga、dsp等)及用于存储将由所述一个或多个处理器处理的指令和/或数据的易失性存储器。所述计算单元154还可包括操作系统。当其加载到所述易失性存储器中并由所述一个或多个处理器执行时,所述操作系统为在服务器的硬件资源上执行的不同进程提供运行时环境。在另一实施例中,计算单元154为虚拟机,其提供一系列如同服务器的硬件资源的虚拟资源。所述计算层124可包括超管理器或虚拟机监控器,使得若干虚拟机实际上可以在同一服务器上同时执行。

组网器件126包括实现网络的物理资源。在一实施例中,组网层126包括若干交换器和/或路由器,使得数据能够在云100的不同资源之间传输。例如,计算层124中的每个服务器可包括耦合到网络接口(即以太网)的网络接口控制器(nic)。所述接口可耦合到网络交换器,使得数据可以从所述服务器发送到与所述网络服务器相连的另一服务器。所述组网层126可以实现osi模型的若干层,包括数据链路层(即2层)、组网层(即3层)及传送层(即4层)。在一实施例中,所述组网层126实现虚拟化层,以在物理网络中建立虚拟网络。在此类实施例中,网络层126中的每个网络单元(nu)156为虚拟专用网(vpn)。

可以理解的是,所述多个数据中心中的每个数据中心110可包括一组不同的硬件资源,因此包括不同数量的资源池120。进一步地,一些资源池120可以不包括所述存储层122,计算层124和/或网络层126中的一个或多个。例如,一个资源池120可以只包括所述计算层124中的一组服务器。另一资源池120可同时包括计算层124及网络层126但不包括存储层122。

图2为根据现有技术的一种云架构200的概念图。如图2所示,所述云架构200表示为多个分级层。所述云架构200包括物理层202,基础设施即服务(iaas)层204,平台即服务(paas)层206及软件即服务(saas)层208。所述物理层202是一系列实现云的硬件资源。在一实施例中,所述物理层202的实现如图1a及图1b所示。

图3为根据现有技术的一种无服务器云架构300的概念图。如图3所示,所述无服务器云架构300没有如图2所示的传统云架构中的分级结构。物理层302为一系列实现云的硬件资源。在一实施例中,所述物理层302的实现如图1a及图1b所示。

所述无服务器云架构300包括使用所述物理层302的硬件资源管理函数执行的无服务器引擎310。在一实施例中,所述无服务器引擎310包括管理在所述物理层302的资源上执行的一个或多个虚拟机的超管理器。所述无服务器引擎310在每个虚拟机上运行软件,所述虚拟机包括一个或多个用于执行不同函数的容器。所述无服务器引擎310用于基于从api网关320接收的函数呼叫执行函数。

应用330可以通过函数呼叫来呼叫函数。在一实施例中,通过向与api网关320相关联的端点发起restfulapi呼叫实现函数呼叫。在现有技术中众所周知,标准的超文本传输协议(http)方法可以与统一资源定位符(url)配合使用来指定该url标识的函数。所述api网关320从应用330接收函数呼叫,从而触发述所无服务器引擎310执行对应的函数。

可以理解的是,术语“无服务器”不是指所述云架构300不包括服务器,而是指函数呼叫器无需发放用于执行函数的服务器资源,因为发放是由所述无服务器引擎310执行的。此外,可以理解的是,所述无服务器引擎310可以建立在传统的云架构之上,以使用例如所述iaas层204或paas层206上的传统服务发放虚拟机。

图4为根据一实施例的一种无服务器云架构400的概念图。如图4所述,所述无服务器云架构400没有如图2所示的传统云架构一样的分级架构。物理层402是一系列实现云的硬件资源。在一实施例中,所述物理层402的实现如图1a及图1b所示。应该注意的是图4中所示的无服务器云架构400只是一种可能的无服务器云架构的示例。其它无服务器云架构,例如基于使用raft一致性算法或paxos的复制状态机的架构,可以结合此处所述的实施例使用。

所述无服务器云架构400用于基于状态机模型使能多个云托管函数的执行,其中,所述状态机模型响应于事件进行转换。可以使用服务工作流定义所述状态机模型,所述服务工作流是一个文件,包括用服务工作流语言编写的所述状态机模型的表示。所述状态机模型包括分级结构中定义的状态、动作及事件。这些动作可包括函数调用、净荷处理、保持一个延迟周期、向下一状态转换或终止状态机。在一实施例中,所述服务工作流语言为状态机模型的json表示。在另一实施例中,所述服务工作流语言为具有用于定义所述状态机模型的语法的专有语言。

所述无服务器云架构400包括函数执行引擎410,函数工作流引擎420,函数工作流(fg)管理器430及一个或多个事件源440。应当说明的是此处描述的各种器件,包括所述函数执行引擎410,函数工作流引擎420,函数工作流(fg)管理器430及一个或多个事件源440,在一实施例中可以是执行此处所描述的功能的独立模块形式的手段。每个所述器件可包括但不限于至少一个处理器(将在下文描述)及任意对其进行控制的软件,和/或任意其它具有上述功能的电路。

所述函数执行引擎410管理所述物理层402中的资源发放,以执行所述云托管函数。例如,所述函数执行引擎410从所述函数工作流引擎420接收函数呼叫,发放容器用于执行所述函数,将净荷数据传送至与所述容器相关联的云中的节点,执行所述函数,并将结果净荷数据转发到目的地。可以用多种语言(如java,python,c++等)编写函数。所述函数被编译成二进制可执行文件或在运行时编译,并在容器中执行,其中,该容器将该函数与从其他函数分配给该函数的资源隔离。

所述函数工作流引擎420包括函数工作流控制器(fgc)调度程序422,一个或多个函数工作流控制器(fgc)424,及与每个fgc424相关联的一个或多个函数工作流实例(fg)426。每个fgc424用于管理一个或多个fg实例426,所述一个或多个fg实例426为函数工作流的特定调用实现状态机模型。用户定义的函数工作流可通过网络应用中包括的呼叫进行调用。例如,网络应用可包括与函数工作流对应的uri相关联的http请求。响应于该http请求,创建一个新的fg实例426,为该网络应用实现由所述函数工作流定义的状态机模型。

所述fgc调用程序422用于提供按需发放fgc424,以处理与特定函数工作流(即与网络应用相关联的一系列函数)相关联的动态流量。例如,用户创建包括对所述函数工作流的呼叫的网络应用。该用户将函数工作流定义上传到云上,对其进行解析以创建状态机模型规格。所述函数工作流引擎420用于,当客户端在客户端机器上加载并执行所述网络应用时,发放并管理若干fg实例426,从而在包括对所述函数工作流的呼叫的客户端机器上运行代码。每个fgc424及若干fg实例426可托管在云中的不同节点(即服务器)上。所述fgc调度程序422可响应于所述网络应用生成的流量,管理不同节点上fgc424的实例化,按需增加或减少fgc424的数量。在一实施例中,向特定函数工作流的fgc调度程序422发放特定uri,使得所述网络应用能够呼叫所述fgc调度程序422执行函数工作流微服务。所述fgc调度程序422创建新的fg实例426,以通过向其中一个fgc424传输消息来处理所述呼叫。所述fgc调度程序422也可以通过所述fgc424将从所述网络应用接收的净荷传递给所述fg实例426,从而使所述fg实例426能够根据所述函数工作流处理所述净荷。一旦所述函数工作流完成所述净荷的处理,所述fg实例426将结果净荷传输给所述fgc调度程序422,以传回给发起所述呼叫的所述网络应用,并且可将所述fg实例426删除。

所述fg管理器430调用云中不同节点上的一个或多个函数工作流引擎420。每个函数工作流引擎420可与多个不同用户为不同网络应用创建的不同函数工作流相关联。此外,所述fg管理器430可为单个函数工作流调用多个函数工作流引擎420,为非常大型的网络应用扩容所述无服务器云架构。所述fg管理器430为进行负载均衡的集中式逻辑模块,并为每个函数工作流减少或增加fgc424的数量。所述fg管理器430通过实现状态机模型规格的api450接收函数工作流。以特定函数工作流语言编写的函数工作流可由解析器读取并根据所述api450变换为状态机模型规格,以通过所述fg实例426实现所述状态机模型。

所述fg管理器430还对将所述事件源440映射到fg实例426的事件映射代理442进行配置。所述云可包括若干事件源440。事件源440指的是所述云中任意与事件相关联的器件。例如,事件源440包括但不限于网络存储设备、数据库、api网关等。例如,事件包括但不限于文件事件(如将图像存储到云存储设备上)、表格事件(如在数据库中加入表项)或协议事件(如在api网关接收http请求)。事件可用于触发处于所述状态机模型中状态的动作。换而言之,动作不一定是在进入特定状态之后就被立即执行,而是在进入该状态之后,发生一个或多个事件之后才执行所述动作。

在一实施例中,为监控事件,所述fg管理器430在函数工作流引用的每个事件源440中创建事件映射代理442。所述事件映射代理442是软件模块,用于检索事件到fgc映射表并建立所述事件源440与一个或多个fgc424之间的通信信道。在一实施例中,所述fg管理器430生成基于与函数工作流对应的状态机模型规格将事件与fgc424相关联的映射表。特定状态机模型规格用于将包括若干fgc424的特定函数工作流引擎420实例化(即对其进行配置)。每个fgc424可通过特定的通用资源标识符(uri)进行引用,所述uri使得所述无服务器云架构400中的其它器件能够直接与所述fgc424通信。然后每个事件映射代理442可使用与一个或多个fgc424对应uri建立与所述fgc424之间的tcp/ip链接。之后所述事件映射代理430可被所述fg管理器430配置用于检测一个对应事件源440中的一个或多个事件。检测到事件之后,所述事件映射代理430可直接向与所述事件对应的一个或多个fgc424传输消息。

在一可替代的实施例中,所述事件映射代理442可以为集中式器件,用于对多个不同事件源440进行轮询以检测事件。然后所述集中式事件映射代理442可将与事件有关的消息传输至所述一个或多个fgc424。

每个fg实例426用于实现所述状态机模型的实例。所述fg实例426被激活(即被调用、呼叫等)并转换到初始状态。然后,当在所述状态机模型的状态之间转换时,所述fg实例426运行以处理激活时接收的净荷数据。可响应于一个或多个事件触发每个状态中的动作。动作可包括调用所述函数执行引擎410执行的云托管函数的函数呼叫。还可以在从所述云托管函数接收到结果时触发动作。再者,所述fg实例426实现的所述状态机模型用于协调微服务应用中云托管函数的执行。

图5为根据一实施例的一种状态机模型500的概念示意图。可以理解的是,图5中的状态机模型500仅仅作为示例提供,不同用户定义的状态机模型可包括不同状态拓扑及状态转换。如图5所示,所述状态机模型500包括五种状态:第一状态510,第二状态520,第三状态530,第四状态540及第五状态550。调用所述状态机模型500的实例的呼叫由所述函数工作流(fg)管理器430接收。所述fg管理器430可基于与所述状态机模型500中状态相关联的任意事件在一个或多个事件源440中按需创建事件映射代理。在一实施例中,可以在客户端机器加载并运行代码时发起呼叫,其中,所述客户端代码是,例如,生成到与所述状态机模型500相关联的url的http请求的java脚本。所述fg管理器430还用于向所述fgc调度程序422传输消息,以创建与所述呼叫对应的fg426的新实例。所述fgc调度程序422可转发其中一个现存fgc424或创建新的fgc424来实例化所述fg426的新实例。一旦对应于所述呼叫的fg实例426开始运行,状态机进入第一状态510。

每个状态可与一个或多个动作相关联。动作可包括呼叫云托管函数、处理净荷、将动作延迟一段时间、向下一状态转换或终止所述状态机。可以在进入状态时、发生一个或多个事件时,一段时延之后,接收到函数呼叫的结果时,发生错误(即函数呼叫超时)之后或在现有状态中调用动作。在很多状态中,只有在发生一个或多个事件之后才调用动作。可以对动作进行门控(即阻止其执行)直到多个事件发生(即,与and逻辑结合时)或直到两个或多个事件中的任意事件发生(即,与or逻辑结合时)。其次,fgc424从一个或多个事件映射代理442接收事件发生的通知。

如图5所示,当创建一个fg实例426时,所述状态机模型500进入初始状态,如所述第一状态510。所述第一状态510可定义在进入第一状态510时或在发生一个或多个事件之后执行的动作。所述第一状态510还可指定转换到另一状态的条件。在一实施例中,所述状态机模型可以在状态中调用的动作指定的函数返回结果时转换到另一状态。在另一实施例中,所述状态机模型可以在从所述事件映射代理442(即从所述事件源440)接收到一个或多个事件时转换到另一状态。

所述状态机模型500示出从所述第一状态510到所述第二状态520的一次转换。但是单个状态也可包括通过两次或更多次转换到不同的状态的逻辑。例如,可以定义第一转换为发生第一事件时从所述第二状态520转换到所述第三状态530,且可以定义第二转换为发生第二事件时从所述第二状态520转换到第四状态540。事件到达所述fg实例426时触发动作和/或向另一状态的转换。换而言之,如果当前状态为所述第二状态520,那么所述状态机模型的下一状态取决于发生的具体事件。如图5所示,所述第三状态530包括到所述第四状态540的第一转换以及到所述第五状态550的第二转换;所述第四状态540包括到所述第五状态550的转换;所述第五状态550包括到终止所述状态机模型500的转换。

可以理解的是,fg实例426用于实现状态机模型的逻辑,即,响应于事件呼叫函数,在状态间转换,并处理从客户端接收的净荷、一个或多个事件、动作结果等。在一实施例中,所述fg实例426是采用状态机模型规格作为输入所调用的对象,以配置所述fg实例426实现所述状态机模型规格定义的状态机模型,其中,所述状态机模型规格定义了所述状态机模型的状态,与每个状态相关联的事件及动作,以及状态间的转换。

图6示出根据一实施例的云托管函数的调用。如图6所示,事件610由一个或多个事件映射代理442生成并传输给fgc424。所述fgc424包括一组将从所述事件映射代理442接收的事件映射到所述fgc424管理的特定fg实例426的映射规则620。所述fg实例426管理所述状态机模型的执行,包括传输云托管函数执行请求到所述函数执行引擎410。此外,所述fg实例426中的状态机模型跟踪当前状态,监视从所述事件映射代理442接收的事件,响应于事件触发执行每个状态中的一个或多个动作,并转换到新的状态。

所述函数执行引擎410包括存储并管理云函数镜像的函数信息库630。当所述函数执行引擎410接收到云托管函数640实例化的请求时,所述函数执行引擎410通过为该函数创建容器并将函数镜像加载到所述函数中执行将所述云托管函数640实例化(即创建其可执行实例)。容器是为软件包虚拟化操作环境的软件分区。相对于虚拟机,容器将主机os提供的环境虚拟化,但是不包括该主机os的内核、驱动及共享库的单独实例。因此,特定容器中执行的软件与其它容器中执行的软件相隔离。会向容器分配执行所需的资源,如存储器及非易失性存储,但是多个容器共享主机操作系统,因此每个容器的占用大小要比使用独立虚拟机时小得多。

因此,发放容器后,所述函数执行引擎410从所述函数信息库630加载函数镜像到所述容器。所述函数镜像包括执行特定函数所需的代码、库及特定语言的运行时环境。所述代码可包括一组定义所述函数的指令,操作环境设置,主机os中可能不包括的所述代码使用的其它库等。所述函数可以用不同运行语言(如java、python、c++等)编写,并编译成二进制可执行文件或作为在运行时解释的字节码提供。

为减少与云函数执行相关联的时延,可使用暖启动技术。这可包括实例化容器并在接收云函数调用(执行)请求之前将云函数的函数镜像加载到所述容器中。在一实施例中,所述fgc424使得所述函数执行引擎410在特定fg实例426被激活时,将与所述fg实例426相关联的所有云函数实例化。因为所述fg实例426已经被激活,所述fgc424会对所述fg实例426进行分析并创建一个所述fg实例426中被引用的所有云函数640的列表。例如,所述fg实例426可包括若干状态及每个状态中的若干动作。每个动作可指定响应于一个或多个事件被呼叫的一个或多个云函数640。此处,可在进入或退出特定状态时呼叫云函数640。可对与所述fg实例426相关联的所述所有云函数640的列表进行编译,然后所述fgc424可向所述函数执行引擎410传输请求,将与所述fg实例426相关联的每个云函数实例化。因此,当fg实例426被所述fgc424激活时,与所述fg实例426相关联的所有云函数640都被实例化,使得所述云函数640被调用时能立刻执行。

例如,如图6所示,当所述fg实例426被激活时,所述fgc424可对所述fg实例426进行分析,并确定所述fg426包括三种状态:状态a、状态b及状态c。每个状态可包括与特定云函数的呼叫相关联的动作。状态a中的动作可以与第一云函数640(0)的呼叫相关联,状态b中的动作可以与第二云函数640(1)的呼叫相关联,状态c中的动作可以与第三云函数640(2)的呼叫相关联。当fg实例426被激活时,所述fgc实例424向所述函数执行引擎410发送请求,将所述第一云函数640(0),所述第二云函数640(1)及所述第三云函数640(2)全部实例化。传输所述请求之后,所述fg实例426可使所述状态机转换至初始状态(即状态a),然后等待事件在所述状态机模型中开展。当所述状态机模型到达一个引发云函数调用的动作时,所述fgc424呼叫所述云函数,其中,所述云函数已经在所述函数执行引擎410中实例化且立即被所述函数执行引擎410执行,因为所述云函数镜像已经被加载到容器中且在等待被呼叫执行。

可以理解的是,任意指定时间内可实例化的活动容器可能非常多。这是因为一个或多个fgc424中可以有成百上千个活动fg实例426,且每个fg实例426使得若干云函数在所述函数执行引擎410中实例化。此外,每个实例化的容器对应特定云函数的一个实例。因此,如果多个fg实例426对应于多个不同的网络应用被激活,则可以在所述函数执行引擎410中将同一个云函数(即不同数据集合)的相似容器的多个实例实例化。所以,可以理解的是,所述函数执行引擎410可能需要大量的资源,而且如果某些事件从不会导致转换到与特定fg实例426相关联的状态机模型中的一个或多个状态,则某些实例化的云函数将永远不会被执行。

在一实施例中,所述函数执行引擎410中的参数评估器(图8中802)在所述函数信息库630中管理与每个云函数相关的执行参数。为每个云函数计算参数值,该参数值决定所述函数执行引擎410是否为特定云函数执行暖启动。在一实施例中,所述参数值是基于触发所述云函数的事件的到达间隔时间的指数移动平均值。所述到达间隔时间的指数移动平均值越大,所述参数的值越小;而到达间隔时间的指数移动平均值越小,所述参数的值越大。所述函数执行引擎410可将所述参数值与阈值相比较,确定是否为所述云函数执行暖启动。因此,当fg实例426被激活时,只有参数值大于所述阈值的云函数会被实例化。与所述fg实例426相关联的所有其它云函数(即与低于所述阈值的参数值相关联的云函数)都将在接收到调用所述云函数的请求时(即执行时)被实例化。因此,会对某些云函数启用暖启动,而其他云函数则不启用,从而减少任意指定时间内分配给云函数容器的资源数量。

在一实施例中,所述参数值基于与云函数相关联的多个统计数据。所述统计数据可包括但不限于所述云托管函数的实例的调用频率,与所述云托管函数对应的函数镜像的大小,分配给所述云托管函数的容器的存储器大小,所述云托管函数的多个实例的平均执行时间,及触发所述云托管函数的事件的到达间隔时间的指数移动平均值。与所述云托管函数对应的函数镜像的越大,参数值越大。从非易失性存储中加载到与新容器相关联的存储器时,更小的函数镜像比更大的函数镜像花费时间更少。此外,给所述云托管函数分配的存储器越多,所述云托管函数所用存储器时间(即gb·sec)越多。因此,函数越大或所分配的存储器越多,与实例化相关联的时延越高;且对更大的函数进行暖启动要比对更小的函数进行暖启动给终端用户带来更多益处。所述云托管函数的多个实例的平均执行时间越长,参数值越小。通常,对于执行时间长的云函数,实例化时间与调用时间的比值更小。所述云托管函数的执行时间越长,与实例化相关联的时延越不明显。因此,执行时间较长的云托管函数的时延降低对于终端用户来说更不明显。将上述独立参数聚合成单个参数,并与阈值进行比较以确定是否应该将所述云托管函数实例化。例如,可以根据以下加权公式组合独立参数:

magg=∑iwimi,(公式1)

其中,mi为特定独立参数值,wi为所述独立参数值的对应权重,magg为组合后的聚合参数值。

在一实施例中,所述函数执行引擎410配置有与暖启动模式相关联的最长维持时间。此外,fg实例426的激活可触发云托管函数的实例化。但是,fg实例426终止前并不是所有暖启动模式下实例化的函数都由所述fg实例426调用。例如,状态机模型可通过所述状态机包括多个分支,而且根据不同事件的顺序,到某些状态的转换可能从不会发生。这种情况下,可能需要腾出分配给所述云函数(即所述容器)的实例的资源,以将这些资源分配给所述云函数或不同云函数的不同实例。此时,所述最长维持时间可决定所述函数执行引擎410何时从所述云函数的已实例化的容器中腾出资源。如果从接收到实例化所述云函数的请求到当前时间之间的时长超过所述最长维持时间,则所述函数执行引擎410腾出与该容器相关联的资源。如果在腾出了所述容器的资源之后接收到调用该云函数的请求,则在接收到调用所述云函数的请求之后为所述云函数分配一个新的容器并将所述函数镜像加载到所述容器中。所述最长维持时间保证了资源不会无限期地与从来不会被调用的云函数绑定在一起。

在一实施例中,采用云函数的持续时间对云函数的参数进行调整。如果具体的云函数被实例化,但是实例化与调用之间的延迟超过了所述最长维持时间,则降低参数值使得后续不对该云函数采用暖启动模式。因此,参数反映了特定云函数在从实例化开始的所述最长维持时间内多久被调用一次。很少对在超过最长维持时间之后被调用的云函数进行暖启动。这是因为在实例化时已经腾出分配给这些云函数的资源,需要在接收到云函数调用请求之后重新分配资源。因此,对于实例化与调用之间的延迟多变且较长的云函数,暖启动不起作用。

图7示出根据另一实施例的云托管函数的调用。如上所述,当特定fg实例426被激活时,与该fg实例426相关联的所有云函数将会被实例化。但是这样的话,资源利用效率可能不高,因为根据状态机模型中状态的顺序与数量不同及因某些事件的时序导致的转换到特定状态所需的时间不同,实例化与执行之间的时间可能很长。因此,在另一实施例中,发生状态转换时才将云函数实例化,而不是在所述fg实例426被激活时直接实例化。也就是说,只有在特定云函数最近非常有可能被调用时才将这些云函数实例化。

在一实施例中,当每个fg实例426被激活时,所述fgc424将与所述fg实例426相关联的状态信息保存在一个或多个数据结构中。按照定义,函数工作流状态机包括所有状态及状态转换信息,因此还包括对于所述状态机模型中所述fg实例426所定义的每个状态,从该特定状态可以转换到的所有状态的标识符。也就是说,所述状态信息可包括所述状态机模型中所述fg实例426所定义的每个状态的下一状态的列表。所述fg实例426向新的状态转换(即进入一个状态)时,所述fgc424搜索所述状态信息查找可从当前状态转换到的任意状态。然后所述fgc424确定是否有任何云函数与这些下一状态相关联。如果有任何云函数与一个或多个所述下一状态相关联,则所述fgc424向所述函数执行引擎410传输所述云函数的实例化请求,暖启动这些云函数。因此,只有在当前状态到与云函数相关联的状态的潜在转换可能发生时才将该云函数实例化。

在另一实施例中,对所述状态机模型的进一步分析可以确定从特定状态最可能到达哪些下一状态。例如,一个转换可与正常工作流相关联,而另一转换可与异常工作流相关联。对关于在所述fg实例426的诸多实例中发生特定转换的频率的统计数据进行分析可帮助确定哪些状态是更有可能的下一状态,哪些状态是更不可能的下一状态。在有些情况下,只有在转换到下一状态的可能性高于某个阈值时才对云函数进行实例化。例如,当从一个状态到两个或更多下一状态的转换至少有两个时,如果所述状态到下一状态发生的概率大于40%,则认为所述状态是更有可能的下一状态,且可以将所述更有可能的下一状态的云函数实例化。

相对于在fg实例426被激活时将与该fg实例426相关联的所有云函数实例化,该即时暖启动模式会减少所述函数执行引擎410给云函数分配的资源数量。该即时暖启动模式还有助于降低与状态机模型中状态相关联的所有函数的实例化与调用之间的延迟。

在一实施例中,与用于“早期”实例化的函数相关联的下一状态限于与特定状态相距一次转换之内的所有状态。例如,如图7所述,状态a是所述fg实例426的初始状态,状态b与状态c是与状态a相距一次转换的下一状态。状态d与状态a相距至少两次转换。因此,状态d不是状态a对应的下一状态。但是,在另一实施例中,下一状态限于与特定状态相距阈值次数的转换之内的所有状态。例如,如果下一状态限于与特定状态相距两次转换之内的所有状态,则状态b、状态c与状态d是与状态a对应的下一状态,因为状态d与状态a相距两次转换。对于具有大量状态的fg实例426,尤其是当所述状态机模型可能在短时期内在状态间转换时,可以将转换的阈值次数提高到一个数值,使得云函数提前两次或更多次状态转换被实例化。

该即时暖启动模式有助于减少实现云函数的暖启动所有分配的资源。在该即时暖启动模式中采用智能资源分配降低与云函数执行相关联的时延,同时尽量避免有限的系统资源所带来的问题。换而言之,有限的系统资源(如存储器计算时间)决定了在任意指定时间内可以分配的容器数量的上限值。在有些情况下,分配的容器数量会超过可用资源总量,那么共享资源的管理开始降低该暖启动模式的效率,因为可能需要腾出非活动容器,以提供容器执行已经被调用的其它云函数。

在一实施例中,所述函数执行引擎410实现用于控制云函数执行的应用编程接口(api)460。所述api460包括请求将云函数实例化的呼叫。云函数的实例化包括分配容器托管该云函数,其中,该容器包括与其相关联的所有资源。从所述函数信息库630将函数镜像加载到所述容器。所述api460包括请求调用云函数的呼叫。所述云函数的调用指的是在所述容器中执行所述云函数。如果在接收请求将云函数实例化的呼叫之前接收到请求调用云函数的呼叫,则所述函数执行引擎410将自动为所述云函数分配容器,将函数镜像加载到所述容器,并在所述容器中立即执行所述云函数。但是如果云函数已经被实例化,则所述函数执行引擎410将仅在已经分配的容器中执行所述云函数。

在一实施例中,所述函数执行引擎api460还包括用于显式腾出(即释放,如从存储器中删除等)分配给特定云函数的容器的呼叫。例如,当状态机模型终止时,所述fgc424将所述fg实例426去激活,且应该腾出与所述fg实例426相关联的任意云函数,即使这些云函数从来不会被调用。因此,所述fgc424可包括用于显式释放分配给与所述fg实例426对应的云函数的资源的功能,以使其它fg实例426可以使用这些资源。fxe管理api470还可包括暖启动模式配置函数。例如,函数可设置最长维持时间,使得所述fgc424可以调整特定云函数保持实例化的持续时间。随着特定fgc424管理的fg实例426数量的增长,所述fgc424可缩短所述最长维持时间,以保证能够提供足够的资源用于执行实际已经调用的云函数。所述最长维持时间可由所述fgc424动态调整,以根据当前活动的fg实例426的实际数量使暖启动模式更高效。fxe管理api470中可包括其他函数,用于管理参数,以及,比如,在确定何时处理特定云函数的实例化请求时,将阈值与特定云函数的参数值进行比较。

图8示出根据一实施例的与每个云函数相关的执行参数的使用。所述函数执行引擎410中的参数评估器802在所述函数信息库630中管理与每个云函数的相关的参数。在一实施例中,所述函数执行引擎410对事件到达时间参数进行评估。来源于事件源400且由所述函数执行引擎410直接或间接从该事件源400接收的所有事件都通过所述参数评估器802传递,由所述参数评估器802确定何时实例化及释放函数容器(c1,c2,c3)。所述参数评估器802采用镜像大小、运行时环境语言类型及事件的到达间隔时间确定何时实例化及释放所述函数容器。所述参数评估器802确定是否实例化或释放每个容器及何时调用云函数。

图9为根据一实施例的一种云托管函数的暖启动技术的方法900的流程图。所述方法900可由硬件、软件或软硬件结合执行。在一实施例中,所述方法900至少部分由fgc424和/或云架构400的函数执行引擎410执行。例如,可以在以上提供的任意实施例和/或定义的场景中执行所述方法900。

步骤902中,激活(即调用,呼叫等)函数工作流,其中,所述函数工作流包括多个状态及所述状态之间的转换。在一实施例中,可以在云计算环境(即云架构400)中激活所述函数工作流。可选地,可以通过人工指令(比如通过命令行界面)或通过(比如,事件源输出的)触发事件激活所述函数工作流。仅仅作为示例,可以通过触发所述函数工作流中包括的所述多个状态中的第一状态激活所述函数工作流。

步骤904中,激活所述函数工作流之后,确定与所述函数工作流包括的所述多个状态中特定状态相关联的云托管函数。在一实施例中,所述特定状态可以是所述函数工作流包括的所述多个状态中的任意状态。结合本实施例,可以在所述函数工作流激活时直接确定与所述函数工作流包括的所述多个状态相关联的所有云托管函数,以实现其实例化。

在另一实施例中,可通过以下方式确定所述云托管函数:确认所述函数工作流中的当前状态;确定所述特定状态在所述函数工作流中与所述当前状态相距预定义转换次数;确认所述云托管函数与所述特定状态相关联。进一步可选地,所述预定义转换次数可以为1,因此,确定所述特定状态为所述函数工作流中所述当前状态能够转换到的下一状态。

在又一实施例中,可通过以下方式确定所述云托管函数:确认所述函数工作流中的当前状态;确定所述函数工作流中从所述当前状态开始的多个可能的转换路径;预测所述多个可能的转换路径中的特定转换路径将用于所述函数工作流的激活;确定所述特定状态包括在所述特定转换路径中;确认所述云托管函数与所述特定状态相关联。进一步可选地,根据在所述函数工作流的先前激活中收集的历史信息预测所述特定转换路径将用于所述函数工作流的激活。

在又一实施例中,可通过以下方式确定所述云托管函数:确认所述函数工作流中的当前状态;确定所述当前状态包括所述云托管函数的实例化命令。例如,所述当前状态可注释有所述云托管函数的实例化命令。在本实施例中,所述当前状态不同于与所述云托管函数相关联的所述特定状态。

步骤906中,在所述函数工作流中触发所述特定状态以执行所述云托管函数之前,将确定的云托管函数实例化(即指示、请求或命令创建所述云托管函数的可执行实例等)。在一实施例中,将确定的云托管函数实例化包括在云计算环境中创建所述云托管函数的实例。例如,将确定的云托管函数实例化可包括在云计算环境中创建所述云托管函数的容器,其中,所述容器为所述云托管函数的执行环境。进一步可选地,将确定的云托管函数实例化还可包括在所述容器中加载所述云托管函数的镜像。另外可选地,将确定的云托管函数实例化还可包括初始化所述云托管函数的运行时环境。

此外,虽未示出,应当说明的是将所述云托管函数实例化是为所述云托管函数的后续执行提供暖启动。因此,可以在所述函数工作流中触发所述特定状态时执行所述云托管函数。

图10为根据一实施例的一种云托管函数的暖启动技术的方法1000的流程图。所述方法1000可由硬件、软件或软硬件结合执行。在一实施例中,所述方法1000由云架构400的函数执行引擎410实现。例如,可以在以上提供的任意实施例和/或定义的场景中执行所述方法1000。

步骤1002中,确认用于在云计算环境中执行的云托管函数。该操作1002可以在所述云托管函数实例化或执行时发生。步骤1004中,基于为所述云托管函数计算的多个参数确定在所述云计算环境中保持所述云托管函数的实例化的维持(保留)时间。在一实施例中,在所述云计算环境中保持所述云托管函数的实例化的维持时间是通过预定义函数确定的,其中,所述预定义函数:接收为所述云托管函数计算的所述参数作为输入;处理所述参数以确定所述时长;输出确定的维持时间。所述参数可包括,例如,所述云托管函数的镜像大小,所述云托管函数所需的存储器分配,所述云托管函数的执行持续时间,触发所述云托管函数的事件序列的间隔等。进一步地,可以采用从所述云计算环境中触发所述云托管函数的先前事件到达中收集的历史信息计算所述参数。

步骤1006中,在所述云计算环境中将所述云托管函数实例化之后,在所述云计算环境中将所述云托管函数的实例化保持确定的维持时间。

如上文结合图9所述,同样的,在所述云计算环境中将所述云托管函数实例化可包括在云计算环境中为所述云托管函数创建一个容器,其中,所述容器为所述云托管函数的执行环境;在所述容器中加载所述云托管函数的镜像;初始化所述云托管函数的运行时环境。结合本实施例,在所述云计算环境中保持所述云托管函数的实例化包括保持所述容器、所述容器中所述云托管函数的所述镜像以及所述运行时环境。

作为上述方法1000的另一选项,可以确定在所述维持时间内未在所述云计算环境中执行所述云托管函数。此处,确定在所述维持时间内未在所述云计算环境中执行所述云托管函数后,可以从所述云计算环境中删除所述云托管函数的实例化。

为此,在一些可选的实施例中,上述系统、计算机实现方法和/或非瞬时性计算机可读介质的前述特征中的一个或多个可提供云托管函数的暖启动技术。通过,如图9所示,提前将所述云托管函数实例化(以便后续请求执行该云托管函数),和/或,通过,如图10所示,在为已经实例化的云托管函数动态确定的维持时间内保持该云托管函数(以便后续在该维持时间内请求执行该云托管函数),该暖启动技术可降低与所述云托管函数的执行时间相关联的时延。应当说明的是上述潜在优势仅用于说明而不应被理解为任何形式的限制。

图11示出一种可在其中实现上述不同实施例中的多种架构和/或功能的示例性系统1100。如图所示,所提供的系统1100包括与通信总线1102相连的至少一个处理器1101。可以使用任意合适的协议实现所述通信总线1102,如pci(外围部件互连标准)、快捷pci、agp(加速图像处理端口)、ht总线或任何其他总线或点对点通信协议。所述系统1100还包括存储器1104。控制逻辑(软件)及数据存储在所述存储器1104中,其中,所述存储器1104可以是随机存取存储器(ram)的形式。

所述系统1100还包括输入/输出(i/o)接口1112及通信接口1106。可通过输入设备1112,如键盘、鼠标、触控板、麦克风等接收用户输入。在一实施例中,所述通信接口1106可耦合到包括多个着色模块及光栅化模块等的图形处理器(未示出)。甚至可以将每个上述模块至置于单个半导体平台上形成图形处理单元(gpu)。

在本文中,单个半导体平台可指单独的基于单一半导体的集成电路或芯片。应当说明的是术语“单个半导体平台”还可以指连接性更好的多芯片模块,该多芯片模块模拟片上操作并通过使用传统的中央处理单元(cpu)及总线实施实现明显改善。当然,不同模块也可以根据用户需求单独设置或设置于半导体平台的不同组合中。

所述系统1100还包括辅助存储器1110。所述辅助存储器1110包括,例如,硬盘和/或可移动存储驱动器如软盘驱动器、磁带驱动器、光盘驱动器、数字多功能光盘(dvd)驱动器、记录设备、通用串行总线(usb)闪存。所述可移动存储驱动器以众所周知的方式读取或写入可移动存储单元。

计算机程序或计算机控制逻辑算法可以存储在所述存储器1104和/或所述辅助存储器1110中。当被执行时,此类计算机程序使得所述系统1100执行不同函数。所述存储器1104、存储器1110和/或任意其它存储器是计算机可读介质的可能示例。

在一实施例中,以上不同附图中的架构和/或功能可以在以下场景中实现:所述处理器1101、耦合到所述通信接口1106的图形处理器、至少同时具有所述处理器1101及图形处理器的部分能力的集成电路(未示出)、芯片组(即设计为以单元工作及出售、用于执行相关函数等的一组集成电路)和/或任意其它类似的集成电路。

此外,以上不同附图中的架构和/或功能可以在以下场景中实现:通用计算机系统、电路板系统、专供娱乐的游戏控制台系统、特定应用的系统和/或任意其它所需系统。例如,所述系统1100可以采用以下形式:台式电脑、手提电脑、服务器、工作站、游戏控制台、嵌入式系统和/或任意其它类型的逻辑。所述系统1100还可以采用多种其它设备形式,包括但不限于个人数字助理(pda)设备、手机设备、电视等。

进一步地,虽未示出,所述系统1100可以耦合到网络(比如电信网络、局域网(lan)、无线网络、广域网(wan)如因特网、对等网络、有线网络等)进行通信。

值得注意的是此处描述的技术在一方面中体现为存储在计算机可读介质中的可执行命令,所述指令由指令执行机器、装置或设备,如基于计算机或包括处理器的机器、装置或设备,使用或与其一起使用。熟知本领域的技术人员可以理解的是,在一些实施例中,包括其它类型的可以存储计算机可读数据的计算机可读介质,如磁带盒、闪存卡、数字视频光盘、伯努利磁带盒、随机存取存储器、只读存取器(rom)等。

此处所用的“计算机可读介质”包括一个或多个任意适合存储计算机程序的可执行指令的介质,使得指令执行机器、系统、装置或设备可以从所述计算机可读介质中读取(或访存)所述指令,并执行所述指令实现所描述的方法。合适的存储格式包括电子、磁性、光学及电磁格式。示例性传统计算机可读介质的不完全列表包括:便携式计算机软磁盘;ram;rom;可擦除可编程只读存储器(eprom或闪存);光存储设备,包括便携式光碟(cd)、便携式数字视频光碟(dvd)、高清dvd(hd-dvdtm)、蓝光;等等。

可以理解的是,所描述的附图中示出的器件布置是为示例且可能有其它布置。还应理解的是权利要求中定义的、下文中描述的以及不同框图中示出的各种系统器件(及手段)代表根据本申请公开的主题配置的某些系统中的逻辑器件。

例如,可以通过所描述的附图中示出的布置中的至少一些器件全部或部分地实现一个或多个所述系统器件(及手段)。此外,至少一个所述器件至少部分被实现为电子硬件器件并构成机器,其它器件可以在软件中实现,当该软件包括在执行环境中时,构成机器、硬件或软硬件的组合。

更具体地,所述权利要求定义的至少一个器件至少部分被实现为电子硬件器件,比如,指令执行机器(如基于处理器或包括处理器的机器)和/或专用电路或电路系统(如用于执行专用函数的相互连接的分立逻辑门)。其它器件可以在软件、硬件或软硬件的组合中实现。并且,这些其它器件中的部分或全部可以相互结合,有些可以忽略,可以增加其它器件,同样可以实现本申请中所描述的功能。因此,本申请中描述的主题可以体现为许多不同的变型,所有此类变型都包括在所要求的范围之内。

在上文的描述中,除非另有说明,结合动作以及一个或多个设备执行的操作的符号表示对所述主题进行描述。因此,可以理解的是,有时由计算机执行的此类动作及操作包括处理器对结构化形式的数据的处理。该处理对数据进行变换或将其保持在所述计算机的存储器系统的位置上,其以本领域技术人员所熟知的方式重新配置或者改变该设备的操作。但是,上文中对主题的描述并不构成限制,本领域技术人员可以理解以下所描述的各种动作及操作也可以在硬件中实现。

为便于理解本申请中所描述的主题,诸多方面以动作顺序的方式描述。权利要求所定义的各方面中的至少一个方面是由电子硬件器件执行的。例如,可以认识到上述各种动作可以由专用电路或电路系统、一个或多个处理器执行的程序指令或两者的组合执行。此处描述的任何动作序列并不意味着必须按所描述的特定顺序执行该序列。除非本申请中另有指示或根据上下文明显会有冲突,此申请中所描述的所有方法可以按任意合适的顺序执行。

除非本申请中另有指示或根据上下文明显会有冲突,描述主题的上下文中所使用的术语“一”、“一个”、“所述”及类似的指称对象应理解为涵盖单数及复数。除非本申请中另有指示,关于值的范围的详述仅作为单独指示该范围中各个独立值的一种快捷方法,各个独立值合并在本文中,如同在本申请中已对其进行单独详述。此外,以上描述仅用于阐述而非限制,因为所要求的保护范围由下文中所列权利要求及其等效方案界定。除非另有要求,本申请中所用的任意及所有示例或示例性语言(如“例如”)仅用于更好地阐述所述主题而不对所述主题的范围构成限制。权利要求及说明书中所使用的、用于指示带来结果的条件的术语“基于”及其他它似表达并不排除其它可以带来该结果的条件。本文中的任意表达不应被理解为将未要求的元素指示为对实践所要求的实施例所必不可少的。

本申请中所描述的实施例包括发明人熟知的用于实现所要求的主题的一个或多个模式。可以理解的是,在理解以上描述之后,这些实施例的变型对于本领域技术人员来说是显而易见的。发明人期待熟练技术人员合理利用此类变型,且发明人意在以本申请中具体描述之外的方式实践所要求的主题。相应的,所要求的主题包括适用法律所允许的、此处所附权利要求中详述的主题的所有修改及等效方案。此外,除非本申请中另有指示或根据上下文明显会有冲突,所要求的主题涵盖其所有可能变型中上述元素的任何组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1