基于服务图的无服务器云管理平台转让专利

申请号 : CN201880017081.2

文献号 : CN110383795B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张红法尔哈德·P·桑娜瓦拉亨利·路易斯·福里

申请人 : 华为技术有限公司

摘要 :

一种基于服务图的无服务器云架构、方法和非易失性计算机可读介质。所述服务图能够将云托管功能编排到所协调的微服务应用中,并由此以规定方式控制所述云托管功能的执行。另外,服务图准许用户将云托管功能安排成依序或同时执行,通过重新激活功能调用来管理误差条件,以及处理动态伸缩以适应变化的事件负载等等。服务图还允许用户定义在执行云托管功能和在所述服务图中前进之前等待预定义事件的集合点(即,状态)。利用服务图协调云托管功能的执行的优点在于:所述服务图提供了一个一致的框架用于管理云托管功能,用户不必亲自解决协调问题。

权利要求 :

1.一种无服务器云架构,其特征在于,包括:

服务图(service graph,SG)管理器,其用于:接收定义状态机模型的状态机模型规范,

生成用于管理实施所述状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC),生成与一个或多个事件源相关联的数个事件映射代理,其中每一个事件映射代理用于跟踪在所述事件源处生成的事件并向所述一个或多个SGC传输所述事件的通知;

管理事件,所述事件用于触发所述状态机模型的状态中的动作;以及功能执行引擎,其用于响应于由所述SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。

2.根据权利要求1所述的无服务器云架构,其特征在于,所述状态机模型的表示基于服务图语言,其中所述状态机模型包括在阶层式结构中定义的状态、动作和事件。

3.根据权利要求2所述的无服务器云架构,其特征在于,所述动作包括激活由所述功能执行引擎执行的云托管功能的功能调用。

4.根据权利要求2所述的无服务器云架构,其特征在于,所述事件包括文件事件、表格事件和协议事件中的至少一个。

5.根据权利要求2所述的无服务器云架构,其特征在于,所述服务图语言包括所述状态机模型的javascript对象表示法(javascript object notation,JSON)表示。

6.根据权利要求1所述的无服务器云架构,其特征在于,所述服务图管理器用于生成对应于特定服务图的服务图引擎,所述服务图引擎包括:所述一个或多个SGC;

与所述一个或多个SGC通信的服务图调度器;以及

与所述一个或多个SGC中的每一SGC相关联的一个或多个SMI。

7.根据权利要求6所述的无服务器云架构,其特征在于,所述一个或多个SGC中的每一SGC在多个节点中的不同节点上托管,每一节点代管一个SGC和与所述SGC相关联的一个或多个SMI。

8.根据权利要求6所述的无服务器云架构,其特征在于,所述SG管理器用于通过调整所述一个或多个SGC的数目来执行负载均衡。

9.一种用于在无服务器云架构中执行云托管功能的方法,其特征在于,所述方法包括:在服务图管理器处接收定义状态机模型的状态机模型规范;

生成用于管理实施所述状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC);

生成与一个或多个事件源相关联的数个事件映射代理,其中每一事件映射代理用于跟踪在所述事件源处生成的事件并向所述一个或多个SGC传输所述事件的通知;

管理事件,所述事件用于触发所述状态机模型的状态中的动作;以及响应于由所述SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。

10.根据权利要求9所述的方法,其特征在于,所述状态机模型的表示基于服务图语言,其中所述状态机模型包括在阶层式结构中定义的状态、动作和事件。

11.根据权利要求10所述的方法,其特征在于,所述动作包括激活由功能执行引擎执行的云托管功能的功能调用。

12.根据权利要求10所述的方法,其特征在于,所述事件包括文件事件、数据库表格事件和协议事件中的至少一个。

13.根据权利要求10所述的方法,其特征在于,所述服务图语言包括所述状态机模型的javascript对象表示法(javascript object notation,JSON)表示。

14.根据权利要求9所述的方法,其特征在于,所述服务图管理器用于生成对应于特定服务图的服务图引擎,所述服务图引擎包括:所述一个或多个SGC;

与所述一个或多个SGC通信的服务图调度器;以及

与所述一个或多个SGC中的每一SGC相关联的一个或多个SMI。

15.根据权利要求14所述的方法,其特征在于,所述一个或多个SGC中的每一SGC在多个节点中的不同节点上托管,每一节点代管一个SGC和与所述SGC相关联的一个或多个SMI。

16.根据权利要求14所述的方法,其特征在于,所述SG管理器用于通过调整所述一个或多个SGC的数目来执行负载均衡。

17.一种存储用于在无服务器云架构中执行云托管功能的计算机指令的非暂时性计算机可读介质,其特征在于,所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下步骤:在服务图管理器处接收定义状态机模型的状态机模型规范;

生成用于管理实施所述状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC);

生成与一个或多个事件源相关联的数个事件映射代理,其中每一事件映射代理用于跟踪在事件源生成的事件并向所述一个或多个SGC传输所述事件的通知;

管理事件,所述事件用于触发所述状态机模型的状态中的动作;以及响应于由所述SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。

18.根据权利要求17所述的非暂时性计算机可读介质,其特征在于,所述状态机模型的表示基于服务图语言,其中所述状态机模型包括在阶层式结构中定义的状态、动作和事件。

19.根据权利要求17所述的非暂时性计算机可读介质,其特征在于,所述服务图管理器用于生成对应于特定服务图的服务图引擎,所述服务图引擎包括:所述一个或多个SGC;

与所述一个或多个SGC通信的服务图调度器;以及

与所述一个或多个SGC中的每一SGC相关联的一个或多个SMI。

20.根据权利要求19所述的非暂时性计算机可读介质,其特征在于,所述一个或多个SGC中的每一SGC在多个节点中的不同节点上托管,每一节点代管一个SGC和与所述SGC相关联的一个或多个SMI。

说明书 :

基于服务图的无服务器云管理平台

