CN110998532B - 自适应无服务器功能管理 - Google Patents

自适应无服务器功能管理 Download PDF

Info

Publication number
CN110998532B
CN110998532B CN201880049196.XA CN201880049196A CN110998532B CN 110998532 B CN110998532 B CN 110998532B CN 201880049196 A CN201880049196 A CN 201880049196A CN 110998532 B CN110998532 B CN 110998532B
Authority
CN
China
Prior art keywords
function
event
data structure
input event
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880049196.XA
Other languages
English (en)
Other versions
CN110998532A (zh
Inventor
凌炜
田琛
胡子昂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202310647164.2A priority Critical patent/CN117130734A/zh
Publication of CN110998532A publication Critical patent/CN110998532A/zh
Application granted granted Critical
Publication of CN110998532B publication Critical patent/CN110998532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

一种由云计算设备实现的方法,所述方法包括:由所述云计算设备从执行数据结构中移除与功能相关的数据,以响应确定所述功能正在等待输入事件;在所述功能等待所述输入事件时,由所述云计算设备向管理数据结构添加与所述功能相关的上下文,其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;由所述云计算设备使用所述输入事件执行所述功能,以响应接收到所述输入事件;由所述云计算设备从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。

Description

自适应无服务器功能管理
相关申请案交叉申请
本发明要求2018年8月3日递交的发明名称为“自适应无服务器功能管理”的第16/054,541号美国非临时专利申请案的在先申请优先权,其要求2017年8月24日递交的发明名称为“无状态和无服务器框架的自主和自适应服务管理方法”的第62/549,640号美国临时专利申请案的在先申请优先权,这两个在先申请的内容以引入的方式并入本文中。
背景技术
云计算是用于交付托管服务和功能的模型,客户可以通过因特网使用云计算。云计算实现了对可配置计算资源的共享池的普遍、方便以及按需的网络访问,该资源的提供与使用可以通过最少的管理工作量或服务运营商交互实现。通过采用云计算资源,运营商可以通过网络部署和管理特定计算机系统的模拟,方便对计算资源的访问。
功能即服务(Function as a service,简称FaaS)是一类云计算服务,可提供平台以供客户开发、运行和管理应用程序功能,无需复杂地构建和维护通常与开发和启动应用程序相关的基础设施。FaaS完全抽象化了远离软件开发人员的服务器。因此,FaaS是一种通过无服务器架构进行无服务器计算的概念。软件开发人员可以利用FaaS来部署单个功能(应用程序的一部分)、操作或一段业务逻辑。提供FaaS的云计算环境基于功能的使用和执行而非基于服务器示例大小向客户收费。
发明内容
根据本发明的一方面,提供了一种云计算设备实现的方法。所述方法包括:由所述云计算设备从执行数据结构中移除与功能相关的数据,以响应确定所述功能正在等待输入事件;在所述功能等待所述输入事件时,由所述云计算设备向管理数据结构添加与所述功能相关的上下文,其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;由所述云计算设备使用所述输入事件执行所述功能,以响应接收到所述输入事件;由所述云计算设备从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述方法还包括:在所述功能等待所述输入事件时,由所述云计算设备执行所述执行数据结构中的一个或多个其它功能;其中,所述执行数据结构包括多个层,每一层对应于所述其它功能中的不同功能。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述管理数据结构包括多个不同功能的上下文,其中每个所述功能分别等待输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述方法还包括:由所述云计算设备存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个所述输入事件分别等待由相应的功能接收。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述方法还包括:由所述云计算设备基于所述输入事件在所述等待事件数据结构中处于就绪状态来确定已接收到所述输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述功能与所述云计算设备的第一租户相关联,其中,接收的所述输入事件与所述云计算设备的所述第一租户相关联。
可选地,在任一前述方面,在所述方面的另一种实现方式中,在从所述执行数据结构中移除与所述功能相关的数据之前并且在等待所述输入事件时,使用第二输入事件部分地执行所述功能。
可选地,在任一前述方面,在所述方面的另一种实现方式中,计算所述中间变量以响应部分地执行所述功能。
根据本发明的一方面,提供了一种作为计算设备实现的装置。所述装置包括:存储器,其包括指令;一个或多个处理器,其与所述存储器进行通信,所述一个或多个处理器用于:执行所述指令,以从执行数据结构中移除与功能相关的数据,从而响应确定所述功能正在等待输入事件;在所述功能等待所述输入事件时,向管理数据结构添加与所述功能相关的上下文,其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;使用所述输入事件执行所述功能,以响应接收到所述输入事件;从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,与所述功能相关的所述软件组件包括指向所述软件组件的指针。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述执行数据结构包括所述功能的条目、所述输入事件的条目以及所述输出事件的条目。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述执行数据结构是堆栈。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述一个或多个处理器还用于:在所述功能等待所述输入事件时,执行所述指令以执行所述执行数据结构中的一个或多个其它功能;其中,所述执行数据结构包括多个层,每一层对应于所述其它功能中的不同功能。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述管理数据结构包括多个不同功能的上下文,其中每个所述功能分别等待输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述一个或多个处理器还用于:执行所述指令以存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个所述输入事件分别等待由相应的功能接收。
根据本发明的一方面,提供了一种非瞬时性计算机可读介质,用于:存储包括计算机可执行指令的计算机程序产品,当所述计算机可执行指令由处理器执行时使得所述处理器从执行数据结构中移除与功能相关的数据,从而响应确定所述功能正在等待输入事件;在所述功能等待所述输入事件时,向管理数据结构添加与所述功能相关的上下文,其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;使用所述输入事件执行所述功能,以响应接收到所述输入事件;从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述计算机可执行指令在由所述处理器执行时还使得所述处理器在使用所述输入事件执行所述功能之前将与所述功能相关的数据添加回所述执行数据结构。
可选地,在任一前述方面,在所述方面的另一种实现方式中,在从所述执行数据结构中移除与所述功能相关的数据之前以及在等待所述输入事件时,使用第二输入事件部分地处理所述功能。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述执行数据结构包括所述功能的条目、所述输入事件的条目以及所述输出事件的条目。
可选地,在任一前述方面,在所述方面的另一种实现方式中,所述计算机可执行指令在由所述处理器执行时还使得所述处理器存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个所述输入事件分别等待由相应的功能接收。
通过以下结合附图和权利要求的详细描述,这些以及其它特征将会被更清楚地理解。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1是示出云计算设备处的功能和事件之间关系的数据流图;
图2示出了用于执行图1所示的功能的软件代码的一部分;
图3是根据本发明各种实施例的云计算设备的实施例的示意图;
图4是示出根据本发明各种实施例的如何使用所述云计算设备和远程状态存储器执行事件驱动功能的图;
图5A和图5B是示出根据本发明各种实施例用于在所述入口事件队列、所述执行数据结构、所述等待事件数据结构和所述管理数据结构之间移动数据以执行所述事件驱动功能的方法的图;
图6是示出根据本发明各种实施例的所述等待事件数据结构和所述管理数据结构之间关系的图;
图7是示出根据本发明各种实施例的处理来自所述等待事件数据结构的输入事件的方法的图;
图8是示出根据本文所公开的各种实施例的各功能在所述云计算设备内执行时所依据的执行优先级的图;
图9是根据本发明各种实施例的用于实现事件驱动功能执行的方法的流程图。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数量的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
FaaS是服务运营商向软件开发人员提供的软件框架。FaaS通常包括功能框架,使得各应用程序能够跨不同设备无缝地运行,所述不同设备具有不同类型的输入和输出以及不同类型的操作系统。通过这种方式,软件开发人员可能只需要提供与正在开发的所述应用程序相关的业务逻辑,而FaaS可提供确保所述应用程序可以跨各种不同设备正确执行的管理逻辑。
FaaS通常由托管各种服务运营商的云计算环境实现,其中,所述云计算环境可以包括一个或多个云计算设备。所述云计算环境通常远离软件开发人员,使得软件开发人员不需要维护实现FaaS框架所必需的硬件和软件组件。相反,实现用于实现各功能的FaaS框架所必需的硬件和软件组件在所述云计算环境中远程维护。
云计算环境(在本文中也称为云计算设备)可以是核心数据中心或边缘计算设备,即服务多个客户端(所述应用程序的用户和所述应用程序的软件开发人员)的计算、存储和网络资源池,所述多个客户端向所述云计算环境实现的服务运营商请求服务。核心数据中心可以为用于容纳向所述客户端提供服务的计算、存储和网络资源池的设施。核心数据中心通常位于远程位置,使得客户端与所述核心数据中心之间相隔大型骨干网。核心数据中心通常为执行工业规模操作的大型设施,其使用的电力相当于一个小城镇使用的电力。
相反,边缘计算设备是核心数据中心的小型化版本,也存储有可用于向相同客户端提供云服务的计算、存储和网络资源池。然而,存储在所述边缘计算设备处的资源的实际大小和规模都远小于存储在所述核心数据中心处的资源的大小和规模。边缘计算设备的一个示例是第2017/0359443号美国专利公开案中所描述的电信边缘云(telecommunicationsedge cloud,简称TEC)元件,该专利公开案的内容以引入的方式并入本文。
在两种类型的云计算设备(例如,所述核心数据中心和所述边缘计算设备)中,可以基于待执行的所述功能使用的输入事件以特定顺序执行某些事件驱动功能来实现FaaS。所述输入事件可以是从应用程序的用户接收的数据、从远程存储位置接收的数据,或者基于功能执行而从内部计算得出的数据。然而,某些功能在所述功能接收到特定输入事件之前可能不会执行。这导致在所述云计算设备处执行一个或多个功能时出现延迟(所述延迟在本文中也称为并发问题)。典型云计算设备仅在执行所述功能之前等待接收所述输入事件,因此不仅延迟了当前功能的执行,而且还延迟了多个其它功能的执行。然而,典型云计算设备不使用无服务器框架来处理当功能等待输入事件时发生的所述并发问题。
本文所公开的各实施例涉及与为一个或多个应用程序执行事件驱动功能相关的多个数据结构的管理,使得当一个功能在等待输入事件时其它功能仍可以继续运行。在一实施例中,所述云计算设备可以维护执行数据结构、管理数据结构和等待事件数据结构。所述执行数据结构包括与待执行的功能相关的数据、所述功能的一个或多个输入事件,以及所述功能的一个或多个输出事件。所述管理数据结构包括与等待一个或多个输入事件的所述功能相关的上下文。所述等待事件数据结构包括与在所述云计算设备处执行的功能正在等待接收的所述输入事件相关的数据。
在一实施例中,所述计算设备可以用于:从所述执行数据结构中移除与正在等待输入事件的功能相关的数据,以响应确定所述功能在可以完全执行以生成输出事件之前仍在等待另一输入事件。与正在等待所述输入事件的所述功能相关的上下文可以临时添加到所述管理数据结构。与所述功能相关的所述上下文可以包括与所述功能相关的软件组件及与所述功能相关的中间变量。在所述功能等待所述输入事件时,所述计算设备可以继续执行基于所述执行数据结构的就绪可执行的其它功能。在所述功能等待所述输入事件时,所述计算设备还可以识别所述输入事件准备就绪的时间。当所述输入事件在所述等待事件数据结构中标记为就绪时,所述计算设备可以执行所述功能,然后从所述管理数据结构中移除与所述功能相关的数据。
在一实施例中,能够为软件开发人员执行FaaS的云计算设备配置有功能运行时间,所述功能运行时间包括向软件开发人员提供基本功能所必需的软件组件。例如,用于这些功能的所述软件组件可以包括任何软件,例如用于运行所述功能的算法、变量、类、库或对象。云计算设备还可以包括用于运行所述功能的硬件组件,例如上文所述的计算、存储和网络资源。
所述云计算设备可以服务于两种类型的客户端:软件开发人员和租户。所述软件开发人员负责开发、部署和执行各种功能和应用程序。所述租户(本文也称为用户)实际上使用由所述软件开发人员开发的所述功能和应用程序。
所述云设备实现无服务器计算,即服务器管理的抽象化。因为资源由云运营商而非软件开发人员管理,避免了软件开发人员的低级基础设施决策。例如,当软件开发人员创建应用程序时,所述软件开发人员可能只需要开发所述应用程序的特定的实际业务逻辑。管理所述功能并确保所述应用程序可以无缝运行在不同平台不同类型的设备之间的逻辑由云计算设备的FaaS操作提供。这样,所述软件开发人员无需了解执行由所述云计算设备提供的所述功能的硬件和软件要求。类似地,当用户使用所述云计算设备触发应用程序时,所述用户也不知道所述应用程序的所述功能正在由所述云计算设备而非所述软件开发人员的设备提供。
图1是示出在实现FaaS的云计算设备处执行的事件驱动功能之间关系的数据流图100。例如,数据流图100示出了在云计算设备处执行的功能103A至103D与在所述云计算设备处接收或处理的事件106A至106G之间的关系。虽然图1仅示出了四个功能103A至103D和七个事件106A至106G,但应理解的是,应用程序的数据流图100可以包括任意数量的功能103。FaaS可以用作开发功能103A至103D、部署功能103A至103D、运行功能103A至103D和/或管理功能103A至103D并发性的框架。
在一些情况下,所述软件开发人员可以创建所述数据流图100,以指明可以提供给功能103A至103D的输入事件以及因执行功能103A至103D而生成的输出事件。功能103A至103D可以包括一些在执行应用程序期间代表用户在所述云计算设备处执行的FaaS功能。功能103A至103D还可以包括一些在执行由所述软件开发人员提供的所述应用程序期间实现的实际业务逻辑。这样,功能103A至103D可以是在所述云计算设备处执行的软件代码,并且涉及为应用程序执行的算法或计算。
事件106A至106G是各种功能103A至103D的输入事件或输出事件。例如,事件106A至106G可以是功能103A至103D中任一功能的输入事件以及功能103A至103D中另一功能的输出事件。输入事件可以是从应用程序的用户接收的数据、从远程状态存储器接收的数据,或者基于功能103A至103D的执行计算得出的数据。例如,输入事件可以是由于用户手动输入一些数据而接收的数据或从远程状态存储器接收的数据。输入事件也可以是因执行功能103A至103D而接收的输出事件,如下文进一步所述。输出事件可以是执行功能103A至103D而生成的数据。
如图1所示,功能F1 103A使用输入事件E0 106A。在此情况中,输入事件E0 106A使用来自输入事件E0 106A的数据触发功能F1 103A的执行。功能F1 103A的执行产生两个输出事件E1 106B和E2 106C。
输出事件E1 106B是功能F2 103B的输入事件。在一些情况下,输入事件E1 106B可以触发功能F2 103B的执行。功能F2 103B的执行产生输出事件E3 106D。
输出事件E2 106C是功能F3 103C的输入事件。输入事件E2 106C可以触发功能F3103C的执行。功能F3 103C的执行产生输出事件E4 106E。
输出事件E3 106D和输出事件E4 106E是功能F4 103D的输入事件。在功能F4 103D可以完全执行以产生输出事件E5 106G之前,功能F4 103D还需要一个输入事件E6 106F。输入事件E6 106F可以从内部获取、从用户接收,或者从远程状态存储器接收。
在接收到输入事件106F、输入事件E3 106D和输入事件E4 106E之后,便可以触发功能F4 103D的执行。功能F4 103D的执行可以产生输出事件E5 106G。
在一个示例中,假设功能F4 103D是检查执行应用程序的用户的手机连接的功能。假设输入事件E3 106D和输入事件E4 106E对应于因执行功能F2 103B和功能F3 103C而获得的一些数据。但是,输入事件E6 106F对应于存储在远程账户数据库中的租户标识符。
在这种情况下,输入事件E3 106D和输入事件E4 106E已准备就绪,可由功能F4103D进行处理。然而,由于功能F4 103D仍需要输入事件E6 106F才能完全执行,因此功能F4 103D可以包括对“等待”应用程序接口(application programming interface,简称API)的调用,以等待来自所述远程账户数据库的所述租户标识符(输入事件E6 106F)。例如,所述云计算设备的功能运行时间可以调用用户账户查询以接收所述用户的账户信息。在所述远程账户数据库中找到所述账户信息之后,所述云计算设备的所述运行时间可以从所述账户信息中提取所述租户标识符。接收所述租户标识符(输入事件E6 106F)可以触发使用所述租户标识符(输入事件E6 106F)进一步执行功能F4 103D。
如上所述,所述云计算设备可以用于在执行功能F4 103D之前等待接收输入事件E6 106F。这不仅会导致在执行功能F4 103D时出现延迟,而且在功能F4 103D之后执行的所有功能以及代表其它租户执行的功能都会出现延迟。这是因为典型云计算设备将并行执行功能103A至103D,使得每一层都在输入事件到达时立即执行。后续功能103A至103D的执行取决于先前功能103A至103D的执行以及其它输入事件的成功接收。
本文所公开的实施例涉及大致消除当功能103A至103D等待输入事件时发生的并发问题的方法和系统。在一实施例中,云计算设备可以包括多个数据结构,所述多个数据结构可以用于动态地移动功能103A至103D的顺序,以避免某一个功能103阻止其它功能103A至103D的执行,如下文进一步所述。
图2示出了用于执行功能F4 103D的软件代码200的一部分的示例。例如,软件代码200可以包括一些与所述应用程序的实际业务使用相关的逻辑,所述逻辑可以由软件开发人员提供。用于功能F4 103D的软件代码200还包括参数,例如输入事件数量参数206和输入事件列表209。输入事件数量参数206可以包括功能F4 103D完全执行并生成输出事件E5106G所使用的输入事件的总数。输入事件列表209包括功能F4 103D执行所使用的输入事件的列表。
如上面对于图1的描述,功能F4 103D可以包括对输入事件E6 106F的等待(E6)调用212。然而,软件开发人员通常不会准备机制来处理由于等待输入事件E6 106F而在所述云计算设备处发生的延迟。类似地,所述云计算设备也不会采用机制用以补偿在功能F4103D等待输入事件时发生的并发问题。
在一实施例中,所述等待(E6)调用212可以触发在所述云计算设备处执行换出进程,这将在下文参考图5至图7进一步详细描述。在一实施例中,所述云计算设备可以维护执行数据结构、管理数据结构和等待事件数据结构。所述执行数据结构包括与待执行的功能103A至103D相关的数据、功能103的一个或多个输入事件,以及所述功能103的一个或多个输出事件。所述管理数据结构包括与等待一个或多个输入事件的所述功能相关的上下文。与功能103A至103D相关的所述上下文可以包括与所述功能相关的软件组件及与所述功能相关的中间变量。当功能103A至103D在等待输入事件时,与功能103A至103D相关的数据可以从所述执行数据结构中移除,然后添加到所述管理数据结构。在此期间,其它功能103A至103D可以执行,而不必等待输入事件。在接收到功能103A至103D正在等待的输入事件时,功能103A至103D可以从所述管理数据结构中移除并使用所述输入事件执行。
图3是根据本发明各种实施例的云计算设备300的实施例的示意图。如上所述,所述云计算设备300可以是包括许多云计算设备300的核心数据中心,其中所述许多云计算设备300用于向软件开发人员和租户提供计算、存储和网络资源。所述云计算设备300还可以是边缘计算设备,在客户边缘而非横跨骨干网在远程位置(例如所述核心数据中心)提供云计算环境。在此情况中,所述云计算设备300可以类似于第2017/0359443号美国专利公开案所述的TEC元件,该专利公开案的内容已通过引入的方式并入本文。
所述云计算设备300是一个或多个设备或模块化电信设备的合集,将网络资源、计算资源、存储资源、操作系统和各种云应用程序集成到一个位置。所述云计算设备300可以是修改的网元、修改的网络节点或任何其它逻辑/物理集中式的网络计算和存储设备,所述设备用于基于输入事件和输出事件管理功能103的执行。所述云计算设备300可以用于实现和/或支持所述电信云系统机制和云计算机制,以向软件开发人员提供诸如FaaS的云服务。可以在单个机箱/机盒中实现所述云计算设备300,或者可以在多个互联的机箱/机盒中实现所述云计算设备300的功能。所述云计算设备300可以是多种设备(例如,调制解调器、交换机、路由器、网桥、服务器、客户端、控制器、内存、磁盘、高速缓存等)组合而成的任何设备;所述设备存储用于实现FaaS的云计算资源、从软件开发人员接收业务相关的逻辑(或与应用程序相关的软件组件),以及管理存储在所述云计算设备300处用于处理在功能103等待输入事件时发生的并发问题的各种数据结构。
本发明所述的至少部分特征/方法在例如所述云计算设备300的网络/计算/存储装置中实现。例如,本发明中的特征/方法可以采用硬件、固件和/或在硬件上安装运行的软件实现。所述云计算设备300是具有云计算、存储资源以及网络资源并通过网络传输报文的任何设备,所述云计算、存储资源的示例为内存和中央处理器(central processing unit,简称CPU),所述网络资源的示例为交换机、路由器、网桥、服务器、客户端等。如图3所示,所述云计算设备300包括网络资源310,即发射机、接收机、交换机、路由器、交换结构或其组合。在一些实施例中,所述网络资源310可以包括运营商边缘(provider edge,简称PE)路由器、光线路终端(optical line terminal,简称OLT)、宽带网络业务网关(broadbandnetwork gateway,简称BNG)、无线接入点设备和/或光传输网络(optical transportnetwork,简称OTN)交换机。所述网络资源310耦合至多个输入/输出(input/output,简称I/O)端口320,用于从其它节点发送和/或接收报文或帧。
处理器池330是所述云计算设备300中的逻辑CPU,耦合至所述网络资源310并基于输入事件和输出事件管理功能103的执行。所述处理器池330可以包括一个或多个多核处理器和/或存储设备,可以用作数据存储区、缓存区等。在一实施例中,所述处理器池330可以实现为通用服务器和/或虚拟存储器(virtual memory,简称VM)。
所述处理器池330包括操作系统模块333,可以控制和管理所述云计算设备300的网络、计算和存储功能。所述处理器池330还包括事件功能模块334,可以管理所述云计算设备300处的功能103A至103D(在本文中也称为功能103)的执行,同时最小化因等待接收输入事件而可能发生的延迟。如此,所述操作系统模块333、所述事件功能模块334以及相关的方法和系统改进了所述云计算设备300的功能。在一可替代实施例中,所述操作系统模块333和所述事件功能模块334可以实现为存储在存储资源340中的指令,所述指令可以由所述处理器池330执行。
所述存储资源340可以包括用于临时存储内容的内存、硬盘和高速缓存,如随机存取存储器(random-access memory,简称RAM)。另外,所述存储资源340可以包括用于较长时间存储内容的长期存储器,如只读存储器(read-only memory,简称ROM)。例如,所述高速缓存和所述长期存储器可以包括动态RAM(dynamic random access memory,简称DRAM)、固态磁盘(solid state drive,简称SSD)、硬盘或其组合。在一实施例中,所述存储资源340可以存储所述执行数据结构355、所述管理数据结构350和所述等待事件数据结构345,下面将参考图4至图7对此进行进一步描述。应理解的是,所述存储资源340可以存储图3中未示出的其它类型的数据和其它数据结构。
图4是示出根据本发明各种实施例的如何执行在所述云计算设备300处执行的事件驱动功能103的图400。所述云计算设备300可以与远程状态存储器403通信,所述远程状态存储器403可以是远程数据中心、远程计算设备、远程用户设备、远程云计算设备300,或可以被所述云计算设备300用来接收数据的任何其它远程设备。在一些情况下,所述远程状态存储器403可以向所述云计算设备300发送数据,所述数据可以被视为在所述云计算设备300处执行的功能103的输入事件。
在一实施例中,所述云计算设备300可以包括各种数据结构,所述各种数据结构存储有关功能103的数据和所述功能103对应的输入事件和输出事件。例如,如图4所示,所述云计算设备300可以包括等待事件数据结构345、入口事件数据结构406、出口事件数据结构409、管理数据结构350、执行数据结构355和事件功能数据结构411。在一实施例中,这些数据结构345、406、409、350、355和411中的每一个都包括在所述云计算设备300的所述存储资源340中。在一实施例中,所述处理器池330可以执行所述事件功能模块334,通过从数据结构345、406、409、350、355和411中的一个数据结构中移除数据,然后将所述数据添加到数据结构345、406、409、350、355和411中的另一个数据结构中来更改这些数据结构345、406、409、350、355和411中的每一个数据结构中的数据的位置。
在一实施例中,所述入口事件数据结构406是诸如队列的数据结构,包括首先从网络进入所述计算设备300的事件。例如,输入事件E0 106A可以是存储在所述入口事件数据结构406中的唯一输入事件。中间输入事件E1至E6没有存储在所述入口事件数据结构406中。存储在所述入口事件数据结构406中的所述输入事件可以是与所述输入事件相关的实际数据或指向与所述输入事件相关的实际数据的指针。
在一实施例中,所述等待事件数据结构345是诸如队列的数据结构,包括与功能103等待接收的输入事件相关的数据。例如,所述等待事件数据结构345可以包括在功能F4103D等待输入事件E6 106F时与输入事件E6 106F相关的数据。所述等待事件数据结构345可以是队列,并且所述等待事件数据结构345中的输入事件可以根据先入先出方案进行处理。在所述先入先出方案中,先放入所述等待事件数据结构345的输入事件先由所述云计算设备300进行处理(即,用作执行功能103的输入事件)。
在一实施例中,等待事件数据结构345可以存储每个输入事件的状态,所述状态可以指示所述输入事件是处于就绪状态还是待定状态。当输入事件已计算或接收到时,所述输入事件会被标记为就绪状态。当输入事件尚未计算或接收到时,所述输入事件会被标记为待定状态。在一实施例中,第一个被标记为就绪状态的输入事件由所述云计算设备300进行处理。
出口事件数据结构409可以是诸如队列的数据结构,存储如图1所示的数据流图的最终输出。例如,所述出口事件数据结构409可以仅存储输出事件E5 106G。与所述入口事件数据结构406类似,所述出口事件数据结构409也不存储初始和中间事件E0至E4或E6。在一些情况下,存储在所述出口事件数据结构409中的输出事件可以发送到所述云计算设备300的租户。在一些情况下,存储在所述出口事件数据结构409中的输出事件可以发送回所述入口事件数据结构406作为另一功能103的输入事件。
事件功能数据结构411可以是一种数据结构,存储有向无环图(directed acyclicgraph,简称DAG)、诸如数据流图100之类的数据流图,或指示一个或多个输入事件、功能103和一个或多个输出事件之间关系的任何其它类型的图或数据结构。在一实施例中,所述事件功能数据结构411可以存储为表格形式。在一实施例中,不同的软件开发人员可以开发存储在所述事件功能图411中的所述DAG和数据流图。
执行数据结构355可以是存储与为应用程序即将执行的所述功能103相关的数据的数据结构。可以代表请求在用户设备处执行所述应用程序的用户在所述云计算设备300处执行所述应用程序。所述应用程序的所述功能103可以是在执行所述应用程序期间在所述云计算设备300处执行的进程。
在一实施例中,所述执行数据结构355可以是堆栈,如下文参考图5A和图5B进一步所述。在一实施例中,所述执行数据结构355可以具有多个条目和多个层。例如,所述执行数据结构355可以包括:与功能103的输入事件相关的数据的条目、与所述功能103相关的数据的条目,以及与所述功能103的输出事件相关的数据的条目。例如,所述执行数据结构355可以包括:将在所述云计算设备300处执行的每个功能103的条目层。在一实施例中,在使用所述层指定的所有输入事件执行所述功能103之后,对应于功能103的所述条目层(输入事件、功能103和输出事件)可以从所述执行数据结构355中移除。在一实施例中,对应于功能103的所述条目层可以从所述执行数据结构355中移除,以响应确定所述功能103正在等待输入事件。在这种情况下,与所述功能103相关的数据可以临时添加到所述管理数据结构350,如下面所述。
在一实施例中,输入事件的条目可以不存储与所述输入事件对应的实际数据,而存储指向与所述输入事件对应的数据的指针(或地址);其中,与所述输入事件对应的数据可以存储在所述存储资源340中的其它位置。类似地,所述功能103的条目可以不存储用于执行所述功能103的实际代码和软件组件,而存储指向用于执行所述功能103的实际代码和软件组件的指针。用于执行所述功能的代码和软件组件也可以存储在所述云计算设备300的所述存储资源340中的其它位置。类似地,所述输出事件的所述条目可以不存储与所述输出事件对应的实际数据,而存储指向与所述输出事件对应的数据的指针;其中,与所述输出事件对应的数据可以存储在所述存储资源340中的其它位置。
在一实施例中,所述管理数据结构350存储与所述功能103相关的数据,其中所述功能103在可以完全执行以生成输出事件之前仍在等待一个或多个输入事件。在一实施例中,所述管理数据结构350存储所述功能103的软件组件,例如等待输入事件的所述功能103的代码、变量、类、库、对象、算法等。在一实施例中,所述管理数据结构350可以不实际存储所述功能103的软件组件,而存储指向所述功能103的软件组件的指针,指针也可以存储在存储资源340中的其它位置。
在一实施例中,所述管理数据结构350还可以存储因部分处理所述功能103而生成的中间变量。中间变量是在所述功能103开始等待其它输入事件以完成所述功能103的处理并生成输出事件之前由所述功能103使用一个或多个输入事件计算得出的数据。
例如,假设功能103使用两个输入事件来生成输出事件,并且假设仅接收到其中一个输入事件。此外,假设所述接收的输入事件和所述功能103存储在所述执行数据结构355的层中。所述执行数据结构355的所述层可以指示所述功能103仍缺少所述功能103的输入事件条目。在一实施例中,可以使用所述接收到的输入事件部分地处理或部分地执行所述功能103。所述部分处理可以产生中间变量,所述中间变量可以是因部分执行所述功能103而计算得出的变量或数据。所述中间变量可以存储在所述执行数据结构355中。这样,当接收到另一输入事件时,所述功能103可以使用所述剩余输入事件和所述中间变量恢复所述功能103的执行,而不必再次执行整个功能103。
临时保存正在等待输入事件的功能103的所述中间变量可以节省所述云计算设备300的时间和资源,因为所述云计算设备300不必再次执行整个功能103。相反,所述云计算设备300可以使用所述中间变量和所述功能103的剩余部分,不仅节省了时间,而且是处理等待输入事件的功能103的更有效方式。
当为等待执行的功能执行换出和换入进程时,本发明的各实施例使用的内存更少。例如,与处理在实现FaaS的云计算设备300处发生的并发问题的传统方法相比,从所述执行数据结构355换出并换入所述管理数据结构350的功能上下文更小。
在一实施例中,所述云计算设备300还可以包括各种模块,所述模块控制存储在所述云计算设备300处的所述数据结构345、406、409、350、355和411中的每一个数据结构,从而有效执行所述功能103。例如,如图4所示,所述云计算设备300还可以包括功能运行时间414和事件调度器417。
所述功能运行时间414是一种软件,用于控制存储在所述云计算设备300处的所述数据结构345、406、409、350、355和411之间的数据移动并控制所述事件调度器417。例如,所述功能运行时间414执行本文公开的所述换入和换出进程,在所述换入和换出进程中功能上下文从执行数据结构355逻辑地移动(重新定义)到管理数据结构350。所述功能运行时间414还从所述数据结构345、406、409、350、355和411提取事件并管理所述执行数据结构355。如上所述,所述云计算设备300向订阅软件开发人员提供FaaS,使得所述软件开发人员只需要产生与其应用程序相关的业务逻辑。所述软件开发人员可以将包括与应用程序相关的任何其它数据的业务逻辑打包,然后将所述包传输给所述云计算设备300。然后,所述云计算设备300可以使用所述功能运行时间414提供正确执行所述应用程序所需的框架。
事件调度器417可以是软件模块,用于确定要执行哪些功能103以及如何在所述云计算设备300处分配计算和网络资源来执行所述功能103。所述事件调度器417用于:允许多个软件开发人员有效地共享所述云计算设备300处的资源;保持所有计算资源繁忙(负载均衡);实现目标服务质量;最大化吞吐量(单位时间内完成的进程的总量);最小化等待时间(从进程变为启用状态直到所述进程开始在所述云计算设备300处的资源上执行的第一时间点之间的时间);最小化延迟(从进程变为启用状态直到所述进程完成执行的时间)。
在一实施例中,所述事件功能模块334可以是所述事件调度器417的一部分。在一实施例中,所述事件功能模块334实现所述数据结构345、406、409、350、355和411之间的数据移动,以响应某些功能103正在执行或某些功能103正被标记为仍在等待输入事件。这样,所述事件调度器417还可以负责所述数据结构345、406、409、350、355和411之间的数据移动,以响应某些功能103正在执行或某些功能103正被标记为仍在等待输入事件。
在一实施例中,所述事件调度器417可以基于所述事件功能图411生成所述执行数据结构355。所述事件功能数据结构411指示功能103需要哪些输入事件以及功能103需要哪些输出事件。这样,所述事件调度器417可以确定要在所述云计算设备300处执行的各功能103的顺序。
在操作中,可以获取输入事件(即,通过远程状态存储器或通过另一功能103的内部处理),然后将所述输入事件存储到所述执行数据结构355的层中。如上所述,对应于所述入口事件数据结构406的实际数据可以存储在所述云计算设备300的内存中,例如存储在所述存储资源340中。对应于入口事件的数据的指针可以存储在所述入口事件数据结构406中。
所述事件调度器417可以使用所述执行数据结构355基于所述执行数据结构355的层来确定接下来要执行哪个功能103。在一实施例中,当所述执行数据结构355的所述层指示尚未接收到接下来要执行的所述功能103的输入事件时,所述事件功能模块334可以将与正在等待输入事件的所述功能103相关的数据移动到所述管理数据结构350。
在一实施例中,可以使用已接收到的一个或多个输入事件部分地执行所述功能103,这导致生成一个或多个中间变量。所述中间变量是移动到所述管理数据结构350的与所述功能103相关的数据的一部分。例如,假设所述功能103需要来自所述远程状态存储器403的信息。在这种情况下,远程状态数据结构查询421可以发送到所述远程状态存储器403以获得用作所述功能103的输入事件的所述信息。在此期间,所述功能103通常会等待来自所述远程状态存储器403的所述输入事件。相反,所述云计算设备300没有等待来自所述远程状态存储器403的所述输入事件,而是临时将包括与所述功能103相关的任何中间变量的上下文移动到所述管理数据结构350。
此时,所述执行数据结构355可以基于所述事件功能图411和所述执行数据结构355继续执行其它功能103或代表其它租户执行的其它功能103。例如,所述执行数据结构355可以包括其它功能103的层,所述层包括用于执行所述其它功能103的所有输入事件的条目。在所述功能103等待输入事件时,所述执行数据结构355可以继续执行不需要等待输入事件的其它功能103。这样,可以处理因执行多个互相依赖的不同事件驱动功能103而导致的并发或延迟。
图5A和图5B是示出根据本发明各种实施例用于在所述入口事件数据结构406、所述执行数据结构355、所述等待事件数据结构345和所述管理数据结构350之间移动数据以执行所述事件驱动功能103的方法500的图.在图5A和图5B所示的实现方式中,所述执行数据结构355A至355E是堆栈。图5A和图5B示出了多个执行数据结构355A至355E,示出了在执行一系列功能103之后所述执行数据结构355随时间变化的各种状态。
每个执行数据结构355A至355E包括层520和525以及条目505、510和515。所述执行数据结构355A包括层520A和525A以及条目505A、510A和515A。层520A和525A对应于第一功能F1 103A的执行,第一功能F1 103A可以由第一租户或租户(t1)调用,如图5A和图5B所示。条目505A包括与功能F1 103A相关的数据,例如F1 103A的软件组件或代码。条目510A包括对应于输入事件E0 106A的数据,所述数据可以是对应于输入事件E0 106A的实际数据或指向对应于输入事件E0 106A的数据的指针。条目515A包括对应于因执行功能F1 103A而产生的两个输出事件E1 106B和E2 106C的数据。对应于两个输出事件E1 106B和E2 106C的数据可以是实际数据或指向所述数据的指针。由于功能F1 103A有两个输出事件E1 106B和E2106C,因此所述执行数据结构355A中存在两个层520A和525A。
在操作中,所述事件调度器417或所述功能运行时间414从所述入口事件队列406获取第一租户(t1)的输入事件E0 106A,并将输入事件E0 106A放入所述执行数据结构355A的层520A和条目510A中。所述事件调度器417或所述功能运行时间414可以基于所述事件功能数据结构411确定功能F1 103A对应于输入事件E0 106A。所述事件调度器417或所述功能运行时间414可以将功能F1 103A添加到所述执行数据结构355A的层520A和条目505A中。由于功能F1 103A仅使用输入事件E0 106A,因此所述事件调度器417可以执行功能F1 103A,输出了输出事件E2 106C和输出事件E1 106B。如图5A所示,输出事件E1 106B放置在条目515A的顶层525A中,输出事件E2 106C放置在条目515A的底层520A中。
在一实施例中,由于输出事件E1 106B在所述执行数据结构355A的顶层525A中,因此会先处理输出事件E1 106B以基于所述事件功能数据结构411确定对应的功能F2 103B,功能F2 103B使用输出事件E1 106B作为输入事件。然后,所述事件调度器417或所述功能运行时间414将与输出事件E1 106B相关的数据重新定义到所述执行数据结构355B的层525B的条目510B中,使得输出事件E1 106B变为输入事件E1 106B。然后,所述事件调度器417或所述功能运行时间414将与功能F2 103B相关的数据重新定义到所述执行数据结构355B的条目505B和层525B中。由于功能F2 103B仅使用输入事件E1 106B,因此所述事件调度器417可以执行功能F2 103B,输出了输出事件E3 106D。如图5A所示,输出事件E3 106D放置在顶层525B中,因为所述执行数据结构355B的顶层525B对应于功能F2 103B。
在一实施例中,由于输出事件E3 106D在所述执行数据结构355B的顶层525B中,因此会处理输出事件E3 106D以基于所述事件功能数据结构411确定对应的功能F4 103D,功能F4 103D使用输出事件E3 106D作为输入事件。然后,所述事件调度器417或所述功能运行时间414将与输出事件E3 106D相关的数据重新定义到所述执行数据结构355C的层525C的条目510C中,使得输出事件E3 106D变为输入事件E3 106D。然后,所述事件调度器417或所述功能运行时间414将与功能F4 103D相关的数据添加到所述执行数据结构355C的条目505C和层525C中。参考图1所述,功能F4 103D依赖三个输入事件E3 106D、E4 106E和E6106F。此时,所述执行数据结构355C仅包括与输入事件E3 106D相关的数据,功能F4 103D仍在等待输入E4 106E和E6 106F。在一实施例中,所述事件功能模块334可以确定功能F4103D仍在等待其它输入事件E4 106E和E6 106F以完成F4 103D的执行来生成输出事件。
在一实施例中,所述事件功能模块334可以将输入事件E4 106E和E6 106F放入所述等待事件数据结构345中,这指示在所述云计算设备300处为第一租户(t1)执行的功能103正在等待输入事件E4 106E和E6 106F。所述事件功能模块334可以将与功能F4 103D相关的数据从所述执行数据结构355C换出到所述管理数据结构350。换出与功能F4 103D相关的数据涉及从所述执行数据结构355C的层525C中移除与功能F4 103D相关的数据,然后将与功能F4 103D相关的上下文503A添加到所述管理数据结构350。
在一实施例中,与功能F4 103D相关的上下文503A可以包括:指向与F4 103D的执行相关的软件组件的指针;指向输入事件E3 106D的指针。在一实施例中,功能F4 103D可以使用输入事件E3 106D部分地处理或执行功能F4 103D以生成一个或多个中间变量,所述中间变量随后可以在接收输入事件E4 106E和E6 106F之后由功能F4 103D使用。在一实施例中,与功能F4 103D相关的上下文503A可以包括所述中间变量。
可以在移除了与功能F4 103D相关的数据之后处理所述执行数据结构355D。此时,所述执行数据结构355D仅包括位于条目510D处的输入事件E2 106C的层520D,输入事件E2106C在执行功能F1 103A时添加到所述执行数据结构355A。处理输入事件E2 106C以基于所述事件功能数据结构411确定使用输入事件E2 106C的对应功能F3 103C。然后,所述事件调度器417或所述功能运行时间414将与功能F3 103C相关的数据重新定义到所述执行数据结构355D的条目505D和层520D中。由于功能F3 103C仅使用输入事件E2 106C,因此所述事件调度器417可以执行功能F3 103C,输出了输出事件E4 106E。处理功能F3 103C以创建输出事件E4 106E之后,便可以从所述执行数据结构355D中移除功能F3 103C的包含条目505D、510D和515D的层520D。
在一实施例中,所述事件功能模块334可以确定第一租户(t1)的事件E4 106E存储在所述等待事件数据结构345中,作为功能F4 103D正在等待接收输入事件E4 106E的指示。在一实施例中,所述事件功能模块334还可以确定:所述管理数据结构350包括与仍在等待其它输入E4 106E和E6 106F的功能F4 103D相关的上下文503A,其中,在稍后调用所述等待API时等待输入E6 106F。
在这种情况下,所述事件功能模块334可以修改所述执行数据结构355E,以再次在执行堆栈355E的条目505E和层520E处包括与功能F4 103D相关的数据,从而响应确定所述管理数据结构350包括与仍在等待其它输入E4 106E的功能F4 103D相关的上下文503A。所述执行数据结构355E还可以在所述执行堆栈355E的条目510E和层520E处包括输入事件E4106E。在一实施例中,与功能F4 103D相关的上下文503A可以从所述管理数据结构350中移除。
在一实施例中,可以使用可用的输入事件E4 106E及存储在所述上下文503A中的任何中间变量部分地处理或执行功能F4 103D。在此进程中,可以使用输入事件E4 106E和上下文503A基于功能F4 103D的部分执行来计算其它中间变量。这些新中间变量可以存储为上下文503B并存储在所述管理数据结构350中,以响应确定功能F4 103D仍在等待其它输入事件E6 106F。在一实施例中,上下文503B可以类似于上下文503A,不同之处在于上下文503B可以包括所述中间变量或指向所述中间变量的指针;其中,所述中间变量是基于使用输入事件E3 106D和输入事件E4 106E执行功能F4 103D而计算得出的。
输入事件E6 106F已经放入所述等待事件数据结构345中,指示在所述云计算设备300处为第一租户(t1)执行的功能F4 103D正在等待输入事件E6 106F。所述事件功能模块334可以再次将与功能F4 103D相关的数据从所述执行数据结构355E换出到所述管理数据结构350。具体涉及从所述执行数据结构355E的层520E中移除与功能F4 103D相关的数据,然后将与功能F4 103D相关的上下文503B添加到所述管理数据结构350。
此时,层520E已从所述执行数据结构355E中移除,所述执行数据结构355E是空的。所述事件功能模块334可以开始搜索第一租户(t1)之外的其它租户请求的功能103以及其它租户已提供的输入事件,以确定是否可以为其它租户执行其它功能。这样,当租户(t1)的功能103等待输入事件时,所述云计算设备300继续为其它租户执行功能103。
在一实施例中,所述事件功能模块334可以确定所述等待事件数据结构345包括第二租户(t2)的输入事件E6 553,被标记为就绪状态(即,已接收并存储在所述云计算设备300中)。在一实施例中,所述事件功能模块334可以确定与第二租户(t2)的功能F4 550相关的上下文504存储在所述管理数据结构350中,可以指示在执行功能F4 550期间可以使用的一些中间变量或其它数据。在一实施例中,与功能F4 550相关的上下文504可以从所述管理数据结构350中移除,并且与功能F4 550相关的数据可以添加回所述执行数据结构355F的层520F和条目505F处。第二租户(t2)的输入事件E6 553可以从所述入口事件数据结构406进行检索,并添加到所述执行数据结构355F的层520F和条目510F。可以使用第二租户(t2)的输入事件E6 553执行功能F4 550以产生第二租户(t2)的输出事件E5 556。在输出事件E5546可以用作另一功能103的输入事件的情况下,输出事件E5 546可以添加到所述执行数据结构355F的层520F和条目515F处。
如图5A和图5B所示的示例所述,执行将与功能103相关的数据从所述执行数据结构355换出并换入所述管理数据结构350的进程,以响应确定功能103仍在等待接收输入事件。在一实施例中,可以执行将与功能103相关的数据从所述执行数据结构355换出并换入所述管理数据结构350的进程,来响应在执行所述功能103期间调用的Wait()API。例如,所述事件功能模块334可以遍历所述功能103的代码以执行所述功能103,当所述事件功能模块334识别出在所述功能103的代码中调用的Wait()API时,所述事件功能模块334在所述管理数据结构350中存储与所述功能103相关的数据,并从所述执行数据结构355中移除与所述功能103相关的数据。
图6是示出所述等待事件数据结构345和所述管理数据结构350之间关系的图600。在一实施例中,所述等待事件数据结构345存储与某些功能103等待在所述云计算设备300处接收的输入事件606、612和615相关的数据。在一实施例中,所述等待事件数据结构345可以在所述等待事件数据结构345处存储对应于每个输入事件606、612和615的实际数据。在一实施例中,所述等待事件数据结构345可以存储对应于每个输入事件606、612和615的实际数据的指针或所述实际数据存储在所述云计算设备300处的地址。
在一实施例中,所述管理数据结构350使用哈希表618A至618C存储功能103等待接收的输入事件606、612、615、621和624与各种租户的功能上下文633之间的映射。在一实施例中,每个输入事件606、612、615、621和624基于输入事件606、612、615、621和624存储在哈希表618A至618C中。所述功能上下文633存储与代表各种租户执行的多个不同功能103相关的上下文636、639、640、641和644(类似于图5A和5B中的上下文503A和503B及504)。在一实施例中,所述管理数据结构350可以在功能上下文633处存储与每个功能103相关的实际上下文636、639、640、641和644,例如软件组件和中间变量。在一实施例中,所述功能上下文633可以包括指向与每个功能103相关的上下文636、639、640、641和644的指针。
此外,图6还在框647、650、653和656中示出了代表不同租户(t1至tx)执行的不同功能F4 103的示例,在所述示例中可以有代表任意数量的租户(t1至tx)执行的任意数量的功能F4 103。例如,框647示出了可以包括在租户(t1)的功能F4 103中的代码的一部分的示例;框650示出了可以包括在租户(t2)的功能F4103中的代码的一部分的示例;框653示出了可以包括在租户(t3)的功能F4 103中的代码的一部分的示例;框656示出了可以包括在租户(tx)的功能F4 103中的代码的一部分的示例。
在一说明性示例中,所述等待事件数据结构345已包括代表租户(t2)执行的功能F4 103的输入事件E3 615,这表示代表租户(t2)执行的功能F4 103正在等待输入事件E3615。此外,假设所述事件调度器417代表租户(t2)执行功能F4 103,如框656所示,所述执行包括在所述等待(E6)调用之前在所述代码的第667行计算值(tx)的中间变量670。例如,所述中间变量670可以是for循环中的循环计数变量,指示一旦接收到输入事件E3 615之后所述for循环应继续的位置。
在一实施例中,所述功能运行时间414可以确定输入事件E6 606是否可用于代表租户(t2)输入到功能F4 103中。例如,所述功能运行时间414可以检查所述入口事件数据结构406或所述等待事件数据结构345中的输入事件的状态,以确定输入事件E6 606是否可用于代表租户(t2)输入到功能F4 103中。如果输入事件E6 606可用于代表租户(t2)输入到功能F4 103中,则所述功能运行时间414在所述执行数据结构355中重新定义输入事件E6606,以使所述事件调度器417开始代表租户(t2)执行功能F4 103。如果输入事件E6 606不可用于代表租户(t2)输入到功能F4 103中,则所述等待(E6)调用可以触发所述换出进程发生。
在一实施例中,所述换出进程涉及:代表租户(tx)将输入事件E6 606添加到所述等待事件数据结构345中;将数据644添加到功能上下文633;代表租户(t2)从所述执行数据结构355中移除与功能F4 103相关的数据。例如,所述功能事件模块334在所述等待事件数据结构345中添加条目,所述条目指示代表租户(tx)执行的功能F4 103正在等待输入事件E6 606;其中,所述输入事件E6 606是待定输入事件。所述功能事件模块334还将上下文644添加到所述管理数据结构350的所述功能上下文633,其中上下文644可以包括值(tx)的中间变量670或指向值(tx)的中间变量670的指针。所述功能事件模块334还可以代表租户(t2)从所述执行数据结构355中移除与功能F4 103相关的任何数据。
此外,假设所述事件调度器417代表另一个租户(t5)启动执行功能F4 103,这需要尚未接收到或计算的其它输入事件E4 612。在此情况下,由于代表租户(t5)的功能F4 103需要另一个输入事件,因此可以代表所述租户(t5)为功能F4 103触发换出进程。所述换出进程可以涉及:代表租户(t5)将输入事件E4 612添加到所述等待事件数据结构345中;代表租户(t5)将与功能F4 103相关的上下文添加到所述功能上下文633;代表租户(t5)从所述执行数据结构355中移除与功能F4 103相关的数据。
在一实施例中,所述管理数据结构350用于:存储存储在所述等待事件数据结构345处的输入事件与存储在所述功能上下文633处的每个功能103的所述上下文之间的映射。例如,所述管理数据结构350存储多个事件哈希表618A至618C,其中每个待定哈希表618A至618C存储来自许多不同租户的特定输入事件的数据。在一实施例中,所述事件哈希表618A至618C和所述功能上下文633存储在所述管理数据结构350处。
事件哈希表618A存储输入事件E3 621和615的数据,其中输入事件E3 621用于租户(t1),输入事件E3 615用于租户(t2);输入事件E3 621和615可以是相同类型的输入事件。事件哈希表618B存储输入事件E4 624和612的数据,其中输入事件E4 624用于租户(t3),输入事件E4 612用于租户(t5);输入事件E4 624和612可以是相同类型的输入事件。事件哈希表618C存储用于租户(tx)的输入事件E6 606的数据。虽然仅示出了三个事件哈希表618A至618C,但应理解的是,基于包括在所述等待事件数据结构345中的任何输入事件,可以有任意数量的事件哈希表618。
所述事件哈希表618A至618C中的每个输入事件可以用作与所述功能上下文633中的功能103相关的对应上下文636、639、640、641或644的索引。如图6所示,输入事件E3 621映射至与代表租户(t1)执行的功能F4相关的上下文636,这样,输入事件E3 621是映射至所述管理数据结构350内的上下文636的索引。输入事件E3 615映射至与代表租户(t2)执行的功能F4相关的上下文639,这样,输入事件E3 615是映射至所述管理数据结构350内的上下文639的索引。输入事件E4 624映射至与代表租户(t3)执行的功能F4相关的上下文641,这样,输入事件E4 624是映射至所述管理数据结构350内的上下文641的索引。输入事件E4612映射至与代表租户(t5)执行的功能F4相关的上下文640,这样,输入事件E4 612是映射至所述管理数据结构350内的上下文640的索引。输入事件E6 606映射至与代表租户(tx)执行的功能F4相关的上下文644,这样,输入事件E6 606是映射至所述管理数据结构350内的上下文644的索引。
在一些实施例中,所述管理数据结构350将所述等待事件数据结构345中的所述输入事件重组到事件哈希表618A至618C中,这使得所述管理数据结构350能够被所述云计算设备300有效地使用。例如,所述云计算设备300可以使用所述等待事件数据结构345和所述功能上下文366之间的映射机制在所述云计算设备300处执行功能103,同时最小化在执行事件驱动功能300期间发生的延迟。
图7是示出根据本发明各种实施例的处理来自所述等待事件数据结构345的输入事件的方法700的图,其中所述处理是基于所述输入事件是处于就绪状态或待定状态进行的。方法700可以由所述处理器实现,所述处理器执行所述事件功能模块334、所述事件调度器417或所述功能运行时间414以实现方法700的步骤。
在一实施例中,所述等待事件数据结构345中的输入事件会进行排序并依照先入先出数据结构进行处理。在一实施例中,所述等待事件数据结构345中的每个事件基于所述输入事件是否准备就绪可由功能103处理而被标记为待定状态或就绪状态。当输入事件尚未从外部远程源获得或尚未在所述云计算设备300处计算时,所述输入事件被标记为待定状态。当输入事件已从外部远程源获得或已在所述云计算设备300处计算时,所述输入事件被标记为就绪状态。例如,包括在所述等待事件数据结构345中的输入事件606、612和615在最初添加到所述等待事件数据结构345中时均可以被标记为待定状态。随着时间的推移,当输入事件606、612和615从外部远程源接收到或在所述云计算设备300处内部计算(作为另一功能103的输出事件)时,输入事件606、612和615会变为就绪状态。
在所述方法700中,假设输入事件615在所述等待事件数据结构345中被标记为就绪状态,并且输入事件612和615在所述等待事件数据结构345中被标记为待定状态。输入事件606、612和615按照最初放入所述等待事件数据结构345时的顺序并且基于所述输入事件606、612和615是处于就绪状态还是处于待定状态进行处理(作为对应功能103的输入提供)。
在步骤703,可以使用输入事件E2 615代表租户(t5)执行功能F3 701,这导致生成输出事件E4 612。可以遍历所述等待事件数据结构345以确定输入事件E4 612是否包括在所述等待事件数据结构345中。如图7所示,输入事件E4 612包括在所述等待事件数据结构345中,并且输入事件E4 612的状态可以从待定状态更改为就绪状态,以响应功能F3 703生成输出事件E4 612。
在步骤706,所述计算设备300可以接收来自远程状态查询421的响应,以响应将所述远程状态查询421发送到所述远程状态存储器403以获取一些随后可以代表租户(tx)用作输入事件E6 606的数据。与步骤703类似,可以遍历所述等待事件数据结构345以确定输入事件E6 606是否包括在所述等待事件数据结构345中。如图7所示,输入事件E6 606包括在所述等待事件数据结构345中,并且输入事件E6 606的状态可以从待定状态更改为就绪状态,以响应功能F3 703生成输出事件E4 612。
在一实施例中,所述事件调度器417可以用于:访问所述等待事件数据结构345以从所述等待事件数据结构345中获取先放入所述等待事件数据结构345且处于就绪状态的输入事件。例如,假设输入事件E3 615第一个被放入所述等待事件数据结构345,输入事件E6 606第二个被放入所述等待事件数据结构345,输入事件E4 612第三个被放入所述等待事件数据结构345。在这种情况下,输入事件E3 615先被放入所述等待事件数据结构345,并且因为输入事件E3 615处于就绪状态所以输入事件E3 615先被处理。
在步骤709,所述管理数据结构350可以基于所述功能上下文533确定对应于输入事件E3 615的所述功能103。如图7所示,代表租户(t2)执行的功能F4 103对应于输入事件E3 615。在一实施例中,映射至输入事件E4 615的上下文639可以换回到所述执行数据结构355。将上下文639从所述管理数据结构350换到所述执行数据结构355涉及:从所述管理数据结构350获取上下文639;根据图5A和5B所述的方法将上下文639添加回所述执行数据结构355。代表租户(t2)的功能F4 103的执行可以基于从所述管理数据结构350接收的上下文639和新准备好的输入事件E3 615使用输入事件E3 615重新开始。
根据各种实施例,所述等待事件数据结构345和所述管理数据结构350可以控制在所述云计算设备300处执行的功能103的并发问题。在一些情况下,所述等待事件数据结构345的大小和所述管理数据结构350的大小与异步事件(例如,等待接收或基于对所述wait()API的调用而等待的输入事件)的延迟成正比。在一实施例中,不需要使用其它控制器或外部设备来实现本文所述的事件驱动功能执行机制,所述事件驱动功能执行机制可最小化在执行功能103之间发生的延迟时间。事件的并行处理可以自主调整,并且可以迅速地对延迟变化做出反应。
图8是示出根据本文所公开的各种实施例的各功能103在所述云计算设备300内执行时所依据的执行优先级800的图。图8所示的图包括所述等待事件数据结构345中的输入事件606、612和615、所述执行数据结构355中的输入事件803、806和809,以及所述入口事件数据结构406中的输入事件813和816。虽然该图仅示出了所述等待事件数据结构345、执行数据结构355和入口事件数据结构406中的有限数量的输入事件,但应理解的是,所述等待事件数据结构345、执行数据结构355和入口事件数据结构406可以包括任意数量的输入事件。
图8中所示的箭头820示出了各功能在所述云计算设备300内由所述事件调度器417等执行时所依据的执行优先级800的方向。如箭头820所示,所述事件调度器417可以先检查所述等待事件数据结构345中被标记为就绪状态的输入事件(例如,准备就绪可由相应的功能103执行)。例如,可以基于所述先入先出队列数据结构处理方案来解析所述等待事件数据结构345,以确定第一个放入所述等待事件数据结构345且被标记为处于就绪状态的输入事件。当输入事件被标记为就绪状态时,所述事件调度器417可以基于图5A和5B所述的方案将所述事件放入对应功能103的所述执行数据结构355中。
如箭头820所示,如果所述等待事件数据结构345中没有标记为就绪状态的输入事件,则所述事件调度器417接下来可以检查所述执行数据结构355中的顶层(剩余)输入事件进行处理。例如,所述事件调度器417可以基于预先确定的时间间隔或在功能执行期间定期检查所述等待事件数据结构345是否存在被标记为就绪状态的输入事件。当所述等待事件数据结构345中没有标记为就绪状态的输入事件时,所述事件调度器417可以执行位于所述执行数据结构355中的最顶层功能103。
如箭头820所示,如果所述等待事件数据结构345中没有标记为就绪状态的输入事件,并且所述执行数据结构355中也没有可用的功能103或输入事件,则所述事件调度器417可以检索所述入口事件队列406中的输入事件进行处理。这样,除非在所述等待事件数据结构345中或所述执行数据结构355中没有其它准备就绪可执行的输入事件,所述事件调度器417不会处理所述入口事件队列406中的输入事件。
图9是根据本发明各种实施例的用于实现事件驱动功能103执行的方法900的流程图。方法900可以由处理器池330实现,所述处理器池330执行所述事件功能模块334以执行方法900。可以执行方法900以响应确定功能103正在等待输入事件,所述确定是基于所述功能中的Wait()调用或基于尚未接收到所述功能的输入事件的确定进行的。
在步骤903,从执行数据结构355中移除与功能103相关的数据,以响应确定所述功能103正在等待输入事件。所述数据可以包括在所述执行数据结构355的层520和525中。所述事件功能模块334可以用于从所述执行数据结构355中移除与功能103相关的数据。
在步骤906,在所述功能103等待所述输入事件时,将与所述功能相关的上下文添加到管理数据结构350。在一实施例中,与所述功能103相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量。在一实施例中,所述事件功能模块334可以用于将与所述功能103相关的数据添加到所述管理数据结构350。
在步骤908,可以执行所述功能103以响应接收到所述输入事件。例如,所述事件功能模块334或所述事件调度器417可以执行所述功能来以类似于方法700的方式响应接收到所述输入事件。
在步骤909,可以从所述管理数据结构中移除与所述功能103相关的所述上下文,以响应接收到所述输入事件。在一实施例中,所述事件功能模块334可以用于从所述管理数据结构350中移除与所述功能103相关的数据。
本发明的各实施例使云计算设备能够在执行事件驱动功能时以更恒定的吞吐量(没有经历一样多的延迟)进行操作。本发明的各实施例还在执行事件驱动功能时发生的延迟期间提高了CPU效率,这是通过根据输入事件准备就绪的时间自主调整输入事件实现的。本文公开的实施例不需要调度器来调整等待功能协同例程的数量。相反,所述云计算设备根据远程输入/输出延迟立即自动调整等待功能协同例程的数量,这比多线程方法中使用的周期性调整快得多。其结果是,利用本文公开的实施例的所述云计算设备的吞吐量比使用多线程方法的云计算设备的吞吐量高30%至60%。因此,本文公开的用于执行事件驱动功能的各实施例比线程调度更有效率。
在一实施例中,本发明包括一种装置,所述装置包括用于[这将在完成权利要求书时完成]的装置。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为耦合的其它项可以直接耦合或者可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。

Claims (20)

1.一种由云计算设备实现的方法,其特征在于,包括:
所述云计算设备从执行数据结构中移除与功能相关的数据,以响应确定所述功能正在等待输入事件;
在所述功能等待所述输入事件时,所述云计算设备向管理数据结构添加与所述功能相关的上下文;其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;
所述云计算设备通过事件调度器确定使用所述输入事件执行所述功能,以响应接收到所述输入事件;其中,所述事件调度器用于调配所述输入事件的执行时间;
所述云计算设备从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
2.根据权利要求1所述的方法,其特征在于,还包括:在所述功能等待所述输入事件时,所述云计算设备执行所述执行数据结构中的一个或多个其它功能;其中,所述执行数据结构包括多个层,每一层对应于所述其它功能中的不同功能。
3.根据权利要求1所述的方法,其特征在于,所述管理数据结构包括多个不同功能的上下文,其中每个功能分别等待输入事件。
4.根据权利要求1所述的方法,其特征在于,还包括:所述云计算设备存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个输入事件分别等待由相应的功能接收。
5.根据权利要求4所述的方法,其特征在于,还包括:所述云计算设备基于所述输入事件在所述等待事件数据结构中处于就绪状态来确定所述输入事件已被接收。
6.根据权利要求1所述的方法,其特征在于,所述功能与所述云计算设备的第一租户相关联,其中,接收的所述输入事件与所述云计算设备的所述第一租户相关联。
7.根据权利要求1所述的方法,其特征在于,在从所述执行数据结构中移除与所述功能相关的数据以及在等待所述输入事件之前,所述功能被第二输入事件部分地执行。
8.根据权利要求7所述的方法,其特征在于,所述中间变量被计算以响应部分地执行所述功能。
9.一种实现为计算设备的装置,其特征在于,包括:
存储器,其包括指令;
一个或多个处理器,其与所述存储器进行通信,所述一个或多个处理器用于执行所述指令以:
从执行数据结构中移除与功能相关的数据,以响应确定所述功能正在等待输入事件;
在所述功能等待所述输入事件时,向管理数据结构添加与所述功能相关的上下文;其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;
通过事件调度器确定使用所述输入事件执行所述功能,以响应接收到所述输入事件;其中,所述事件调度器用于调配所述输入事件的执行时间;
从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
10.根据权利要求9所述的装置,其特征在于,与所述功能相关的所述软件组件包括指向所述软件组件的指针。
11.根据权利要求9所述的装置,其特征在于,所述执行数据结构包括所述功能的条目、所述输入事件的条目以及输出事件的条目。
12.根据权利要求9所述的装置,其特征在于,所述执行数据结构是堆栈。
13.根据权利要求9所述的装置,其特征在于,所述一个或多个处理器还被配置为执行指令以在所述功能等待所述输入事件时,执行所述执行数据结构中的一个或多个其它功能;其中,所述执行数据结构包括多个层,每一层对应于所述其它功能中的不同功能。
14.根据权利要求9所述的装置,其特征在于,所述管理数据结构包括多个不同功能的上下文,其中每个功能分别等待输入事件。
15.根据权利要求9所述的装置,其特征在于,所述一个或多个处理器还被配置为执行所述指令以存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个所述输入事件分别等待由相应的功能接收。
16.一种非瞬时性计算机可读介质,其特征在于,用于:存储包括计算机可执行指令的计算机程序产品,当所述计算机可执行指令由处理器执行时使得所述处理器:
从执行数据结构中移除与功能相关的数据,以响应确定所述功能正在等待输入事件;
在所述功能等待所述输入事件时,向管理数据结构添加与所述功能相关的上下文;其中,与所述功能相关的所述上下文包括与所述功能相关的软件组件及与所述功能相关的中间变量;
通过事件调度器确定使用所述输入事件执行所述功能,以响应接收到所述输入事件;其中,所述事件调度器用于调配所述输入事件的执行时间;
从所述管理数据结构中移除与所述功能相关的所述上下文,以响应接收到所述输入事件。
17.根据权利要求16所述的非瞬时性计算机可读介质,其特征在于,所述计算机可执行指令在由所述处理器执行时还使得所述处理器在使用所述输入事件执行所述功能之前将与所述功能相关的数据添加回所述执行数据结构。
18.根据权利要求16所述的非瞬时性计算机可读介质,其特征在于,在从所述执行数据结构中移除与所述功能相关的数据以及等待所述输入事件之前,所述功能被第二输入事件部分地执行。
19.根据权利要求16所述的非瞬时性计算机可读介质,其特征在于,所述执行数据结构包括所述功能的条目、所述输入事件的条目以及输出事件的条目。
20.根据权利要求16所述的非瞬时性计算机可读介质,其特征在于,所述计算机可执行指令在由所述处理器执行时还使得所述处理器存储等待事件数据结构,所述等待事件数据结构维护多个输入事件,其中每个所述输入事件分别等待由相应的功能接收。
CN201880049196.XA 2017-08-24 2018-08-09 自适应无服务器功能管理 Active CN110998532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310647164.2A CN117130734A (zh) 2017-08-24 2018-08-09 自适应无服务器功能管理

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762549640P 2017-08-24 2017-08-24
US62/549,640 2017-08-24
US16/054,541 2018-08-03
US16/054,541 US10642648B2 (en) 2017-08-24 2018-08-03 Auto-adaptive serverless function management
PCT/CN2018/099539 WO2019037601A1 (en) 2017-08-24 2018-08-09 FUNCTION MANAGEMENT WITHOUT SELF-ADAPTIVE SERVER

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310647164.2A Division CN117130734A (zh) 2017-08-24 2018-08-09 自适应无服务器功能管理

Publications (2)

Publication Number Publication Date
CN110998532A CN110998532A (zh) 2020-04-10
CN110998532B true CN110998532B (zh) 2023-06-02

Family

ID=65437191

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880049196.XA Active CN110998532B (zh) 2017-08-24 2018-08-09 自适应无服务器功能管理
CN202310647164.2A Pending CN117130734A (zh) 2017-08-24 2018-08-09 自适应无服务器功能管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310647164.2A Pending CN117130734A (zh) 2017-08-24 2018-08-09 自适应无服务器功能管理

Country Status (4)

Country Link
US (1) US10642648B2 (zh)
EP (1) EP3655858A4 (zh)
CN (2) CN110998532B (zh)
WO (1) WO2019037601A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11960940B2 (en) * 2018-05-29 2024-04-16 Telefonaktiebolaget Lm Ericsson (Publ) Performance of function as a service
US10769058B1 (en) * 2019-05-30 2020-09-08 Capital One Services, Llc Generic serverless performance testing framework
US11625230B2 (en) 2020-09-22 2023-04-11 Cisco Technology, Inc. Identifying execution environments for deploying network functions
US11442703B2 (en) * 2020-09-22 2022-09-13 Cisco Technology, Inc. Domain-specific language for serverless network functions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102047217A (zh) * 2008-06-02 2011-05-04 微软公司 重新获取对执行外部执行上下文的处理资源的控制
CN102541651A (zh) * 2011-12-12 2012-07-04 华中科技大学 一种嵌入式虚拟机的实时调度系统
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US8832698B1 (en) * 2007-12-31 2014-09-09 Emc Corporation Event-driven state thread architecture
US8973016B1 (en) * 2014-03-28 2015-03-03 Google Inc. Processing an input event within an application

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
JP3882760B2 (ja) * 2003-02-18 2007-02-21 株式会社デンソー タスク間通信方法、プログラム、記録媒体、電子機器
CN1829958A (zh) * 2003-04-28 2006-09-06 皇家飞利浦电子股份有限公司 并行处理系统
US7451297B2 (en) * 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
US8640140B2 (en) * 2010-10-25 2014-01-28 Samsung Electronics Co., Ltd. Adaptive queuing methodology for system task management
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9064380B2 (en) * 2012-07-13 2015-06-23 Video Gaming Technologies, Inc. System and method for enabling a player proxy to execute a gaming event
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
CN103257893B (zh) * 2013-05-28 2016-06-15 腾讯科技(深圳)有限公司 一种获取输入事件状态的方法、装置和系统
US9563585B2 (en) * 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
LU92456B1 (en) 2014-05-19 2015-11-20 Univ Luxembourg Method and device for allocating computing resources in the distributed processing of database queries
US9641580B2 (en) 2014-07-01 2017-05-02 Microsoft Technology Licensing, Llc Distributed stream processing in the cloud
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
WO2017129228A1 (en) 2016-01-26 2017-08-03 Telefonaktiebolaget Lm Ericsson (Publ) Technique for determining a load of an application
US10063666B2 (en) 2016-06-14 2018-08-28 Futurewei Technologies, Inc. Modular telecommunication edge cloud system
CN106201689B (zh) * 2016-07-07 2019-10-18 哈尔滨工程大学 一种具有时序控制的多队列事件注入装置和方法
US10701160B2 (en) * 2016-07-28 2020-06-30 Polybit Inc. System and method for a unified interface to networked webservices
US10713089B2 (en) * 2017-05-20 2020-07-14 Cavium International Method and apparatus for load balancing of jobs scheduled for processing
US11050607B2 (en) * 2017-06-21 2021-06-29 Red Hat, Inc. Proxy with a function as a service (FAAS) support
US10860390B2 (en) * 2017-06-28 2020-12-08 Intel Corporation Microservices architecture
US11075982B2 (en) * 2017-07-10 2021-07-27 Nokia Solutions And Networks Oy Scaling hosts in distributed event handling systems
US11385944B2 (en) * 2017-07-10 2022-07-12 Nokia Solutions And Networks Oy Event handling in distributed event handling systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832698B1 (en) * 2007-12-31 2014-09-09 Emc Corporation Event-driven state thread architecture
CN102047217A (zh) * 2008-06-02 2011-05-04 微软公司 重新获取对执行外部执行上下文的处理资源的控制
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
CN102541651A (zh) * 2011-12-12 2012-07-04 华中科技大学 一种嵌入式虚拟机的实时调度系统
US8973016B1 (en) * 2014-03-28 2015-03-03 Google Inc. Processing an input event within an application

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
William Tärneberg等.Experiences creating a framework for smart traffic control using AWS IOT.《Proceedings of the 9th International Conference on Utility and Cloud ComputingDecember 2016》.2016,63-69. *
姚锡凡等.面向云制造服务架构及集成开发环境.《计算机集成制造系统 》.2012,第18卷(第10期),2312-2322. *

Also Published As

Publication number Publication date
US20190065238A1 (en) 2019-02-28
CN110998532A (zh) 2020-04-10
WO2019037601A1 (en) 2019-02-28
EP3655858A4 (en) 2020-06-24
EP3655858A1 (en) 2020-05-27
CN117130734A (zh) 2023-11-28
US10642648B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
CN110998532B (zh) 自适应无服务器功能管理
US20190377604A1 (en) Scalable function as a service platform
US10713088B2 (en) Event-driven scheduling using directed acyclic graphs
US10761882B2 (en) Live virtual machine migration quality of service
US20220391260A1 (en) Method and Apparatus for Creating Container, Device, Medium, and Program Product
US10733019B2 (en) Apparatus and method for data processing
US10887202B2 (en) Pre-starting services based on traversal of a directed graph during execution of an application
CN110166507B (zh) 多资源调度方法和装置
WO2022132233A1 (en) Multi-tenant control plane management on computing platform
US10977007B2 (en) Apparatus and method for executing function
WO2018005500A1 (en) Asynchronous task management in an on-demand network code execution environment
KR20150117258A (ko) 분산형 컴퓨팅 아키텍쳐
US11816469B2 (en) Resolving the version mismatch problem when implementing a rolling update in an open-source platform for container orchestration
US10802874B1 (en) Cloud agnostic task scheduler
US11561843B2 (en) Automated performance tuning using workload profiling in a distributed computing environment
CN110968422A (zh) 用于集成场景的负载分发
US10198291B2 (en) Runtime piggybacking of concurrent jobs in task-parallel machine learning programs
US20230289214A1 (en) Intelligent task messaging queue management
Pawar et al. A review on virtual machine scheduling in cloud computing
US11263130B2 (en) Data processing for allocating memory to application containers
EP3985506B1 (en) Utilizing models for concurrently discovering network resources of a network
US11768704B2 (en) Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling
CN116308790A (zh) 交易请求的资源调用方法、系统、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant