CN112470126B - 功能即服务的提高的性能 - Google Patents
功能即服务的提高的性能 Download PDFInfo
- Publication number
- CN112470126B CN112470126B CN201880095818.2A CN201880095818A CN112470126B CN 112470126 B CN112470126 B CN 112470126B CN 201880095818 A CN201880095818 A CN 201880095818A CN 112470126 B CN112470126 B CN 112470126B
- Authority
- CN
- China
- Prior art keywords
- function
- execution
- data
- key
- during
- 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
Links
- 230000006870 function Effects 0.000 title claims description 212
- 238000000034 method Methods 0.000 claims description 64
- 230000008569 process Effects 0.000 claims description 35
- 230000014509 gene expression Effects 0.000 claims description 10
- 230000001960 triggered effect Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000001994 activation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种FaaS***(100)包括多个执行节点(110)。在***(100)中接收软件包(190),软件包(190)包括要在FaaS***(100)中被执行的功能(101)。获得与功能(101)将要在执行期间访问的数据相关的数据位置信息。基于该数据位置信息,确定功能(101)要在其中被执行的执行节点(111)。功能(101)被加载到所确定的执行节点(111)中并在所确定的执行节点(111)中执行。
Description
技术领域
本文的实施例涉及一种由功能即服务(FaaS)***执行的方法、计算机***、计算机程序以及载体,该FaaS***包括多个执行节点。
背景技术
功能即服务(FaaS)是一种新兴的云计算范例,通常也被称为无服务器计算。在传统的“有服务器”范例中,程序员创建服务器,然后在云中启动该服务器并且长时间运行以接收和服务请求。相比之下,FaaS是无服务器的,程序员仅指定具有触发器的功能(或过程),并且当触发器触发时,云执行该功能。这允许程序员仅专注于手头的任务(即,功能实际执行的任务),并且使他/她无需编写围绕功能的包装器(例如,事件接收、排队、事件循环、负载平衡、缩放)。
功能不在执行之间保留状态,而是从数据库读取数据,执行工作并将结果写回到数据库。这被称为状态外部化,并且可以被应用于有服务器计算。这对于缩放和故障转移很有用—实际处理数据的工作进程不保留长期存在的状态,因此如果该工作进程失败,则很容易启动新的工作进程,该新的工作进程将具有与失败的进程相同的数据访问。相比之下,假如数据已被封装在工作进程中,则数据将在工作进程崩溃时丢失。类似地,如果由于缩放,计算负载必须在工作进程之间以不同方式被分配,则必须编写软件代码以在工作进程封装数据的情况下,在工作进程之间交换相关的上下文。借助外部化的数据,重新安排哪些(和多少)工作进程来处理哪些数据是容易的。按照定义,功能不长时间存储数据,因为它们的寿命不长。因此,默认情况下,无服务器***使用状态外部化。
功能可以轻松地同时以数个副本运行(每个副本响应不同的触发器触发)。在FaaS中,程序员并不确切知道其功能在何处被执行。通常,云***将功能的副本分配给形式为服务器刀片的一组执行节点,每个服务器刀片变得能够运行该功能。在触发时,云***通常以循环方式选择一个服务器刀片,并且执行该功能。
FaaS服务现已投入使用。诸如Amazon、Google和Microsoft之类的云计算提供商提供了这样的服务(例如,Lambda、Google Functions和Azure Functions)。通常,触发器是对统一资源定位符(URL)的请求、数据库的更改、定时器或某个其他***事件。通常,服务是按照功能运行多少时间(向上凑整到例如100ms)来被计费的,并且在功能的触发与执行之间可能具有显著延迟(例如100-1000ms)。这防止了完整应用的分解以及将它们传送到FaaS,因为包括应用的功能之间的交互太慢。
例如,通过使用内存中数据库(in-memory database),FaaS原理可以被更快地实现,在内存中数据库中,值的更改在几微秒(1-2μs)内产生通知(如果两个进程在同一服务器刀片上),或者在10-20μs内产生通知(如果两个进程在服务器刀片之间被单个以太网跳分隔开)。(即,与其中一个功能正在写入键的数据库的交互触发侦听该键的另一个功能。)如果功能执行响应于更改的值而几乎如此之快,则可以将整个应用构建为交互功能实例。
形式为内存中键-值存储库(KVS)的数据库通常在数个服务器刀片上的云环境中以分布式方式运行以实现伸缩性。这些服务器刀片可以被以两种主要方式来组织。一种方式(最常见)是数据库计算键的散列,并且使用该散列来确定数据应被存储在哪个可用的服务器刀片中。这允许所有服务器刀片进行快速访问,因为仅通过知道键即可轻松计算数据驻留的位置。该方法的缺点是数据基本上以随机方式分布。如果被存储在不同的键名称下,则即使相关的数据(例如,应用始终一起使用的数据)也可能位于完全不同的位置处。
用于组织键-值存储库的另一种方式是维护键与数据位置之间的映射(通过对键进行散列,映射通常也以分布式方式被存储)。这具有以下缺点:任何需要访问数据的功能必须首先查找映射以获得数据所在的位置。另一方面,一旦该查找完成,数据访问只是与前一种方法一样快。此外,这允许将数据移动到最佳位置,这可以有助于使得后续数据访问更快(如果数据被移动到最常被使用的位置)。但是,如果存在读取或写入不同服务器刀片上的数据的多个主要访问器,则此第二种方法的数据迁移能力不足。在这种情况下,没有用于数据的良好位置,因为无论数据被放置在何处,访问该数据的某个其他进程将在另一个服务器刀片上。
现有技术公开的一个示例是国际专利申请公开WO 2017/207049,其公开了监视在网络节点处的多个资源之间的数据传输。标识被监视数据传输中的模式,并且基于所标识的被监视数据传输中的模式来适配网络节点处的资源分配。
发明内容
鉴于以上所述,本公开的目标是克服与FaaS***中的功能执行的性能相关的缺点。
在第一方面,通过一种由FaaS***执行的方法来实现该目标,所述FaaS***包括多个执行节点。所述方法包括:接收包括要在所述FaaS***中被执行的功能的软件包。获得与所述功能将要在执行期间访问的数据相关的数据位置信息。然后基于所述数据位置信息,确定所述功能要在其中被执行的执行节点。所述功能被加载到所确定的执行节点中并在所确定的执行节点中执行。
确定所述功能要在其中被执行的执行节点可以包括:确定所述执行节点是所述功能将要在执行期间访问的数据所在的节点,替代地,确定所述执行节点是至少一个进程正在其中执行并且正在访问所述功能将要在执行期间访问的数据的节点。
换句话说,这样的方法认识到在FaaS上下文中没有长期存在的访问器,而是具有不在执行之间保留状态信息和数据的短期存在的功能实例。与这一事实相关的缺点至少被减少,因为每次功能在FaaS***中被执行时,FaaS***选择功能在何处被执行。访问相同数据的功能由此被控制为尽可能多地在同一执行节点(例如服务器刀片)上执行。获得与功能将要在其执行期间访问的数据相关的位置信息使得FaaS***能够在该数据附近或在使用该数据的其他进程(即,其他功能或相同功能的实例)附近执行该功能。这样的方法的优势是功能之间的快速交互。这使得能够将软件应用分解为一组互通功能。程序员将不必考虑分布,因为云***(即,FaaS***)将数据和功能的执行始终安排为彼此靠近,从而几乎不需要等待数据。
在各种实施例中,所述软件包包括与用于所述功能的触发器相关的信息。在这样的实施例中,获得数据位置信息的步骤可以包括:使用与触发器相关的所述信息,计算用于在所述功能的所述执行期间从键-值存储库中取得值的一组一个或多个键。然后,使用所计算的一组一个或多个键,向所述键-值存储库查询所述数据位置信息。
换句话说,可以(例如,由功能软件的程序员)以功能清单的形式提供与用于功能的触发器相关的信息,功能清单被用于计算功能在执行期间将访问的一些或所有键。这样的清单可以采用各种数据结构的形式,如在以下详细描述中更详细地例示的那样。
在各种实施例中,获得数据位置信息的步骤包括:接收用于在所述功能的所述执行期间从键-值存储库中取得值的一组一个或多个键。然后,使用所接收的一组一个或多个键,向所述键-值存储库查询所述数据位置信息。
换句话说,在这样的实施例中,当功能作为激活过程的一部分而被激活时,提供用于访问键-值存储库的一组键。
在各种实施例中,在所述功能的所述执行期间记录与所述功能在所述执行期间使用哪些键有关的信息。在这样的实施例中,获得数据位置信息的步骤包括:取得与所述功能在先前的执行期间已使用哪些键有关的信息。分析所取得的与所述功能在先前的执行期间已使用哪些键有关的信息,以及使用所述分析的结果,向所述键-值存储库查询所述数据位置信息。
换句话说,与功能在先前的执行期间已使用哪些键有关的“历史”信息被用于预测该功能在该执行期间将使用哪个键或哪些键。
在另一个方面,提供一种包括多个服务器刀片的计算机***,每个服务器刀片包括处理器和存储器。所述存储器包含能够由所述处理器执行的指令,由此所述计算机***可操作以执行如上面结合第一方面概述的方法。
在另一个方面,提供了包括指令的计算机程序,所述指令当在至少一个处理器上被执行时,使得处理器执行根据上述方面所述的任何方法。在又一个方面,提供一种包括这样的计算机程序的载体,其中,所述载体是电信号、光信号、无线电信号以及计算机可读存储介质中的一个。
这些其他方面以及这些其他方面的实施例提供了与上面结合第一方面的方法概述的效果和优势相同的的效果和优势。
附图说明
图1a和1b示意性地示出了FaaS***;
图2a-d是方法的流程图;
图3示意性地示出了计算机***;以及
图4示意性地示出了计算机***。
具体实施方式
首先转到图1a,FaaS***100包括形式为多个服务器刀片的硬件110,在图1a中列举了其中的两个111、112。硬件110中的服务器刀片的总数可以是数千个。每个服务器刀片111、112包括形式为至少一个处理器142、152的处理电路以及保存数据161、162的存储器143、153。数据161、162以概念方式示出,并且要理解,数据161、162表示所有类型的数据,包括由服务器刀片111、112中的处理器142、152在FaaS***100中执行的各种功能和服务所利用的软件指令和数据。
虚拟化层120是软件层,虚拟化层120被用于例如以适当的隔离在同一服务器刀片上启用多个服务(例如,FaaS运行时和KVS实例)。此外,虚拟化层“隐藏”硬件110的详细配置,即,即使服务器刀片112、112可能不同,层120也向上层呈现统一的视图。
如图1b所示,可以以如下方式示出FaaS***100:其中服务器硬件199被表示为多个执行节点171、172在其上被实现的层。执行节点171、172与相应的数据181、182相关联(数据181、182的实际存储和处理电路在服务器硬件199中实现),并且要理解,执行节点171、172和关联的数据181、182扮演与图1a所示的服务器刀片111、112相同的角色。在图1b中,执行节点171、172分别被表示为VN1和VN2,这指示它们被视为在虚拟化层120中的功能控制下的“虚拟节点”或“虚拟机”。即,虚拟化层120可以被视为“隐藏”硬件199,并且以适当的隔离在同一服务器刀片上启用多个虚拟执行节点。
在下面,将参考执行节点,并且要理解,术语“执行节点”可以对应于“服务器刀片”。
FaaS***100在虚拟化层120之上运行多个服务130:即,利用工作进程135、136的一个或多个FaaS运行时控制器131。当功能101、102如本文所述那样被执行时,工作进程135、136实现功能101、102的期望操作。
FaaS运行时控制器131根据需要(例如基于***100中的负载)来启动工作进程135、136。FaaS运行时控制器131还进行附接(即,哪个工作进程135、136应基于哪个触发器来运行哪个功能)。例如,如果使用超文本传输协议(HTTP)触发器,则FaaS运行时控制器131还可以充当外部世界与工作进程135、136之间的代理,FaaS运行时控制器131操作网络服务器并且代理用户(例如操作员191)与工作进程135、136之间的请求。在本公开中,工作进程被直接附接到键-值存储库132中的键。
工作进程135、136包含一个或多个功能101、102的软件包,并且当触发器到达时,它们能够执行功能101、102。工作进程135、136还确保功能101、102可以访问外部存储库,例如在此所示的KVS 132。
如果功能的新版本被上传,则FaaS运行时控制器131通常使用功能的新版本来启动新的工作进程,并且停止旧的工作进程。可以仅在活动工作进程中更新功能。
一个或多个键-值存储数据库132跟踪数据,例如功能101、102在执行期间使用的键-值对。网络文件服务(NFS)133用作与外部实体(例如网络服务195)的接口,操作员191经由该接口提供包括功能101和可选信息清单的软件包190,如在下面更详细地讨论的那样。可以在涉及软件和数据源194、编辑器192和NFS客户端193的网络服务195的上下文中,在操作员191的控制下进行软件包190的创建。关于网络服务195的操作(包括软件包190的创建)的任何细节在本公开的范围之外。
当操作员191与FaaS***100交互时(例如,当功能101正在执行时在与功能101的交互期间),监视服务134经由网络服务195用作操作员191的接口。
FaaS***100可以包括在虚拟化层120之上工作的许多其他服务和功能。这样的其他服务在图1a和1b中由其他服务137来表示。
如本领域技术人员将认识到的,FaaS运行时控制器131、工作进程135、136、功能101、102、键-值存储库132、NFS服务133以及监视服务134的实际执行是借助服务器刀片111、112和执行节点181、182及其关联的数据161、162、191、192来实现的。
如上所述,功能(例如FaaS***100中的功能101)是无状态的,因此,FaaS***100可以针对特定功能的每次执行来使用不同的FaaS运行时控制器131。在本上下文中,无状态意味着功能101不在内部存储状态,而是将键-值存储库132用于该目的。从功能101访问键-值存储库132是昂贵的操作(例如,就延迟而言),特别是如果与键-值存储库132所存储的给定数据元素的位置相比,功能101是在物理上不同的服务器(即,任何服务器刀片110)上被执行的话。
下面将描述用于FaaS运行时控制器131确定将在功能101的特定执行期间被访问的数据元素的(物理)位置的方法的实施例。位置信息被用于确定针对功能101的给定执行,哪个执行节点111、112、171、172应被使用以实现最佳性能(例如,更少的远程数据访问,从而减少延迟)。
键-值存储库132是快速的内存中键-值存储库,其知道在参与键-值存储库132的执行节点(例如,服务器刀片、虚拟机)111、112、171、172之中,每个值被存储在何处。假设功能101被附接到事件并由事件触发。功能101可以被附接到键-值存储库132中的键,并且当键的值改变(或者键被创建或删除)时触发。其他触发机制可以是:计时器时间已过(周期性触发);外部消息到达(例如HTTP请求);发生***范围的事件(例如添加了新用户)等。如果这些事件被存储在键中,则其中大多数事件实际上也可以被表示为键-值存储库132中的更改。
现在转到图2a并且继续参考图1a和1b,将详细地描述由FaaS***100执行的方法的实施例。在这样的实施例中,该方法包括如下多个动作:
动作201
接收包括要在FaaS***100中被执行的功能101的软件包190。
动作203
获得与功能101将要在执行期间访问的数据相关的数据位置信息。
动作205
基于在动作203中获得的数据位置信息,确定功能101要在其中被执行的执行节点111、171。
在一些实施例中,该确定动作205包括:确定执行节点111、171是功能101将要在执行期间访问的数据所在的节点。
在一些实施例中,该确定动作205包括:确定执行节点111、171是至少一个进程正在其中执行并且正在访问功能101将要在执行期间访问的数据的节点。例如,这可以通过以下操作来实现:存储与功能本身的先前激活时的位置确定有关的信息,以使得能够查找哪些其他功能使用相同的数据。另一个示例是以下示例:其中例如专用监视进程(例如,FaaS***100中的其他服务137之一)监视对数据的访问并将这些访问收集到数据存储库中。这样的方法的优势在于,该方法能够提供与功能101将要在执行期间访问哪些数据有关的细粒度的最新信息。
动作207
将功能101加载到所确定的执行节点111、171中。
动作209
在所确定的执行节点111、171中执行功能101。
参考图2b,在一些实施例中,软件包190包括与用于功能101的触发器相关的信息。
在这样的实施例中,获得203数据位置信息的步骤包括如下多个动作:
动作220
使用与触发器相关的信息,计算用于在功能101的执行动作209期间从键-值存储库132中取得值的一组一个或多个键。
动作222
使用在动作220中计算的一组一个或多个键,向键-值存储库132查询数据位置信息。
在图2b所示的一些实施例中,与用于功能101的触发器相关的信息可以包括:作为用于功能101的触发器的键;以及限定功能101将要在执行期间访问的数据的替换正则表达式。
在图2b所示的一些实施例中,与用于功能101的触发器相关的信息可以包括:作为用于功能101的触发器的键;以及被配置为标识功能101将要在执行期间访问的数据的软件功能。例如,软件功能可以被配置为计算元组列表,该元组包括:作为用于该功能的触发器的键;以及功能101将要在执行期间访问的数据的至少一个标识符。
换句话说,图2b所示的实施例是这样的实施例:其中,所上传的包括功能101的软件包190还包含清单(即,与触发器相关的信息),FaaS运行时控制器131使用该清单来计算功能101将处理的键。如果功能101被附接到键,则可以在清单中使用名称键和给定值。
清单可以采用不同的形式,例如可以采用替换正则表达式的形式。如果在触发器与被访问的键之间存在简单的关系,则可以使用替换正则表达式。例如,如果功能101基于键A.B被触发并且它将访问值A.C和A.D。在功能101被激活时,这些类型的表达式可以被评估。
清单还可以采用小型过程描述(计算键的小型功能本身)的形式。例如,可以提供简单的python或C例程,该例程将触发器键名称作为输入并且返回键名称列表。例如,可以返回匹配/输出元组列表。这可以被视为上述正则表达式的广义版本,其中匹配仍然可以是正则表达式,但是要替换的值可以被显式列出。
参考图2c,在一些实施例中,动作203中的获得数据位置信息包括如下多个动作:
动作230
接收一组一个或多个键,这些键用于在功能101的执行动作209期间从键-值存储库132中取得值。
动作232
使用在动作230中接收的一组一个或多个键,向键-值存储库132查询数据位置信息。
换句话说,图2c所示的实施例是这样的实施例:其中,所上传的包括功能101的软件包190不像结合图2b描述的实施例那样包括清单。而是,在由图2c所示的实施例中,当功能101作为激活过程的一部分而被激活时,一组键被提供给功能101。此时,激活功能101的实体完全知道触发键。
要注意的是,关于图2b和图2c所示的实施例,不必考虑功能101将处理的所有键—出于性能原因,仅考虑与功能101放置(即,功能被执行的位置)相关的键便已足够。由许多功能访问并且从位置优化的角度来看很难处理的键可以被省略。
参考图2d,在一些实施例中,在功能101的执行动作209期间,(在动作211中)记录与功能101在执行动作209期间使用哪些键有关的信息。在这些实施例中,动作203中的获得数据位置信息包括如下多个动作:
动作240
取得与功能101在先前的执行期间已使用哪些键有关的信息。
动作242
分析所取得的与功能101在先前的执行期间已使用哪些键有关的信息。
例如,在一些实施例中,动作242中的分析可以包括:对在先前的执行期间键已被访问的相应次数进行计数,以及返回标识已被访问最多次数的键的结果。
例如,在一些实施例中,动作242中的分析可以包括:计算与在先前的执行期间已被访问的键相关联的数据集的相应大小,以及返回标识与最大的数据集相关联的键的结果。
动作244
使用来自分析动作242的结果,向键-值存储库132查询数据位置信息。
换句话说,图2d所示的实施例是这样的实施例:其中对针对特定触发器被激活的功能101在其执行期间实际使用的键进行测量(计数)。在功能101完成之后,获得功能101将在何处被最佳地执行的“算后检验”知识。假设针对特定触发器被激活的功能将在触发器的每次触发时访问类似的键,则可以获知这些键。
上述方法的各种实施例可如何被应用的一个示例是以下示例:其中,软件开发人员(例如操作员191)创建具有清单的functionA并将functionA上传到FaaS***100。然后,通过将functionA附接到用户键(例如userA),针对***中的一些用户激活functionA。在附接期间,所提供的清单被FaaS***100评估,并且FaaS***100可以确定functionA将访问某些用户特定的键(例如userA.X、userA.Y)。在具有键列表的情况下,***100能够查询位置并将functionA附接到最佳位置(即,最佳服务器刀片111或节点171)处的userA键。例如,如果userA.X和userA.Y由键-值存储库132的同一节点所存储,则最好在该节点处创建附接,即在该节点中执行functionA。如果键-值数据库132能够进行数据移动,则在附接过程期间,userA.X和userA.Y键可以被移动到同一节点(如果它们在该附接之前不是共址的)。
上述方法的各种实施例可如何被应用的另一个示例是涉及假设移动网络的示例。在这样的示例中,基于键“Core_Network.state.userID”触发两个功能,(例如)每当特定用户变为活动或空闲时,该键的值将被重写。然后,可以在每次状态改变时触发分析功能,该状态改变更新与被存储在键Core_Network.KPI1.userID和Core_Network.KPI2.userID下的用户活动有关的几个关键性能指标(KPI)。还可以触发进行计费的第二个功能,以及更新被存储在名为Core_Network.UsageCDR.userID的键下的计费数据记录(CDR)。
在该示例中,分析功能(如结合图2b例示)可以具有两个正则表达式,这两个正则表达式可以将触发器键名称中的字符串“Core_Network.state”分别替换为“Core_Network.KPI1”和“Core_Network.KPI2”,然后它们可以被用于位置优化目的(即,确定功能要在其中被执行的执行节点)。
现在转到图3并继续参考图1a-b,将详细描述计算机***300。计算机***300(其可以对应于图1a-b中的FaaS***100的至少一部分)包括多个服务器刀片311,服务器刀片311包括处理器302和存储器304。存储器304包含能由处理器302执行的指令,由此计算机***300可操作以:
-接收包括要在计算机***300中被执行的功能101的软件包190,
-获得与功能101将要在执行期间访问的数据相关的数据位置信息,
-基于数据位置信息,确定功能101要在其中被执行的服务器刀片311,
-将功能101加载到所确定的服务器刀片311中,以及
-在所确定的服务器刀片311中执行功能101。
能够由处理器302执行的指令可以是形式为计算机程序341的软件。计算机程序341可以被包含在载体342中或被载体342所包含,载体342可以将计算机程序341提供给存储器304和处理器302。载体342可以采用任何合适的形式,包括电信号、光信号、无线电信号或计算机可读存储介质。
在一些实施例中,计算机***300可操作以使得确定功能101要在其中被执行的执行节点111、171包括:确定执行节点111、171是功能101将要在执行期间访问的数据所在的节点。
在一些实施例中,计算机***300可操作以使得确定功能101要在其中被执行的执行节点111、171包括:确定执行节点111、171是至少一个进程正在其中执行并且正在访问功能101将要在执行期间访问的数据的节点。
在一些实施例中,计算机***300可操作以使得软件包190包括与用于功能101的触发器相关的信息,并且可操作以使得获得数据位置信息包括:
-使用与触发器相关的信息,计算用于在功能101的执行期间从KVS 132中取得值的一组一个或多个键,以及
-使用所计算的一组一个或多个键,向KVS 132查询数据位置信息。
在一些实施例中,计算机***300可操作以使得与用于功能101的触发器相关的信息包括:
-作为用于功能101的触发器的键,以及
-限定功能101将要在执行期间访问的数据的替换正则表达式。
在一些实施例中,计算机***300可操作以使得与用于功能101的触发器相关的信息包括:
-作为用于功能101的触发器的键,以及
-被配置为标识功能101将要在执行期间访问的数据的软件功能。
在一些实施例中,计算机***300可操作以使得该软件功能被配置为计算元组列表,该元组包括:
-作为用于功能101的触发器的键,以及
-功能101将要在执行期间访问的数据的至少一个标识符。
在一些实施例中,计算机***300可操作以使得获得数据位置信息包括:
-接收用于在功能101的执行期间从KVS 132中取得值的一组一个或多个键,以及
-使用所接收的一组一个或多个键,向KVS 132查询数据位置信息。
在一些实施例中,计算机***300在功能101的执行期间可操作以:
-记录与功能101在执行期间使用哪些键有关的信息,以及
其中,获得数据位置信息包括:
-取得与功能101在先前的执行期间已使用哪些键有关的信息,
-分析所取得的与功能101在先前的执行期间已使用哪些键有关的信息,以及
-使用该分析的结果,向KVS 132查询数据位置信息。
在一些实施例中,计算机***300可操作以使得该分析包括:
-对在先前的执行期间键已被访问的相应次数进行计数,以及
-返回标识已被访问最多次数的键的结果。
在一些实施例中,计算机***300可操作以使得该分析包括:
-计算与在先前的执行期间已被访问的键相关联的数据集的相应大小,以及
-返回标识与最大的数据集相关联的键的结果。
现在转到图4,将详细地描述计算机***400。计算机***400(其可以对应于图1a-b中的FaaS***100)包括:
-接收模块401,被配置为接收包括要在计算机***300中被执行的功能101的软件包190,
-获得模块403,被配置为获得与功能101将要在执行期间访问的数据相关的数据位置信息,
-确定模块405,被配置为基于数据位置信息,确定功能101要在其中被执行的服务器刀片311,
-加载模块407,被配置为将功能101加载到所确定的服务器刀片311中,以及
-执行模块,被配置为在所确定的服务器刀片311中执行功能101。
计算机***400可以包括其他模块,它们被配置为以与例如上面结合图3描述的计算机***300类似的方式执行。
Claims (23)
1.一种由功能即服务FaaS***(100)执行的方法,所述FaaS***(100)包括多个执行节点(110,170),所述方法包括:
-接收(201)包括要在所述FaaS***(100)中被执行的功能(101)的软件包(190),
-获得(203)与所述功能(101)将要在执行期间访问的数据相关的数据位置信息,
-基于所述数据位置信息,确定(205)所述功能(101)要在其中被执行的执行节点(111,171),
-将所述功能(101)加载(207)到所确定的执行节点(111,171)中,
-在所确定的执行节点(111,171)中执行(209)所述功能(101),以及
-在所述功能(101)的所述执行(209)期间,记录(211)与所述功能(101)在所述执行(209)期间使用哪些键有关的信息。
2.根据权利要求1所述的方法,其中,确定(205)所述功能(101)要在其中被执行的执行节点(111,171)包括:确定所述执行节点(111,171)是所述功能(101)将要在执行期间访问的数据所在的节点。
3.根据权利要求1所述的方法,其中,确定(205)所述功能(101)要在其中被执行的执行节点(111,171)包括:确定所述执行节点(111,171)是至少一个进程正在其中执行并且正在访问所述功能(101)将要在执行期间访问的数据的节点。
4.根据权利要求1至3中任一项所述的方法,其中,所述软件包(190)包括与用于所述功能(101)的触发器相关的信息,并且获得(203)数据位置信息的步骤包括:
-使用与触发器相关的所述信息,计算(220)用于在所述功能(101)的所述执行(209)期间从键-值存储库KVS(132)中取得值的一组一个或多个键,以及
-使用所计算的一组一个或多个键,向所述KVS(132)查询(222)所述数据位置信息。
5.根据权利要求4所述的方法,其中,与用于所述功能(101)的触发器相关的所述信息包括:
-作为用于所述功能(101)的触发器的键,以及
-限定所述功能(101)将要在执行期间访问的数据的替换正则表达式。
6.根据权利要求4所述的方法,其中,与用于所述功能(101)的触发器相关的所述信息包括:
-作为用于所述功能(101)的触发器的键,以及
-被配置为标识所述功能(101)将要在执行期间访问的数据的软件功能。
7.根据权利要求6所述的方法,其中,所述软件功能被配置为计算元组列表,所述元组包括:
-作为用于所述功能(101)的触发器的键,以及
-所述功能(101)将要在执行期间访问的数据的至少一个标识符。
8.根据权利要求1至3中任一项所述的方法,其中,获得(203)数据位置信息的步骤包括:
-接收(230)用于在所述功能(101)的所述执行(209)期间从键-值存储库KVS(132)中取得值的一组一个或多个键,以及
-使用所接收的一组一个或多个键,向所述KVS(132)查询(232)所述数据位置信息。
9.根据权利要求1至3中任一项所述的方法,其中,获得(203)数据位置信息的步骤包括:
-取得(240)与所述功能(101)在先前的执行期间已使用哪些键有关的信息,
-分析(242)所取得的与所述功能(101)在先前的执行期间已使用哪些键有关的信息,以及
-使用所述分析(242)的结果,向键-值存储库KVS(132)查询(244)所述数据位置信息。
10.根据权利要求9所述的方法,其中,所述分析(242)包括:
-对在先前的执行期间键已被访问的相应次数进行计数,以及
-返回标识已被访问最多次数的键的结果。
11.根据权利要求9所述的方法,其中,所述分析(242)包括:
-计算与在先前的执行期间已被访问的键相关联的数据集的相应大小,以及
-返回标识与最大的数据集相关联的键的结果。
12.一种包括多个服务器刀片(311)的计算机***(300),每个服务器刀片(311)包括处理器(302)和存储器(304),所述存储器(304)包含能够由所述处理器(302)执行的指令,由此所述计算机***(300)可操作以:
-接收包括要在所述计算机***(300)中被执行的功能(101)的软件包(190),
-获得与所述功能(101)将要在执行期间访问的数据相关的数据位置信息,
-基于所述数据位置信息,确定所述功能(101)要在其中被执行的服务器刀片(311),
-将所述功能(101)加载到所确定的服务器刀片(311)中,
-在所确定的服务器刀片(311)中执行所述功能(101),以及
-在所述功能(101)的所述执行期间,记录与所述功能(101)在所述执行期间使用哪些键有关的信息。
13.根据权利要求12所述的计算机***(300),可操作以使得确定所述功能(101)要在其中被执行的执行节点(111,171)包括:确定所述执行节点(111,171)是所述功能(101)将要在执行期间访问的数据所在的节点。
14.根据权利要求12所述的计算机***(300),可操作以使得确定所述功能(101)要在其中被执行的执行节点(111,171)包括:确定所述执行节点(111,171)是至少一个进程正在其中执行并且正在访问所述功能(101)将要在执行期间访问的数据的节点。
15.根据权利要求12至14中任一项所述的计算机***(300),可操作以使得所述软件包(190)包括与用于所述功能(101)的触发器相关的信息,并且可操作以使得获得数据位置信息包括:
-使用与触发器相关的所述信息,计算用于在所述功能(101)的所述执行期间从键-值存储库KVS(132)中取得值的一组一个或多个键,以及
-使用所计算的一组一个或多个键,向所述KVS(132)查询所述数据位置信息。
16.根据权利要求15所述的计算机***(300),可操作以使得与用于所述功能(101)的触发器相关的所述信息包括:
-作为用于所述功能(101)的触发器的键,以及
-限定所述功能(101)将要在执行期间访问的数据的替换正则表达式。
17.根据权利要求15所述的计算机***(300),可操作以使得与用于所述功能(101)的触发器相关的所述信息包括:
-作为用于所述功能(101)的触发器的键,以及
-被配置为标识所述功能(101)将要在执行期间访问的数据的软件功能。
18.根据权利要求17所述的计算机***(300),可操作以使得所述软件功能被配置为计算元组列表,所述元组包括:
-作为用于所述功能(101)的触发器的键,以及
-所述功能(101)将要在执行期间访问的数据的至少一个标识符。
19.根据权利要求12至14中任一项所述的计算机***(300),可操作以使得获得数据位置信息包括:
-接收用于在所述功能(101)的所述执行期间从键-值存储库KVS(132)中取得值的一组一个或多个键,以及
-使用所接收的一组一个或多个键,向所述KVS(132)查询所述数据位置信息。
20.根据权利要求12至14中任一项所述的计算机***(300),
其中,获得数据位置信息包括:
-取得与所述功能(101)在先前的执行期间已使用哪些键有关的信息,
-分析所取得的与所述功能(101)在先前的执行期间已使用哪些键有关的信息,以及
-使用所述分析的结果,向键-值存储库KVS(132)查询所述数据位置信息。
21.根据权利要求20所述的计算机***(300),可操作以使得所述分析包括:
-对在先前的执行期间键已被访问的相应次数进行计数,以及
-返回标识已被访问最多次数的键的结果。
22.根据权利要求20所述的计算机***(300),可操作以使得所述分析包括:
-计算与在先前的执行期间已被访问的键相关联的数据集的相应大小,以及
-返回标识与最大的数据集相关联的键的结果。
23.一种存储指令的计算机可读存储介质,所述指令当在计算机***(300)中的服务器刀片(311)中的至少一个处理器(302)上被执行时,使得所述计算机***(300)执行根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/SE2018/050538 WO2019231364A1 (en) | 2018-05-29 | 2018-05-29 | Improved performance of function as a service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112470126A CN112470126A (zh) | 2021-03-09 |
CN112470126B true CN112470126B (zh) | 2024-05-24 |
Family
ID=62636245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880095818.2A Active CN112470126B (zh) | 2018-05-29 | 2018-05-29 | 功能即服务的提高的性能 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11960940B2 (zh) |
EP (1) | EP3803587A1 (zh) |
CN (1) | CN112470126B (zh) |
WO (1) | WO2019231364A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11922220B2 (en) * | 2018-11-08 | 2024-03-05 | Intel Corporation | Function as a service (FaaS) system enhancements |
US11886927B2 (en) * | 2018-12-04 | 2024-01-30 | Nippon Telegraph And Telephone Corporation | ICT resource management device, ICT resource management method and ICT resource management program |
US11175960B2 (en) * | 2018-12-05 | 2021-11-16 | Electronics And Telecommunications Research Institute | Worker-scheduling method in cloud-computing system and apparatus for the same |
WO2020207595A1 (en) * | 2019-04-12 | 2020-10-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for determining cloud computing deployment modifications for serverless applications |
US20230185618A1 (en) * | 2020-03-23 | 2023-06-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling execution of functions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263140A1 (en) * | 2012-03-30 | 2013-10-03 | Bmc Software, Inc. | Window-based scheduling using a key-value data store |
CN104583948A (zh) * | 2012-08-30 | 2015-04-29 | 微软公司 | 使用bpram来布局和执行操作*** |
CN104639614A (zh) * | 2015-01-05 | 2015-05-20 | 广州杰赛科技股份有限公司 | 一种软件分发方法、***及服务器 |
CN107807859A (zh) * | 2017-10-24 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种FaaS框架及其工作方法、开发运维FaaS框架的*** |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2306968C (en) * | 2000-04-28 | 2004-11-30 | Ibm Canada Limited-Ibm Canada Limitee | Efficient index-data fetch via callback for a table data |
JP2004171371A (ja) * | 2002-11-21 | 2004-06-17 | Toshiba Corp | 情報処理装置およびキーへの機能割り当て方法 |
US20070143759A1 (en) * | 2005-12-15 | 2007-06-21 | Aysel Ozgur | Scheduling and partitioning tasks via architecture-aware feedback information |
US8418181B1 (en) * | 2009-06-02 | 2013-04-09 | Amazon Technologies, Inc. | Managing program execution based on data storage location |
US9075798B2 (en) * | 2010-07-30 | 2015-07-07 | Adobe Systems Incorporated | Verifying authenticity of input using a hashing algorithm |
WO2012151286A1 (en) * | 2011-05-04 | 2012-11-08 | Apperian, Inc. | Processing, modification, distribution of installation packages |
US9176716B2 (en) * | 2013-04-18 | 2015-11-03 | Siemens Aktiengesellschaft | Method and apparatus for exploiting data locality in dynamic task scheduling |
CN107357522B (zh) * | 2014-11-05 | 2019-11-15 | 华为技术有限公司 | 数据处理方法和装置 |
US9767130B2 (en) * | 2014-12-31 | 2017-09-19 | Nexenta Systems, Inc. | Methods and systems for key sharding of objects stored in distributed storage system |
EP3465966B1 (en) | 2016-06-01 | 2022-04-06 | Telefonaktiebolaget LM Ericsson (PUBL) | A node of a network and a method of operating the same for resource distribution |
JP6940751B2 (ja) * | 2017-05-10 | 2021-09-29 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US10628236B2 (en) * | 2017-06-06 | 2020-04-21 | Huawei Technologies Canada Co., Ltd. | System and method for inter-datacenter communication |
US11050607B2 (en) * | 2017-06-21 | 2021-06-29 | Red Hat, Inc. | Proxy with a function as a service (FAAS) support |
US10642648B2 (en) * | 2017-08-24 | 2020-05-05 | Futurewei Technologies, Inc. | Auto-adaptive serverless function management |
JP2019049843A (ja) * | 2017-09-08 | 2019-03-28 | 富士通株式会社 | 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置 |
US10771584B2 (en) * | 2017-11-30 | 2020-09-08 | Cisco Technology, Inc. | Provisioning using pre-fetched data in serverless computing environments |
EP3724776A4 (en) * | 2017-12-13 | 2021-07-28 | Telefonaktiebolaget LM Ericsson (PUBL) | PROCESS, FUNCTION MANAGER AND ARRANGEMENT FOR MANAGING FUNCTION CALLS |
US10901804B2 (en) * | 2017-12-15 | 2021-01-26 | Fujitsu Limited | Apparatus and method to select services for executing a user program based on a code pattern included therein |
US10715499B2 (en) * | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
US11809275B2 (en) * | 2018-01-29 | 2023-11-07 | Telefonaktiebolaget Lm Ericsson (Publ) | FaaS in-memory checkpoint restore |
US10831550B2 (en) * | 2018-03-27 | 2020-11-10 | Oracle Financial Services Software Limited | Computerized control of execution pipelines |
US10541942B2 (en) * | 2018-03-30 | 2020-01-21 | Intel Corporation | Technologies for accelerating edge device workloads |
US10782950B2 (en) * | 2018-05-01 | 2020-09-22 | Amazon Technologies, Inc. | Function portability for services hubs using a function checkpoint |
-
2018
- 2018-05-29 CN CN201880095818.2A patent/CN112470126B/zh active Active
- 2018-05-29 US US17/059,330 patent/US11960940B2/en active Active
- 2018-05-29 EP EP18732166.6A patent/EP3803587A1/en not_active Withdrawn
- 2018-05-29 WO PCT/SE2018/050538 patent/WO2019231364A1/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263140A1 (en) * | 2012-03-30 | 2013-10-03 | Bmc Software, Inc. | Window-based scheduling using a key-value data store |
CN104583948A (zh) * | 2012-08-30 | 2015-04-29 | 微软公司 | 使用bpram来布局和执行操作*** |
CN104639614A (zh) * | 2015-01-05 | 2015-05-20 | 广州杰赛科技股份有限公司 | 一种软件分发方法、***及服务器 |
CN107807859A (zh) * | 2017-10-24 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种FaaS框架及其工作方法、开发运维FaaS框架的*** |
Also Published As
Publication number | Publication date |
---|---|
WO2019231364A1 (en) | 2019-12-05 |
CN112470126A (zh) | 2021-03-09 |
EP3803587A1 (en) | 2021-04-14 |
US11960940B2 (en) | 2024-04-16 |
US20210149742A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112470126B (zh) | 功能即服务的提高的性能 | |
US11397709B2 (en) | Automated configuration of log-coordinated storage groups | |
US10795905B2 (en) | Data stream ingestion and persistence techniques | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
US10467105B2 (en) | Chained replication techniques for large-scale data streams | |
AU2014346369B2 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
AU2014346366B2 (en) | Partition-based data stream processing framework | |
US10373247B2 (en) | Lifecycle transitions in log-coordinated data stores | |
CA2930026C (en) | Data stream ingestion and persistence techniques | |
EP3069495B1 (en) | Client-configurable security options for data streams | |
US9471585B1 (en) | Decentralized de-duplication techniques for largescale data streams | |
You | Survey on Apache Hadoop Project |
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 |