[0001] 相关申请
[0002] 本申请要求2018年3月16日提交且标题为“基于服务图的无服务器云管理平台(SERVICE GRAPH BASED SERVERLESS CLOUD PLATFORM)”的第15/923,989号美国非临时专利申请的优先权,该申请要求2017年3月20日提交的第62/473,973号美国临时专利申请的优先权,这些申请以引用的方式并入本文中,如同以其全文再现一般。

技术领域

[0003] 本申请涉及一种无服务器云架构,且更具体地说,涉及基于无服务器云架构内的服务图的功能执行。

背景技术

[0004] “云”是一种抽象概念,它与通过网络的资源管理有关,且更确切地说,与提供用于通过网络提供服务的平台的数据中心架构有关。例如,云可以指通过因特网提供的各种服务,例如基于网络的存储服务或计算服务。典型的云架构部署包括分层式层次结构,该结构包括网络硬件的物理层以及使得用户能够接入网络硬件的一个或多个软件层。例如,云架构部署的一种常用类型包括网络资源(例如,服务器、存储设备阵列、网络交换机等)物理层伴有多层阶层式软件框架,所述软件框架包括实施基础设施即服务(Infrastructure as a Service,IaaS)的第一层、实施平台即服务(Platform as a Service,PaaS)的第二层和实施软件即服务(Software as a Service,SaaS)的第三层。一般来说,尽管可能有例外,但是第三层中的资源取决于第二层中的资源,第二层中的资源取决于第一层中的资源,且第一层中的资源取决于物理层中的资源。
[0005] 近年来,开发了一种无服务器云架构,使得用户能够在云中执行功能,而不用在上文所描述的传统的阶层式结构中提供资源。例如,亚马逊业务平台(Amazon Web Services,AWS)已经开发了一种被称为 AWS Lambda的服务,使得用户能够在不用像在传统的计算服务中那样提供或管理用于运行代码的服务器的情况下运行代码。因此,可以建立一种调用上传到AWS Lambda服务的功能的web应用程序,其中用于执行功能的计算资源是由亚马逊而不是web应用程序管理和提供。
[0006] 然而,这种类型的无服务器架构存在问题。这种架构可用于执行可以从许多不同客户端调用数次的特定功能,并且用于处理这些功能调用的资源是自动提供的,使得能够动态伸缩以适应动态业务。但是,这种架构并不适合连续调用多个功能。亚马逊最近开发出另一种称作AWS步骤功能(AWS Step Functions)的服务,它可以与AWS Lambda一起使用来协调多个功能的执行。实际上,AWS步骤功能使用户能够定义协调多个功能的次序和执行的工作流。功能的执行可以延迟到另一功能完成,甚至延迟一设定的时间段。然而,AWS步骤功能所支持的功能执行无法被复杂事件触发,因此功能的限制与可以使用此服务构建的应用程序或程序的复杂性相关。需要开发一种更为多样的平台,用于在类似于AWS Lambda的无服务器架构中执行功能。

发明内容

[0007] 提供一种无服务器云架构。所述无服务器云架构包括服务图(service graph,SG)管理器,所述服务图管理器用于接收定义状态机模型的状态机模型规范、生成用于管理实施状态机模型的一个或多个状态机实例(state machine instance,SMI)的服务图控制器(service graph controller,SGC),以及生成与一个或多个事件源相关联的数个事件映射代理。每一事件映射代理用于跟踪在事件源处生成的事件,并向一个或多个SGC传输事件通知。无服务器云架构另外包括功能执行引擎,所述功能执行引擎用于响应于由SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。
[0008] 还提供一种用于在无服务器云架构中执行云托管功能的方法。所述方法包括在服务图管理器处接收定义状态机模型的状态机模型规范。另外,所述方法包括生成用于管理实施状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC)。此外,所述方法包括生成与一个或多个事件源相关联的数个事件映射代理,其中每一事件映射代理用于跟踪在事件源处生成的事件并向一个或多个SGC传输事件通知。再者,所述方法包括响应于由SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。
[0009] 此外,提供一种存储用于在无服务器云架构中执行云托管功能的计算机指令的非暂时性计算机可读介质,所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行步骤。所述步骤包括在服务图管理器处接收定义状态机模型的状态机模型规范。另外,所述步骤包括生成用于管理实施状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC)。此外,所述步骤包括生成与一个或多个事件源相关联的数个事件映射代理,其中每一事件映射代理用于跟踪在事件源处生成的事件并向一个或多个SGC传输事件通知。再者,所述步骤包括响应于由SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。
[0010] 任选地,在任一前述实施例中,状态机模型的表示基于服务图语言,其中状态机模型包括在阶层式结构中定义的状态、动作和事件。作为另一选择方案,动作包括激活由功能执行引擎执行的云托管功能的功能调用。作为又一选择方案,事件包括文件事件、表格事件和协议事件中的至少一个。作为另一种可选方案,服务图语言包括状态机模型的javascript对象表示法(javascript object notation,JSON)表示。
[0011] 任选地,在任一前述实施例中,服务图管理器用于生成对应于特定服务图的服务图引擎,所述服务图引擎包括:所述一个或多个SGC;与所述一个或多个SGC通信的服务图调度器;以及与所述一个或多个SGC中的每一SGC相关联的一个或多个SMI。作为另一可选方案,所述一个或多个SGC中的每一SGC在多个节点中的不同节点上托管,每一节点代管一个SGC和与所述SGC相关联的一个或多个SMI。作为又一可选方案,SG管理器用于通过调整所述一个或多个SGC的数目来执行负载均衡。
[0012] 为此目的,在一些任选实施例中,前述架构、方法和/或非暂时性计算机可读介质的上述特征中的一个或多个可以提供一种基于服务图的无服务器云架构。服务图可将云托管功能编排到所协调的微服务应用程序中,并由此以规定方式控制云托管功能的执行。另外,服务图准许用户将云托管功能安排成依序或同时执行,通过重新激活功能调用来管理误差条件,以及处理动态伸缩以适应变化的事件负载等等。服务图还允许用户定义在执行云托管功能和在服务图中前进之前等待预定义事件的集合点(即,状态)。利用服务图协调云托管功能的执行的优点在于,服务图提供了一个一致的框架用于管理云托管功能,用户不必亲自解决协调问题。应注意,前述潜在优点是出于说明性目的而阐述,不应理解为任何方式的限制。

附图说明

[0013] 图1A和1B说明根据现有技术的用于实施云的基础设施;
[0014] 图2是根据现有技术的云架构的概念性图示;
[0015] 图3是根据现有技术的无服务器云架构的概念性图示;
[0016] 图4A是根据一个实施例的无服务器云架构的概念性图示;
[0017] 图4B是根据另一实施例的无服务器云架构的概念性图示;
[0018] 图5是根据一个实施例的状态机模型的概念图;
[0019] 图6说明根据一个实施例的图4A的无服务器云架构的额外组件;
[0020] 图7说明根据一个实施例的由状态机实例实施的状态机模型的操作;
[0021] 图8是根据一个实施例的用于在无服务器云架构中执行云托管功能的方法的流程图;
[0022] 图9说明其中可以实施各种先前实施例的各种架构和/或功能性的示例性系统。

具体实施方式

[0023] 服务图将云托管功能编排到所协调的微服务应用程序中。服务图表示由来自各种源的事件驱动的状态机模型,所述源以规定方式控制云托管功能的执行。服务图准许用户将云托管功能安排成依序或同时执行,通过重新激活功能调用来管理误差条件,以及处理动态伸缩以适应变化的事件负载等等。服务图允许对多个状态机实例进行实例化和调度,所述多个状态机实例将状态机模型实施为由服务图定义。
[0024] 服务图还允许用户定义在执行云托管功能和在服务图中前进之前等待预定义事件的集合点(即,状态)。利用服务图协调云托管功能的执行的优点在于,服务图提供了一个一致的框架用于管理云托管功能,用户不必亲自解决协调问题。
[0025] 图1A和1B说明根据现有技术的用于实施云100的基础设施。如本文中所使用,云100是指定位在一个或多个数据中心(即,物理位置)中的一组硬件资源(计算、存储和联网)和用于通过例如因特网等网络实施一组服务的软件框架。如图1A中所示,云100包括多个数据中心110,所述多个数据中心110中的每一数据中心110包括一个或多个资源池120。资源池120包括存储层122、计算层124和网络层126。
[0026] 如图1B中所示,存储层122包括用于在云100中存储指令和/或数据的物理资源。存储层122包括多个存储区域网络(storage area network,SAN)152,每一SAN 152提供对一个或多个块级存储设备的存取。在一个实施例中,SAN 152包括可通过网络存取的一个或多个非易失性存储设备。非易失性存储设备的示例包括但不限于硬盘驱动器(hard disk drive,HDD)、固态驱动器(solid state drive,SSD)、例如EEPROM或压缩闪存(Compact Flash,CF)卡的快闪存储器等等。在另一实施例中,SAN  152是独立磁盘冗余阵列(Redundant Array of Independent Disk,RAID)存储阵列,它将多个物理磁盘驱动器组件(例如,数个类似HDD)组合到单个逻辑存储单元中。在又一实施例中,SAN 152是一种虚拟存储资源,它向物理存储资源提供抽象度,使得虚拟块地址可以用于存储在一个或多个物理非易失性存储设备上的存储器的一个或多个对应块中的参考数据。在此类实施例中,存储层122可包括在一个或多个处理器上执行的软件框架,用于实施虚拟存储资源。
[0027] 计算层124包括用于在云100中执行程序(即,指令集)的物理资源。计算层124可包括多个计算标度单元(compute scale unit,CSU)154,每一CSU 154包括至少一个处理器和用于利用所述至少一个处理器的软件框架。在一个实施例中,CSU 154包括提供用于执行指令集的物理硬件的一个或多个服务器(例如,刀片式服务器)。每一服务器可包括一个或多个处理器(例如,CPU、GPU、ASIC、FPGA、DSP等)以及用于存储将由所述一个或多个处理器处理的指令和/或数据的易失性存储器。CSU 154还可包括载入到易失性存储器中且由所述一个或多个处理器执行的操作系统,所述操作系统为在服务器的硬件资源上执行的各种程序提供运行环境。在另一实施例中,CSU 154是提供一系列模拟服务器的硬件资源的虚拟资源的虚拟机。计算层124可包括使数个虚拟机能够大体上同时地在单个服务器上执行的虚拟机监视器或虚拟机监控器。
[0028] 联网层126包括用于实施网络的物理资源。在一个实施例中,联网层126包括使数据能够在云100中的不同资源之间传送的数个交换机和/或路由器。例如,计算层124中的每一服务器可包括耦合到网络接口(例如,以太网)的网络接口控制器(network interface controller,NIC)。接口可以耦合到网络交换机,使得数据能够从服务器发送到与网络交换机连接的另一服务器。联网层126可实施OSI模型的数个层,包括数据链路层(即,层2)、联网层(即,层3)和传输层(即,层4)。在一个实施例中,联网层126实施使虚拟网络能够在物理网络内建立的虚拟化层。在此类实施例中,网络层126中的每一网络单元(network unit,NU)156是虚拟专用网络(VPN)。
[0029] 应了解,所述多个数据中心中的每一数据中心110可包括不同硬件资源集,并且因此可包括不同数目个资源池120。此外,一些资源池120可能不包括存储层122、计算层124和/或网络层126中的一个或多个。例如,一个资源池120可仅包括计算层124内的一组服务器。另一资源池120可同时包括计算层124和网络层126,但是不包括存储层122。
[0030] 图2是根据现有技术的云架构200的概念性图示。如图2中所示,云架构200表示为多个阶层式的层。云架构200包括物理层202、基础设施即服务(Infrastructure as a Service,IaaS)层204、平台即服务(Platform as a Service,PaaS)层206和软件即服务(Software as a Service,SaaS)层208。物理层202是一系列实施云的硬件资源。在一个实施例中,如图1A和1B中所示的那样实施物理层202。
[0031] IaaS层204是使物理层202的资源能够分配给不同基础设施服务的软件框架。IaaS层204可包括用于管理和分配物理层202中的资源的软件框架。例如,IaaS层204可包括用于管理物理层202的存储层122中的SAN 152的软件引擎。软件引擎还可管理物理层202的计算层124中的CSU 154。PaaS层206或SaaS层208中的服务可请求分配IaaS层204中的服务来进行任务。例如,PaaS层206中的集群服务可请求从IaaS层204分配数个虚拟机,所述IaaS层204在一个或多个CSU 154上实施虚拟机。
[0032] 应了解,图2中示出的云架构200只是在常规云中实施的一种架构框架的类型。然而,其它云架构可实施不同框架。例如,云架构可包括中间不具有任何PaaS层206的IaaS层204和SaaS层208。在另一示例中,云架构可包括容器即服务(Container as a Service,CaaS)层(即,一种新的不利用IaaS和PaaS的资源虚拟化方式)加上CaaS层顶部上的SaaS层。
在每一种情况下,这些云架构采用一种请求运行服务的资源的资源依赖性方案。
[0033] 图3是根据现有技术的无服务器云架构300的概念性图示。如图3中所示,无服务器云架构300不具有与如图2所示的传统云架构相同的阶层式结构。物理层302是一系列实施云的硬件资源。在一个实施例中,如图1A和1B中所示的那样实施物理层302。
[0034] 无服务器云架构300包括使用物理层302的硬件资源管理功能执行的无服务器引擎310。在一个实施例中,无服务器引擎310包括管理在物理层302中的资源上执行的一个或多个虚拟机的虚拟机监视器。无服务器引擎310在每一虚拟机上运行软件,所述虚拟机包括用于执行各种功能的一个或多个容器。无服务器引擎310用于基于从API网关320接收的功能调用来执行功能。
[0035] 应用程序330可通过进行功能调用来调用一种功能。在一个实施例中,通过对与API网关320相关联的端点进行RESTful API调用来实施功能调用。如本领域中已知,标准超文本传输协议(Hypertext Transfer Protocol,HTTP)方法可与通用资源定位器(Uniform Resource Locator,URL)一起使用来指定通过URL标识的功能。API网关320可从应用程序330接收功能调用,所述应用程序330触发无服务器引擎310对对应功能的执行。
[0036] 应了解,术语无服务器并不是指云架构300不包括服务器的事实,确切地说,术语无服务器是指功能调用器不需要提供用于执行功能的服务器资源的事实,因为所述提供是由无服务器引擎310处理的。此外,应了解,无服务器引擎310可以基于常规的云架构构建,使得虚拟机的提供可以例如利用IaaS层204或PaaS层206中的常规服务。
[0037] 图4A是根据一个实施例的无服务器云架构400的概念性图示。如图4A中所示,无服务器云架构400不具有与如图2所示的传统云架构相同的阶层式结构。物理层402是一系列实施云的硬件资源。在一个实施例中,如图1A和1B中所示的那样实施物理层402。
[0038] 无服务器云架构400用于基于响应于事件而转变的状态机模型来启用多个云托管功能的执行。状态机模型的表示可基于服务图语言。例如,状态机模型可以使用服务图来定义,所述服务图是包括用服务图语言编写的状态机模型的表示的文件。状态机模型包括在阶层式结构中定义的状态、动作和事件。动作可包括功能调用、有效负载处理、在一延迟时段内保持、转变到下一状态或终止状态机。在一个实施例中,服务图语言是状态机模型的JSON表示。在另一实施例中,服务图语言是具有用于定义状态机模型的语法的专用语言。
[0039] 无服务器云架构400包括功能执行引擎410、服务图引擎420、服务图(service graph,SG)管理器430和一个或多个事件源440。功能执行引擎410管理物理层402中的资源的提供以执行云托管功能。例如,功能执行引擎410从服务图引擎420接收功能调用,提供用于处理功能的执行的容器,将有效负载数据传递到云中与容器相关联的节点,执行功能,并将结果有效负载数据导向目的地位置。函数可以用各种语言(例如,Java、Python、C++等)编写,它们可以编译成二进制可执行的或在运行时间编译,并且在使所述功能和分配给所述功能的资源与其它功能隔离的容器中执行。
[0040] 服务图引擎420包括服务图控制器(service graph controller,SGC)调度器422、一个或多个服务图控制器(service graph controller,SGC)424和与每一SGC 424相关联的一个或多个状态机实例(state machine instance,SMI)426。每一SGC 424用于管理一个或多个状态机实例(state machine instance,SMI)426,所述状态机实例426实施用于服务图的特定调用的状态机模型。由用户定义的服务图可以由包括在web应用程序中的调用来激活。例如,web应用程序可包括与对应于服务图的URI相关联的HTTP请求。响应于HTTP请求,将创建新SMI 426来实施由web应用程序的服务图定义的状态机模型。
[0041] SGC调度器422用于提供所需数目个SGC 424来处理与特定服务图相关联的动态业务(即,与web应用程序相关联的一系列功能)。举例来说,用户创建包括对服务图的调用的web应用程序。用户将服务图定义上传到云,云进行解析来创建状态机模型规范。服务图引擎420用于在客户端机器上载入并执行web应用程序时提供和管理数个SMI 426,从而在所述客户端机器上运行包括对服务图的调用的代码。每一SGC 424和数个SMI 426可以托管在云中的不同节点(即,服务器)上。SGC调度器422可响应于由web应用程序生成的业务来管理SGC 424在各种节点上的实例化,根据需要扩大和减少SGC 424的数目。在一个实施例中,特定服务图的SGC调度器422具备使web应用程序能够对SGC调度器422进行调用以执行服务图微服务的特定URI。SGC调度器422创建新SMI 426,从而通过向一个SGC 424传输消息来处理所述调用。SGC调度器422还可通过SGC 424将从web应用程序接收的有效负载传递到SMI 426,使得SMI 426可以根据服务图来处理有效负载。一旦服务图完成了有效负载的处理,SMI 426就将结果有效负载传输到SGC调度器422以传回进行调用的web应用程序,并且SMI 
426可以被删除。
[0042] SG管理器430激活云中各种节点上的一个或多个服务图引擎420。每一服务图引擎420可与多个不同用户针对多个不同web应用程序创建的不同服务图相关联。此外,SG管理器430可针对单个服务图激活多个服务图引擎420,以便扩大极大web应用程序的无服务器云架构。SG管理器430是一种执行负载均衡并针对每一服务图扩大和减少SGC 424的数目的集中式逻辑模块。SG管理器430通过实施状态机模型规范的API 450接收服务图。用特定服务图语言编写的服务图可由解析器读取并根据API 450被转换成状态机模型规范,以便通过SMI 426实施状态机模型。
[0043] SG管理器430还用于管理事件。云可包括数个事件源440。事件源440是指云中与事件相关联的任何组件。事件源440的示例包括但不限于网络存储设备、数据库、API网关等等。事件的示例包括但不限于文件事件(例如,在云存储设备上存储图像)、表格事件(例如,向数据库添加条目)或协议事件(例如,在API网关处接收HTTP请求)。事件可用于触发状态机模型的状态中的动作。换句话说,动作可能并不在进入特定状态时立即执行,实际上,动作仅响应于在进入状态之后发生一个或多个事件而执行。
[0044] 在一个实施例中,为了监测事件,SG管理器430在服务图引用的每一事件源440中创建事件映射代理442。事件映射代理442是用于检索事件到SGC的映射表并在事件源440和一个或多个SGC 424之间建立通信信道的软件模块。在一个实施例中,SG管理器430生成基于对应于服务图的状态机模型规范使事件与SGC 424相关的映射表。特定状态机模型规范用于实例化(即,配置)包括数个SGC 424的特定服务图引擎420。每一SGC 424可以使用特定通用资源标识符(uniform resource identifier,URI)来引用,所述特定通用资源标识符使无服务器云架构400的其它组件能够直接与SGC 424通信。接着,每一事件映射代理442可使用对应于SGC 424的URI建立与一个或多个SGC 424的TCP/IP连接。接着,事件映射代理442可供SG管理器430用于在对应事件源440中检测一个或多个事件。在检测到事件之后,事件映射代理442接着直接将消息传输到与所述事件对应的一个或多个SGC 424。
[0045] 在替代实施例中,事件映射代理442可以是轮询多个不同事件源440以检测事件的集中式组件。集中式事件映射代理442可接着将与事件有关的消息传输到一个或多个SGC 424。
[0046] 每一SMI 426用于实施状态机模型的实例。SMI 426被激活并转变为初始状态。接着SMI426运行,在由状态机模型定义的状态之间转变时处理有效负载数据。每一状态中的动作可以响应于一个或多个事件而被触发。动作可包括激活由功能执行引擎410执行的云托管功能的功能调用。动作还可在从云托管功能接收到结果时触发。再次,由SMI 426实施的状态机模型用于协调微服务应用程序中云托管功能的执行。
[0047] 图4B是根据另一实施例的无服务器云架构460的概念性图示。作为可选方案,无服务器云架构460可以用任何先前和/或后续图和/或其描述中所阐述的任何一个或多个实施例的一个或多个特征实施。例如,无服务器云架构460可以在图4A的无服务器云架构400的上下文中实施。然而,应了解,无服务器云架构460可以在其它合适的环境中实施。
[0048] 如图所示,提供呈接收器模块462形式的接收器构件,用于接收定义状态机模型的状态机模型规范。在各种实施例中,接收器模块462可以是但不限于图4A的服务图管理器430、至少一个处理器(将随后描述)和控制处理器的任何软件和/或能够执行前述功能性的任何其它电路系统的组件。
[0049] 还包括呈控制器生成模块464形式的控制器生成构件,其与接收器模块462通信以生成用于管理实施状态机模型的状态机实例(state machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC)。在各种实施例中,控制器生成模块464可以是但不限于图4A的服务图管理器430、至少一个处理器(将随后描述)和控制处理器的任何软件和/或能够执行前述功能性的任何其它电路系统的组件。
[0050] 继续参考图4B,呈代理生成模块466形式的代理生成构件与控制器生成模块464通信,用于生成与一个或多个事件源相关联的数个事件映射代理,其中每一事件映射代理用于跟踪在事件源处生成的事件并向一个或多个SGC传输事件通知。在各种实施例中,代理生成模块466可以是但不限于图4A的服务图管理器430、至少一个处理器(将随后描述)和控制处理器的任何软件和/或能够执行前述功能性的任何其它电路系统的组件。
[0051] 另外包括呈功能执行模块468形式的功能执行构件,其与代理生成模块466通信,用于响应于由SMI生成的功能调用而在一个或多个节点上执行多个云托管功能。在各种实施例中,功能执行模块468可以是但不限于图4A的功能执行引擎410、至少一个处理器(将随后描述)和控制处理器的任何软件和/或能够执行前述功能性的任何其它电路系统的组件。
[0052] 图5是根据一个实施例的状态机模型500的概念图。应了解,图5的状态机模型500仅作为示例提供,且由各个用户定义的状态机模型可包括不同状态拓扑并在状态之间转变。如图5所示,状态机模型500包括五种状态:第一状态510、第二状态520、第三状态530、第四状态540和第五状态550。激活状态机模型500的实例的调用由SG管理器430接收。SG管理器430可根据需要基于与状态机模型500中的状态相关联的任何事件,在一个或多个事件源440中创建事件映射代理。在一个实施例中,调用可以响应于客户端机器载入并运行客户端侧代码来实现,所述客户端侧代码例如是javascript并生成对与状态机模型500相关联的URL的HTTP请求。SG管理器430还用于向SGC调度器422传输消息,以创建对应于所述调用的SMI 426的新实例。SGC调度器422可引导一个现有SGC 424或创建新SGC 424来对SMI 426的新实例进行实例化。一旦对应于所述调用的SMI 426处于运行中,状态机就进入第一状态
510。
[0053] 每一状态可与一个或多个动作相关联。动作可包括调用基于云的功能、处理有效负载、在一时间段内延迟动作、转变到下一状态或终止状态机。动作的激活可以发生在进入状态时、在发生过一个或多个事件后、在延迟之后、在来自功能调用的结果被接收到时、在误差(例如,功能调用超时)之后或在退出状态时。在许多状态中,仅在一个或多个事件发生之后激活动作。动作可以进行门控(即,无法被执行),直到发生多个事件(即,用“和”逻辑组合)为止或直到发生两个或更多个事件中的任一个(即,用“或”逻辑组合)为止。同样,在SGC424处从一个或多个事件映射代理442接收事件发生的通知。
[0054] 如图5所示,在创建SMI 426时,状态机模型500进入初始状态,例如第一状态510。第一状态510可定义在进入第一状态510后或在一个或多个事件发生过之后执行的动作。第一状态510还可指定转变到另一状态的条件。在一个实施例中,状态机模型可在结果从在所述状态内激活的动作所指定的功能返回时转变到另一状态。在另一实施例中,状态机模型可基于一个或多个事件的发生而转变到另一状态。
[0055] 状态机模型500示出从第一状态510到第二状态520的一个转变。然而,单状态可同样包括到不同状态的两个或更多个转变的逻辑。例如,响应于第一事件的发生,可以定义从第二状态520到第三状态530的第一转变,响应于第二事件的发生,可以定义从第二状态520到第四状态540的第二转变。换句话说,如果当前状态是第二状态520,那么状态机模型的下一状态将取决于特定事件的发生。如图5所示,第三状态530包括到第四状态540的第一转变和到第五状态550的第二转变;第四状态540包括到第五状态550的转变;且第五状态550包括到终止状态机模型500的转变。
[0056] 应了解,SMI 426用于实施状态机模型的逻辑、响应于事件的功能调用、状态之间的转变、对从客户端、一个或多个事件、动作结果接收的有效负载的处理等等。在一个实施例中,SMI 426是使用状态机模型规范作为输入来激活以将SMI 426配置成实施由状态机模型规范定义的状态机模型的对象,所述状态机模型规范定义状态机模型的状态以及与每一状态相关联的事件和动作及状态之间的转变。
[0057] 图6说明根据一个实施例的图4A的无服务器云架构400的额外组件。如上文所论述,服务图引擎420基于由状态机模型的服务图表示所表示的状态机模型来配置。在一个实施例中,无服务器云架构400包括认证模块610、解析器模块620和验证模块630。用户可使用服务图语言创建表示状态机模型的服务图602。在一个实施例中,服务图语言是服务图的JSON表示。在另一实施例中,服务图语言是在服务图语言规范中定义的专用语言。
[0058] 用户可向云服务提交使用户能够创建状态机模型以在无服务器云架构400中执行基于云的功能的服务图602。在一个实施例中,用户将服务图602存储为文件,并在传输到云服务的请求中提交所述文件。含有服务图602的文件可由认证模块610处理。认证模块610用于仅允许授权用户创建新服务图602或修改现有服务图602。认证模块610可利用用户名和口令来认证特定用户,并确保所提交的服务图对应于特定授权用户。一旦服务图602被认证,服务图602就被传递到解析器模块620。
[0059] 解析器模块620用于解析可以ASCII文本格式等接收的文件,以确定由服务图602表示的状态机模型。在一个实施例中,解析器模块620解析服务图语法,以确定由服务图602表示的状态机模型的结构。当从文件读取到每一对象(即,状态、动作、事件和/或结果)时,所述对象可以被传递到验证模块630。验证模块630可用于对所解析的服务图对象进行编程语法验证。换句话说,验证模块630用于确定在服务图602的文件中指定的每一对象是否符合服务图语言规范中所定义的正确语法。验证模块630还可验证在服务图602中引用的任何功能/事件。例如,验证模块630可检查服务图602中由功能名称引用的任何功能在功能执行引擎410中的存在。验证模块630还可利用SG管理器430检查与由服务图602中的事件名称引用的任何事件相关联的事件源440的存在。
[0060] 一旦验证模块630已经确认功能和事件的语法和可用度,验证模块630就可输出状态机模型规范604和功能到URI映射表606。同样,状态机模型规范604是由服务图602表示的状态机模型的定义,并且在对SMI 426的实例进行实例化以实施状态机模型时作为输入进行传递。功能到URI映射表606将特定功能名称(即,动作)映射到对应于功能名称的基于云的功能的唯一URI,使得SMI 426可以使用映射表606中的功能的URI生成传输到功能执行引擎410的请求。
[0061] 图7说明根据一个实施例的由状态机实例实施的状态机模型的操作。服务图可被视为一系列状态和那些状态之间的转变。每一状态可响应于一个或多个事件而触发一个或多个动作。图7是在由SMI 426实施的状态机模型中与进入当前状态710相关联的操作的概念图。
[0062] 如图7中所示,状态机模型从先前状态705转变到当前状态710。先前状态705将有效负载作为输入传输到当前状态。有效负载包括将通过一个或多个云托管功能处理的数据。在一个实施例中,有效负载是经过Javascipt对象表示法(Javascipt Object Notat ion,JSON)格式化的数据。当前状态710可包括用户定义的有效负载过滤器715,其处理从先前状态705接收的有效负载。有效负载过滤器715可包括在将所述输入作为输入提供到云托管功能之前对所述输入进行过滤的指令。应了解,有效负载过滤器715是可选的,并且有效负载不需要在传递到动作720之前处理。
[0063] 动作720定义要如何处理过滤后的有效负载。动作720的执行可能因为一个或多个事件730而延迟。同样,事件映射代理442监测事件源440并在事件发生时通知SGC 424。在一个实施例中,事件映射代理442将事件有效负载传输到SGC 424,所述事件有效负载可包括与事件有关的经过JSON格式化的数据。例如,如果事件是文件事件,那么事件有效负载可包括与文件、文件内容等等相关联的经过JSON格式化的元数据。如果事件是数据库表格事件,那么事件有效负载可包括针对表格中的条目的经过JSON格式化的数据。如果事件是协议事件,那么事件有效负载可包括经过JSON格式化的协议数据,例如HTTP方法和与所述方法相关联的URI。
[0064] 事件有效负载可由有效负载过滤器735处理,有效负载过滤器735可以在事件有效负载数据被传递到动作720之前处理事件有效负载数据。一旦满足事件条件,就处理动作720。在一个实施例中,动作720包括激活云托管功能的功能调用。有效负载可以作为输入传递到功能740。功能740可以是由功能执行引擎410执行的云托管功能。功能740的结果作为结果有效负载返回。结果有效负载是由功能返回的经过JSON格式化的数据。结果有效负载可由状态中的结果动作750接收。结果动作750可触发可能因为一个或多个额外事件而延迟的另一动作(即,嵌套动作),或者可触发从当前状态710到下一状态760的转变。结果有效负载还可由有效负载过滤器755在结果有效负载传递到下一状态760之前进行过滤。
[0065] 图8是根据一个实施例的用于在无服务器云架构中执行云托管功能的方法800的流程图。方法800可由硬件、软件或硬件与软件的组合执行。在一个实施例中,方法800至少部分地由无服务器云架构400的SG管理器430实施。
[0066] 在步骤802,接收定义状态机模型的状态机模型规范。状态机模型规范包括文件,所述文件包括根据应用软件编程接口对状态机模型的定义,所述定义定义了用于定义状态机模型的结构的组件和语法。在一个实施例中,SG管理器430从存储由一个或多个用户定义的多个状态机模型规范的数据库读取状态机模型规范。
[0067] 在步骤804,生成用于管理实施状态机模型的状态机实例(state  machine instance,SMI)的一个或多个服务图控制器(service graph controller,SGC)。在一个实施例中,SG管理器430在云的节点的存储器中创建至少一个SGC 424。多个SGC 424可以部署在云中的多个节点上,以便对通过各种客户端机器进行的服务图的不同实例化进行负载均衡。每一SGC424可创建一个或多个相关联的SMI 426来实施状态机模型。
[0068] 在步骤806,生成与一个或多个事件源相关联的数个事件映射代理。在一个实施例中,SG管理器430针对一个或多个事件源440中的每一个生成事件映射代理442。每一事件映射代理442用于跟踪在事件源440处生成的事件并向一个或多个SGC 424传输事件通知。事件映射代理442的数目可以基于在状态机模型中引用的事件源的数目而确定。
[0069] 在步骤808,响应于由状态机实例生成的功能调用,在一个或多个节点上执行多个云托管功能。在一个实施例中,响应于被事件映射代理442监测到的事件,SMI 426执行并在状态机模型的各状态之间转变。SMI 426发出作为一个或多个状态的动作的部分激活的功能调用,所述功能调用由功能执行引擎410执行的云托管功能。
[0070] 图9说明其中可以实施各种先前实施例的各种架构和/或功能性的示例性系统900。如图所示,提供包括连接到通信总线902的至少一个处理器901的系统900。通信总线
902可以使用任何合适的协议实施,例如外围组件互连标准(Peripheral Component Interconnect,PCI)、PCI-Express、加速图形端口(Accelerated Graphics Port,AGP)、超传输或任何其它总线或点对点通信协议。系统900还包括存储器904。控制逻辑(软件)和数据存储在存储器904中,该存储器904可以采用随机存取存储器(random access memory,RAM)的形式。
[0071] 系统900还包括输入/输出(input/output,I/O)接口912和通信接口906。可以从输入设备912接收用户输入,例如,键盘、鼠标、触摸板、麦克风等等。在一个实施例中,通信接口906可以耦合到图形处理器(未示出),所述图形处理器包括多个着色器模块、光栅化模块等。以上模块中的每一个甚至全都可以位于单个半导体平台上以形成图形处理单元(graphics processing unit,GPU)。
[0072] 在本说明书中,单个半导体平台可以指单一的基于半导体的集成电路或芯片。应注意,术语单个半导体平台也可以指连通性提高了的多芯片模块,其模拟片上操作,并且相对于使用传统的中央处理器(central processing unit,CPU)和总线实施方案有极大的改进。当然,根据用户的需要,各模块也可以单独地或以半导体平台的各种组合来定位。
[0073] 系统900还可包括从存储装置910。从存储装置910包括例如硬盘驱动器和/或可移动存储驱动器,其表示软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(digital versatile disk,DVD)驱动器、记录设备、通用串行总线(universal serial bus,USB)闪存。可移动的存储驱动器以熟知方式从可移动的存储单元读取和/或写入到可移动的存储单元。
[0074] 计算机程序或计算机控制逻辑算法可以存储在存储器904和/或从存储装置910中。此类计算机程序在执行时使系统900执行各种功能。存储器904、存储装置910和/或任何其它存储装置是计算机可读介质的可能示例。
[0075] 在一个实施例中,可以在处理器901、耦合到通信接口906的图形处理器、能够实现处理器901和图形处理器两者的至少一部分能力的集成电路(未示出)、芯片组(即,设计成作为用于进行相关功能的单元工作和销售的一组集成电路等)和/或用于此用途的任何其它集成电路的上下文下实现前述各图的架构和/或功能性。
[0076] 再者,可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其它所需系统的上下文下实现前述各图的架构和/或功能性。例如,系统900可以采用台式计算机、笔记本电脑、服务器、工作站、游戏控制台、嵌入式系统和/或任何其它类型的逻辑的形式。再者,系统900可以采用各种其它设备的形式,包括但不限于个人数字助理(personal digital assistant,PDA)设备、移动电话设备、电视等。
[0077] 此外,尽管未示出,但是系统900可以出于通信目的而耦合到网络(例如,电信网络、局域网(local area network,LAN)、无线网络、诸如因特网的广域网(wide area network,WAN)、对等网络、电缆网络等等)。
[0078] 应注意,在一个方面中,本文中描述的技术体现于计算机可读介质中存储的供指令执行机器、装置或设备使用或结合指令执行机器、装置或设备使用的可执行指令中,所述指令执行机器、装置或设备例如是基于计算机或含有处理器的机器、装置或设备。所属领域的技术人员应了解,对于一些实施例,包括可以存储可通过计算机存取的数据的其它类型的计算机可读介质,例如盒式磁带、快闪存储器卡、数字视频磁盘、Bernoulli盒带、随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)等等。
[0079] 如此处使用,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适的介质中的一种或多种,使得指令执行机器、系统、装置或设备可以从所述计算机可读介质读取(或获取)指令并且执行指令以实施所描述的方法。合适的存储格式包括电子、磁性、光学和电磁格式中的一个或多个。常规的示例性计算机可读介质的非详尽性列表包括:便携式计算机磁盘;RAM;ROM;可擦除可编程只读存储器(EPROM或快闪存储器);光学存储设备,包括便携式压缩光盘(compact disc,CD)、便携式数字视频光盘(digital video disc,DVD)、高清DVD(HD-DVDTM)、蓝光光盘;等等。
[0080] 应理解,所描述的图中说明的组件的布置是示例性的,并且可能有其它布置。还应理解,由权利要求书界定的、下文描述的并且在各种框图中所说明的各种系统组件(和构件)表示根据本文中所公开的主题配置的一些系统中的逻辑组件。
[0081] 例如,这些系统组件(和构件)中的一个或多个可以整体或部分地通过在所描述的图中说明的布置中所说明的组件中的至少一些实现。另外,尽管这些组件中的至少一个至少部分地实施为电子硬件组件并因此构成机器,但是其它组件可以实施为软件,所述软件当包括在执行环境中时构成机器、硬件或软件和硬件的组合。
[0082] 更确切地说,由权利要求书界定的至少一个组件至少部分地实施为电子硬件组件,例如指令执行机器(例如基于处理器的或含有处理器的机器),和/或实施为特定电路或电路系统(例如,互连以执行特定功能的离散逻辑门)。其它组件可实施为软件、硬件或软件和硬件的组合。此外,这些其它组件中的一些或全部可组合,一些可被完全省略,并且可添加额外组件,同时仍实现本文中所描述的功能性。因此,本文中所描述的主题可以许多不同变化形式体现,且所有此类变化形式都涵盖在权利要求书的范围内。
[0083] 在以上描述中,除非另外指明,否则参考动作和由一个或多个设备执行的操作的符号表示来描述主题。因而,应理解,有时被称为计算机执行动作和操作的此类动作和操作包括呈结构化形式的数据的处理器的操作。此操作会转换数据或将其维持在计算机的存储器系统中的位置处,这会以所属领域的技术人员充分理解的方式来重新配置或以其它方式改变设备的操作。数据在存储器的物理位置处维持为具有由数据格式界定的特定特性的数据结构。然而,虽然在前文背景下描述了主题,但这并不表示对所述主题的限制,所属领域的技术人员将了解,下文中描述的各种动作和操作也可以实施于硬件中。
[0084] 为了促进对本文中描述的主题的理解,关于多个动作序列描述了许多方面。由权利要求界定的这些方面中的至少一个由电子硬件组件执行。例如,将认识到,可通过专用电路或电路系统、通过正由一个或多个处理器执行的程序指令或通过这两者的组合执行各个动作。本文中对任何动作序列的描述并不意图暗示必须遵循针对执行此序列而描述的特定次序。除非本文另外指出或另外明显与上下文相矛盾,否则本文中所描述的所有方法都可以任何合适次序执行。
[0085] 除非本文另外指示或明显与上下文相矛盾,否则在描述主题的上下文中(尤其在所附权利要求书的上下文中)使用术语“一(a/an)”和“所述”以及类似指示物应理解为涵盖单数以及复数。除非本文另外指示,否则本文中对值的范围的叙述仅意图充当单独地提及处于所述范围内的每一个单独的值的速记方法,并且每一个单独的值并入本说明书中,如同在本文中单独地叙述一般。此外,上述描述是仅出于说明的目的,而不是出于限制的目的,因为寻求保护的范围由在下文中阐述的权利要求及其任何等效物来界定。除非另外要求,否则本文中所提供的对任何和所有示例或示例性语言(例如,“诸如”)的使用仅意图更好地说明主题,而并非对主题的范围造成限制。在权利要求书和书面描述二者中使用术语“基于”和指示产生结果的条件的其它类似短语并不意图排除产生所述结果的任何其它条件。本说明书中的任何语言都不应理解为指示任何非要求的要素与所要求的要素对实践实施例来说同样必需。
[0086] 本文中描述的实施例包括发明人已知的用于实施所要求的主题的一个或多个模式。应了解,在阅读上述描述之后,所属领域的技术人员将清楚那些实施例的变化形式。本发明人期望熟练的业内人士按需要采用此类变化形式,并且本发明人打算以不同于本文中特定描述的其它方式来实践所要求的主题。因此,这个所要求的主题包括适用法律所允许的随附权利要求中所引述的主题的所有修改和等效物。此外,除非本文另外指示或另外明显与上下文矛盾,否则涵盖上述元件以其所有可能变化形式的任何组合。