函数即服务(FAAS)执行分配器的制作方法

专利2023-02-18  112


函数即服务(faas)执行分配器
1.分案申请信息
2.本发明专利申请是申请日为2019年8月15日、申请号为2019800506014、发明名称为“函数即服务(faas)执行分配器”的发明专利申请案的分案申请。
3.相关申请
4.根据35u.s.c.119(a)-(d),要求vmware公司于2018年8月17日在印度提交的题为“函数即服务(“function-as-a-service”,faas)执行分配器”的外国申请序列号201841030859的权益,其全部内容出于所有目的通过引用合并于此。
5.本技术要求于2018年12月10日提交的题为“函数即服务(faas)执行分配器”的共同未决的美国非临时专利申请no.16/214,163的优先权和利益,其全部内容通过引用合并于此。
技术领域
6.本技术涉及函数即服务(faas)执行分配器。


背景技术:

7.云架构用于云计算和云存储系统(称为云系统),用于提供函数即服务(faas)云服务。这样的云系统可以指任何类型的云系统,例如私有云系统,公共云系统或混合云系统。faas云服务是一种类型的云服务,它提供了一平台来开发、运行和管理由云系统提供的基础架构上的应用程序函数。例如,云系统可以提供计算资源(例如,服务器、主机、虚拟计算实例(vci),诸如在主机上运行的虚拟机(vm)等)以及存储资源(例如,联网存储器,耦合至物理设备、虚拟存储区域网络等的存储器)来执行函数。云系统中的存储资源可以包括基于云的对象存储或数据库。
8.应用程序函数或本文所指的函数(function)是指可以使用云系统的资源执行的一段代码。例如,函数可以是接受输入并提供输出的代码。在云系统的资源上执行函数允许开发和启动函数,而没有管理支持函数执行所需的资源的复杂性。相反,云系统提供并维护此类资源,包括用于执行函数的计算资源和存储资源。
9.有益地,由云系统提供的faas云服务允许开发人员比采用传统计算模型更容易扩展应用程序函数的执行。例如,典型的单体(monolithic)应用程序可以包括用于执行几个函数的代码。为了扩展单体应用程序的使用,可能需要执行单体应用程序的许多实例,并且需要提供诸如服务器之类的物理架构来支持这种执行。然而,使用faas云服务,开发人员可以将单体应用程序拆分为许多函数。这些函数可以彼此独立地执行。此外,这些函数中的每个函数的执行可以在云系统中自动且独立地扩展。例如,可以提供云系统的更多资源以根据需要执行函数。
10.云系统可以包括多个数据中心。数据中心包括多个物理计算设备(例如,服务器、主机、运行vci的主机等),这些物理计算设备利用物理网络设备(例如,物理路由器、物理交换机等)通过局部网络互连。数据中心还可以包括存储器(例如,耦合到一个或更多个物理
计算设备)。多个数据中心还可以经由网络(例如,因特网)互连。通常,云系统的数据中心位于不同的物理区域。例如,云系统可以具有位于不同国家或一个国家的不同区域(例如,美国东部、美国西部等)的数据中心。一些数据中心可以为云系统的用户提供计算资源和存储资源。一些数据中心可以仅向云系统的用户提供计算资源。一些数据中心可以仅向云系统的用户提供存储资源。
11.开发人员可以将函数加载/部署到云系统中。例如,云系统可以提供开发人员访问的应用程序编程接口(api)(例如,使用在计算设备上运行的网络浏览器)以将函数加载到云系统中,例如通过网络。该函数可以被加载到开发人员指定的数据中心。特别是,开发人员可能必须手动选择将函数加载到云系统的哪个数据中心。此外,在数据中心内,可以将函数加载到数据中心内的一个或更多个计算资源上。因此,该函数可由数据中心的一个或更多个计算资源执行。
12.可以基于各种不同的触发器来调用/触发该函数以执行。例如,该函数可以由在客户端设备(例如,诸如移动设备、工作站、服务器等的计算设备)上运行的应用程序、在云系统的同一数据中心中运行的另一函数、该云系统或另一云系统的不同数据中心、在云系统中运行的另一服务、在云系统中发生的事件(例如,计时器到期,文件正在上传到云系统的存储器等)等等触发。
13.在一个示例中,将函数加载到其中的数据中心包括可以触发函数执行的api网关。api网关对应于可通过诸如因特网之类的网络访问的数据中心的一个或更多个计算资源。api网关可以与统一资源定位符(url)相关联。在客户端设备上运行的应用程序可以基于api网关的url通过网络与api网关建立http会话(例如,使用诸如tcp之类的底层传输层)。然后,应用程序可以与api网关交换http请求和http响应,以触发函数的执行。尽管关于建立http会话以及利用http请求和http响应描述了某些方面,但是应当注意,类似地,可以建立https会话并且利用https请求和https响应。例如,执行该函数的http请求可以由应用程序生成,并通过已建立的http会话发送到api网关。http请求包括指示执行函数的请求的信息。http请求还可以包括输入参数(例如,变量、字符串等),该输入参数将作为输入传递给函数以用于执行。
14.api网关接收http请求,然后进一步选择数据中心的计算资源,该计算资源包括用于处理该请求的函数的副本(例如,基于负载平衡函数)。因此,计算资源接收该请求并基于来自客户端的该请求来执行函数。执行的函数可以将信息返回给应用程序(例如,在通过互联网发送给应用程序的http响应中),读取/写入存储器中的数据,触发另一函数的执行等。
15.云系统的每个数据中心都有与自己的url相关联的自己的api网关。因此,为了使应用程序建立http会话并生成执行函数的http请求,该应用程序将用所需api网关的url进行硬编码以处理该请求,并因此采用用于执行该函数的数据中心进行硬编码。
16.类似地,在另一示例中,在云系统中运行的函数可以触发另一函数。例如,云系统可以在其用于开发函数的api中提供调用另一函数的能力。对于用于调用另一函数的函数,它必须指定另一函数位于哪个数据中心,并因此采用用于执行另一函数的数据中心进行硬编码。例如,该函数可以通过与包括所讨论的函数的数据中心的api网关建立http会话并将http请求发送到该api网关来调用另一函数。
17.此外,如果函数利用诸如云系统的存储资源之类的永久性存储器,则该函数采用
诸如存储器所位于的数据中心的标识符之类的存储器位置进行硬编码。
18.为了减少触发函数执行的代码(例如,函数、应用程序等)与函数本身之间的网络延时,可以对代码进行硬编码以在地理位置上靠近执行代码的计算设备的数据中心中执行函数。此外,为了减少函数与函数所利用的存储器之间的网络延时,可以对函数本身进行硬编码以利用在地理位置上靠近执行该函数的数据中心的数据中心中的存储器。特别地,计算设备之间的地理距离越小,通常设备之间的网络通信的延时越低。例如,如果开发人员知道触发函数执行的代码将在位于美国西部的计算设备上运行,则开发人员可以将该函数加载到位于美国西部的数据中心上。此外,开发人员在美国西部的数据中心上在代码中对触发函数执行的函数的触发器进行硬编码。如果函数本身使用永久性存储器,则开发人员可以对函数进行硬编码,以利用执行该函数的同一数据中心的存储资源(如果它具有可用的存储资源),或者利用具有存储资源的在地理位置上靠近执行该函数的数据中心的另一数据中心。
19.然而,用于执行代码中的函数的数据中心的硬编码或为所讨论的函数提供存储器的数据中心的硬编码会降低改变条件的灵活性。例如,执行触发函数执行的代码的计算设备可以移动位置。此外,云系统可以增加新的数据中心。因此,在地理上与代码或函数最接近的数据中心可能不再是与被硬编码的数据中心相同的数据中心。这会对执行代码的计算设备与执行函数的计算设备之间或者执行函数的计算设备与存储器之间的网络延时产生负面影响。


技术实现要素:

20.本文描述的方法提供了在包括多个数据中心的云计算系统的数据中心中执行函数,多个数据中心中的每一个包括一个或更多个计算资源。该方法包括:在函数分配器处从应用程序接收执行函数的请求,该请求包括函数的标识符。该方法还包括:由函数分配器选择多个数据中心中的第一数据中心以执行函数。该方法还包括:由函数分配器使得第一数据中心执行函数。
21.进一步的实施例包括一种非暂时性计算机可读存储介质,其存储指令,该指令在由计算机系统执行时使得计算机系统执行上述方法,以及计算机系统被编程为执行上述方法。
附图说明
22.图1描绘了其中可以利用本公开的一个或更多个实施例的云系统的框图。
23.图2描绘了根据一实施例的在函数分配器处处理将函数加载到云系统中的请求的方法的流程图。
24.图3描绘了根据一实施例的在函数分配器处处理执行加载在云系统中的函数的请求的方法的流程图。
25.图4描绘了根据一实施例的在函数分配器处处理对云系统中的存储资源的请求的方法的流程图。
26.为了便于理解,在可能的地方使用了相同的附图标记来表示图中共有的相同元件。可以预期,在一个实施例中公开的元件可以在没有具体叙述的情况下有益地用于其他
实施例。
具体实施方式
27.本公开提供了用于在提供faas的云系统的数据中心之间分配函数的技术。例如,本公开提供一个或更多个函数分配器,其被配置为接收对加载或执行函数的请求,自动确定适当的数据中心以加载或执行函数,以及在所确定的数据中心上自动加载或执行函数。在某些实施例中,函数分配器还被配置为确定适当的数据中心以提供用于该函数的存储资源,并配置函数以利用所确定的数据中心的存储资源。
28.本公开提供了优于现有技术的许多优点。特别地,函数分配器允许动态选择数据中心以加载和执行函数和/或向函数提供存储资源。因此,数据中心的选择不需要被硬编码为调用该函数的代码或利用存储资源的函数中的代码。因此,如果执行代码的设备的位置发生更改,或者新的数据中心被添加到云系统,则函数分配器可以为代码/函数自动选择提供减少的网络延时的不同的数据中心,例如靠近正在执行的代码/函数的数据中心。因此,本公开通过函数分配器为提供faas的云系统中的网络延时问题的技术问题提供了技术解决方案。
29.图1描绘了其中可以利用本公开的一个或更多个实施例的云系统100的框图。云系统100包括多个数据中心102。在某些实施例中,每个数据中心102与不同的区域(例如,美国西部,美国东部,印度东部,印度西部等)相关联。虽然多个数据中心102的某些方面关于单个数据中心102进行了讨论,但是它们适用于多个数据中心102中的每一个。
30.云系统100可以是私有云系统、公共云系统或混合云系统。私有云系统包括由特定企业或业务组织控制和管理的一个或更多个数据中心。公共云系统包括一个或更多个数据中心,这些数据中心由云计算服务提供商运营,并作为账户持有人(例如特定企业以及其他企业)可用的服务公开。混合云系统包括两种类型的数据中心。因此,如本文所使用的,内部云或“私有”云是其中租户和云服务提供商是同一组织的一部分的云,而外部云或“公共”云是由与访问外部云的租户分开的组织提供的云。例如,租户可以是企业的一部分,而外部云可以是与租户的企业分开的云服务提供商的一部分,该云服务提供商向不同的企业和/或个人提供云服务。混合云是一种云架构,在其中向租户提供对私有云资源和公共云资源两者的无缝访问。
31.数据中心102包括一个或更多个物理计算设备(“计算设备104”)。计算设备104可以包括计算设备的常规组件,例如一个或更多个处理器(cpu)108,系统内存110,网络接口112,存储系统114以及其他i/o设备,诸如,例如usb和vga接口(未示出)。cpu 108被配置为执行指令,例如可执行指令、函数或代码,其使得cpu 108执行如本文所述的一个或更多个操作,并且可以被存储在内存110和本地存储器中。内存110是允许存储和检索诸如可执行指令、应用程序、函数、代码和其他数据之类的信息的设备。内存110可以包括例如一个或更多个随机存取存储器(ram)模块。网络接口112使计算设备104能够经由通信介质(例如数据中心102中的网络122)与另一设备进行通信。网络接口112可以包括一个或更多个网络接口设备,也称为网络接口卡(nic)。存储系统114代表本地存储设备(例如,一个或更多个硬盘、闪存模块、固态盘和光盘)和/或使计算设备104能够与一个或更多个网络数据存储系统通信的存储接口。存储接口的示例是主机总线适配器(hba),该主机总线适配器将计算设备
104耦合到一个或更多个存储阵列(未示出),例如存储区域网络(san)、分布式虚拟san或网络附加存储(nas)、以及其他网络数据存储系统。也可以使用iscsi驱动程序经由网络122访问中心化存储阵列。尽管未示出,但是计算设备104可以包括虚拟化层(例如,管理程序),其将处理器、内存、存储器和网络资源计算设备104抽象为多个vci(例如,vm、容器等)。
32.计算设备104或在计算设备104上运行的vci可以执行本文所讨论的代码或函数。因此,计算设备104对应于数据中心102和云系统100的计算资源。
33.此外,存在于计算设备104上的存储系统114或在网络122上可访问的其他存储阵列(未示出)可以存储用于本文所讨论的函数的数据。因此,存储系统114和其他存储阵列对应于数据中心102和云系统100的存储资源。
34.数据中心102还包括网关124。网关124为计算设备104和在计算设备104上运行的vci提供到外部网络146(例如,因特网)的连接。网关124可以管理用于计算设备104的外部公共ip地址,并路由进出数据中心102的流量,以及提供网络服务,例如防火墙、网络地址转换(nat)、动态主机配置协议(dhcp)和负载平衡。网关124可以使用网络122来将网络分组(packet)发送到计算设备104。网关124可以是vci、物理设备、在计算设备104内运行的软件模块等。尽管示出为单个组件,但是网关124的功能可以分布在多个vci和/或物理设备上。如所讨论的,网关124对应于api网关,并且与其自己的url相关联。特别地,每个数据中心102的每个网关124与它自己的url相关联。因此,云系统100的每个数据中心102都经由网关124耦合到外部网络146,并与对应于其网关124的url的不同url相关联。
35.客户端设备150(例如,直接经由nic,经由另一网关,等等)连接到外部网络146。客户端设备150对应于用户(例如,开发人员)用来访问云系统100提供的faas的设备。客户端设备150可以是类似于计算设备104的设备、移动设备、vci、另一计算设备、在计算设备上运行的软件(例如,浏览器)等。尽管仅示出了一个客户端设备150,但是许多客户端设备150可以连接到网络146并访问由云系统100提供的faas。客户端设备150可以在云系统100的外部或是云系统100的一部分。
36.函数分配器160也连接到外部网络146。函数分配器160对应于被配置为在云系统100的数据中心102之间分配函数的设备,如本文进一步讨论的。函数分配器160存储与每个数据中心102相关联的连接信息(例如,url),使得它可以与每个数据中心102建立连接。此外,函数分配器160存储指示每个数据中心102的位置的信息,以便其可以基于数据中心102的位置在数据中心102之间分配函数。函数分配器160可以被实现为vci、物理设备、在计算设备104内运行的软件模块等。尽管示出为单个组件,但是函数分配器160的功能可以分布在多个vci和/或物理设备上。函数分配器160可以在云系统100外部或是云系统100的一部分。函数分配器160可以位于数据中心102的外部,或者是一个或更多个数据中心102的一部分。与网关124类似,在某些实施例中,函数分配器160与其自己的url相关联。应当注意,一个函数分配器160可以被配置为与一个云系统或相同或不同类型的许多不同的云系统一起工作。
37.图2描绘了根据一实施例的在函数分配器处处理将函数加载到云系统中的请求的方法200的流程图。关于图1的云系统100描述方法200。
38.在框202处,客户端设备150生成将函数加载到云系统100上的数据中心不可知(agnostic)请求,并通过网络146将其发送至函数分配器160。该请求是数据中心不可知的,
因为它没有指定要将函数加载到其上的数据中心102。在某些实施例中,数据中心不可知请求与函数分配器160的url相关联,并因此被发送到函数分配器160。在某些实施例中,客户端设备150基于函数分配器160的url与函数分配器160建立http会话。然后,客户端设备150与函数分配器160交换http请求和http响应,以将与该函数相对应的数据发送到函数分配器160,函数分配器160请求将该函数加载到云系统100上。
39.在框204处,函数分配器160接收将函数加载到云系统100上的数据中心不可知请求,并确定数据中心102的集合以分配函数。在一个示例中,函数分配器160将数据中心102的集合确定为具有计算资源以执行函数的云系统100的所有数据中心102。在另一示例中,函数分配器160基于数据中心102的集合的数据中心不可知请求中的指示来确定该数据中心102的集合。在又一示例中,函数分配器160确定该数据中心102的集合少于云系统100的所有数据中心102。
40.在某些实施例中,函数分配器160进一步存储将函数的标识符与该数据中心102的集合相关联的信息,使得函数分配器160可以确定函数被加载到哪个数据中心102的集合上。
41.在框206处,函数分配器160通过网络146将函数分配给该数据中心102的集合中的每一个,并且将函数加载到每个数据中心102上。在一个示例中,函数分配器160具有对每个数据中心102的根访问权限,这意味着它可以访问每个数据中心102中负责将函数加载到数据中心102的计算设备104上的平台管理设备的连接信息并具有该连接信息。函数分配器160相应地发送(例如,使用诸如http、tcp等之类的任何合适的通信协议)通过网络146将函数加载到每个数据中心102的平台管理设备的请求。然后,每个数据中心中的平台管理设备将函数加载到数据中心102的计算设备104上。
42.在另一示例中,函数分配器160被配置为以与最终用户将函数加载到每个数据中心102上相同的方式与数据中心102进行交互。例如,对于每个数据中心102,函数分配器160可以通过网络146与由云系统100提供的api接合,以将函数加载到数据中心上。
43.因此,函数分配器160自动地将函数加载到云系统的多个数据中心上,而不是用户将函数加载到用户指定的一个特定数据中心上。
44.图3描绘了根据一实施例的在函数分配器处处理执行加载到云系统中的函数的请求的方法300的流程图。关于图1的云系统100描述方法300。
45.在框302处,函数分配器160接收执行加载到云系统100上的函数的请求。例如,函数分配器160从应用程序接收请求,该应用程序可以指另一函数、在客户端设备150上执行的应用程序等。函数分配器160通过网络146接收请求。
46.在一个示例中,该应用程序包括调用该函数的执行的指令。代替指定特定数据中心102的url,调用函数的执行的指令包括函数分配器160的url和函数的标识符。因此,应用程序建立与函数分配器160的http会话。该应用程序进一步生成执行该函数的http请求,并将该http请求发送至函数分配器160。http请求可以进一步包括函数的标识符(例如,作为url的一部分)。
47.在框304处,函数分配器160选择云系统100中的数据中心102以执行函数。例如,函数分配器160基于存储在函数分配器160处的信息和所接收的函数的标识符来确定已加载函数的数据中心102的集合。然后,函数分配器160选择数据中心102的集合中的一个来执行
函数。
48.在一个示例中,函数分配器160选择数据中心102的集合中在地理上最接近应用程序正在运行的位置的数据中心102。因此,函数分配器160确定应用程序正在运行的位置。在一个示例中,函数分配器160基于执行函数的请求(例如,http请求)中包括的地址(例如,ip地址)来确定应用程序位置。在另一示例中,该应用程序在执行函数的请求中明确包括与该应用程序相关联的地理位置信息(例如,gps坐标)。函数分配器160可以基于地理位置信息确定应用程序位置。
49.如所讨论的,函数分配器160还存储指示每个数据中心102的位置的信息。基于指示每个数据中心102的位置和应用程序位置的信息,函数分配器160确定并选择数据中心102的集合中地理上最接近应用程序正在运行的位置的数据中心102。
50.在某些实施例中,函数分配器160可以选择在没有加载函数的数据中心102中执行函数。例如,函数分配器160可以确定已加载函数的所有数据中心102在地理上与应用程序正在运行的位置相距较远,或者确定已加载函数的数据中心102不可用。因此,函数分配器160可以首先例如根据方法200将函数加载到一个或更多个附加数据中心102上,然后选择一个或更多个附加数据中心102之一来执行函数。因此,在某些实施例中,函数分配器160可以在不同时间将函数加载到附加数据中心102中。
51.在框306处,函数分配器160将应用程序重定向到所选择的数据中心102。特别地,函数分配器160通过网络146向应用程序发送其应当利用所选的数据中心102来请求执行函数的信息。在一个示例中,函数分配器160通过网络146向应用发送http响应,以将应用程序重定向到所选择的数据中心102。http响应可以是执行url重定向的代码301或代码302。
52.在框308处,该应用程序向所选的数据中心102发送执行该函数的请求。在某些实施例中,应用程序通过网络146发送该请求。例如,应用程序中调用该函数的代码仍可以指定与函数分配器160关联的url。然而,基于由函数分配器160的url重定向,应用程序现在将url与所选的数据中心102相关联。因此,应用程序建立与所选的数据中心102的http会话。该应用程序进一步生成执行该函数的http请求,并将该http请求发送到所选的数据中心102。
53.在框310处,所选的数据中心102执行该函数。
54.因此,函数分配器160例如基于数据中心的接近度自动地选择数据中心以执行函数,而不是将应用程序绑定到使用单个数据中心来执行函数。
55.在某些方面,函数分配器160还可以执行清理函数并从数据中心102删除函数。例如,如果函数分配器160确定在阈值时间段(例如,天、月、年)内还没有选择特定的数据中心102来执行特定函数,则函数分配器160可以从该特定的数据中心102删除该特定函数(例如,使用所讨论的根访问或api)。在某些方面,开发人员可以指示函数分配器160删除特定函数,并且函数分配器160可以从包括该函数的相应数据中心102中删除该函数。
56.图4描绘了根据一实施例的在函数分配器处处理对云系统中的存储资源的请求的方法400的流程图。关于图1的云系统100描述方法400。
57.在框402处,函数分配器160接收对云系统100上的存储资源的请求。例如,函数分配器160通过网络146从在数据中心102中执行的函数接收请求。
58.在一个示例中,该函数包括调用使用(例如,读/写)云系统100的存储资源的指令。
调用使用存储资源而不是指定特定数据中心102中存储资源的位置的指令包括指向函数分配器160的指针(例如,函数分配器160的url)和跨数据中心102的存储位置的全局/通用标识符。
59.例如,数据中心102可以包括数据库形式的存储资源,该数据库包括与存储位置相对应的多个存储桶(bucket)。每个存储桶都与一标识符相关联,该标识符在数据中心102中是唯一的,但在数据中心102中可能不是唯一的。当函数被硬编码为使用特定数据中心102的存储资源时,调用使用存储资源的指令可以指向特定数据中心102,并且包括在数据中心102中使用的存储位置的标识符,以使用存储资源的特定存储位置。因此,函数仅限于使用特定数据中心102中的硬编码的存储位置。
60.然而,根据本公开的实施例的函数可以包括指向函数分配器106的指针和跨数据中心102的存储位置的全局标识符。然后,函数分配器106可以重定向函数以使用特定数据中心102的存储资源,并将全局标识符转换为数据中心102中特定存储位置的标识符,如本文中进一步讨论的。
61.在一些实施例中,函数基于包括在该函数的指令中的函数分配器160的url与函数分配器160建立http会话。该函数还生成使用云系统100的存储资源的http请求,并将该http请求发送到函数分配器160。
62.在框404处,函数分配器160选择云系统100中的数据中心102以使用其存储资源。例如,函数分配器160选择数据中心102,该数据中心102提供在地理上最接近该函数的存储资源,类似于关于框304所讨论的。
63.在框406处,函数分配器160将函数重定向到所选的数据中心102。特别地,函数分配器160通过网络146将信息发送给函数,该信息应当利用所选择的数据中心102的存储资源。在一个示例中,函数分配器160通过网络146向该函数发送http响应,以将该函数重定向到所选择的数据中心102。http响应可以是执行url重定向的代码301或代码302。http响应可以进一步包括将存储位置的全局标识符转换为所选的数据中心102中的特定存储位置的标识符。
64.在框408处,该函数向所选的数据中心102发送使用存储资源的请求。在某些实施例中,该函数通过网络146发送请求。例如,函数中的代码仍可以指定与函数分配器160关联的url。然而,基于由函数分配器160的url重定向,该函数现在将url与所选的数据中心102相关联。因此,该函数与所选的数据中心102建立http会话。该函数还生成使用存储资源的http请求,并将http请求发送到所选的数据中心102。在一些实施例中,函数在http请求中包括从函数分配器160接收的所选的数据中心102中的特定存储位置的标识符。
65.在框410处,所选的数据中心102向该函数提供存储资源。
66.因此,函数分配器160例如基于数据中心的接近度自动选择数据中心以提供存储资源,而不是将函数绑定到使用单个数据中心的存储资源。
67.应当理解,对于本文所述的任何过程,除非另有说明,否则在与本文的教导一致的各种实施例的范围内,可以以相似或替代的顺序或并行地执行附加或更少的步骤。
68.本文描述的各种实施例可以采用包含存储在计算机系统中的数据的各种计算机实现的操作。例如,这些操作可能需要对物理量进行物理操纵-通常(尽管不是必须的),这些量可以采用电信号或磁信号的形式,其中它们或它们的表示能够被存储、传输、组合、比
较或其他操纵。此外,这样的操纵通常用术语来指代,例如产生、识别、确定或比较。本文描述的形成本发明的一个或更多个实施例的一部分的任何操作可以是有用的机器操作。另外,本发明的一个或更多个实施例还涉及一种用于执行这些操作的设备或装置。该装置可以被特别构造用于特定的所需目的,或者它可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者构造更专门的装置来执行所需的操作可能更方便。
69.本文描述的各种实施例可以与其他计算机系统配置一起实践,包括手持式设备、微处理器系统、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机、专用集成电路(asic)、现场可编程门阵列(fpga)等。
70.本发明的一个或更多个实施例可以被实现为一个或更多个计算机程序或者被实现为体现在一个或更多个计算机可读介质中的一个或更多个计算机程序模块。术语计算机可读介质是指可以存储随后可以输入到计算机系统的数据的任何数据存储设备—计算机可读介质可以基于用于以使计算机程序能够被计算机读取的方式包含计算机程序的任何现有的或随后开发的技术。计算机可读介质的示例包括硬盘驱动器、网络附加存储(nas)、只读存储器、随机存取存储器(例如闪存设备)、cd(光盘)
‑‑
cd-rom、cd-r或cd-rw,dvd(数字多功能盘),磁带以及其他光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,从而以分布式方式存储和执行计算机可读代码。
71.尽管为了清楚理解已经详细描述了本发明的一个或更多个实施例,但是显而易见的是,可以在权利要求的范围内进行某些改变和修改。因此,所描述的实施例应被认为是说明性的而不是限制性的,并且权利要求的范围不限于在此给出的细节,而是可以在权利要求的范围和等同范围内进行修改。在权利要求书中,除非在权利要求书中明确指出,否则元件和/或步骤不暗示任何特定的操作顺序。
72.可以将根据各种实施例的虚拟化系统实现为托管实施例、非托管实施例或倾向于模糊两者之间的区别的实施例,全部都想到了。此外,各种虚拟化操作可以全部或部分地以硬件实现。例如,硬件实现可以采用查找表来修改存储访问请求以保护非磁盘数据。
73.如上所述的某些实施例包括主机顶部的硬件抽象层。硬件抽象层允许多个上下文共享硬件资源。在一个实施例中,这些上下文彼此隔离,每个上下文至少具有在其中运行的用户应用程序。因此,硬件抽象层提供了在上下文之间进行资源隔离和分配的好处。在前述实施例中,虚拟机用作上下文的示例,虚拟机管理程序用作硬件抽象层的示例。如上所述,每个虚拟机包括在其中运行至少一个应用程序的访客操作系统。应当注意,这些实施例还可以应用于上下文的其他示例,例如不包括访客操作系统的容器,在本文中称为“无操作系统的容器(os-less container)”(例如,参见www.docker.com)。无操作系统的容器实现了操作系统级的虚拟化,其中在主机计算机上,在操作系统内核的顶部提供了抽象层。抽象层支持多个无操作系统的容器,每个容器都包含应用程序及其依赖项。每个无操作系统的容器都作为主机操作系统上用户空间中的隔离进程运行,并与其他容器共享内核。无操作系统的容器依靠内核的功能来利用资源隔离(cpu、内存、块i/o、网络等)和独立的名称空间,并完全隔离应用程序对操作环境的视图。通过使用无操作系统的容器,可以隔离资源,限制服务,并向进程供应以使其具有自己的进程id空间,文件系统结构和网络接口的操作系统的私有视图。多个容器可以共享同一内核,但是每个容器可以被限制为仅使用限定数量的
资源,例如cpu、内存和i/o。如本文所使用的术语“虚拟化计算实例”旨在涵盖vm和无os的容器两者。
74.不管虚拟化的程度如何,许多变化、修改、添加和改进都是可能的。因此,虚拟化软件可以包括执行虚拟化函数的主机、控制台或访客操作系统的组件。可以为本文中描述为单个实例的组件、操作或结构提供多个实例。各种组件、操作和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以预见功能的其他分配,并且可以落入本发明的范围内。通常,在示例性配置中呈现为单独的组件的结构和功能可以实现为组合的结构或组件。类似地,呈现为单个组件的结构和功能可以实现为单独的组件。这些和其他变型、修改、添加和改进可以落入所附权利要求的范围内。

技术特征:
1.一种在包括多个数据中心的云计算系统的数据中心中执行函数的方法,所述多个数据中心中的每一个包括一个或更多个计算资源,所述方法包括:在函数分配器处从应用程序接收用于加载函数的请求,所述用于加载函数的请求不包含用于执行所述函数的任何请求;响应于接收到用于加载所述函数的所述请求:确定数据中心集合来分配所述函数;在所述函数分配器处存储将所述函数的标识符与所述数据中心集合相关联的信息;以及将所述函数分配给所述数据中心集合,以将所述函数加载到所述数据中心集合的每个数据中心中;在将所述函数分配给所述数据中心集合之后,在所述函数分配器处从所述应用程序接收用于执行所述函数的请求,用于执行所述函数的所述请求包括所述函数的所述标识符;以及响应于接收到用于执行所述函数的所述请求:由所述函数分配器选择特定数据中心来执行所述函数;以及通过所述函数分配器使所述特定数据中心执行所述函数。2.如权利要求1所述的方法,其中使所述特定数据中心执行所述函数包括:由所述函数分配器将所述应用程序重定向到所述特定数据中心,使所述应用程序向所述特定数据中心发送用于执行所述函数的第二请求,所述特定数据中心基于接收到用于执行所述函数的所述第二请求来执行所述函数。3.如权利要求2所述的方法,其中所述应用程序包括调用所述函数的执行的指令,所述指令包括与所述函数分配器相关联而非与所述特定数据中心相关联的统一资源定位符url,并且其中重定向所述应用程序包括:由所述函数分配器向所述应用程序发送http响应或https响应以执行到所述特定数据中心的所述url的url重定向。4.如权利要求1所述的方法,还包括:在接收到用于执行所述函数的所述请求之后,基于所述函数的所述标识符确定已加载所述函数的所述数据中心集合,其中所述数据中心集合包括所述特定数据中心。5.如权利要求1所述的方法,其中用于加载所述函数的所述请求还包括指示所述应用程序正在运行的位置的信息,并且其中确定所述数据中心集合是基于所述数据中心集合中的每个数据中心的位置以及所述应用程序正在运行的所述位置。6.如权利要求1所述的方法,其中所述应用程序包括调用所述函数的执行的指令,所述指令包括与所述函数分配器相关联而非与所述特定数据中心相关联的地址。7.如权利要求1所述的方法,其中所述数据中心集合不包括所述特定数据中心,并且所述方法还包括:在接收到用于执行所述函数的所述请求之后,确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数;以及基于确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数,将所述函数分配到所述特定数据中心以将所述函数加载到所述特定数据中心中。
8.如权利要求1所述的方法,还包括:确定在阈值时间段内还没有选择所述数据中心集合中的至少一个数据中心来执行所述函数;以及从所述至少一个数据中心删除所述函数。9.一种非暂时性计算机可读介质,其包括要在计算机系统中执行的指令,其中所述指令在所述计算机系统中被执行时,使所述计算机系统执行用于在包括多个数据中心的云计算系统的数据中心中执行函数的操作,所述多个数据中心中的每一个包括一个或多个计算资源,所述操作包括:在函数分配器处从应用程序接收用于加载函数的请求,所述用于加载函数的请求不包含用于执行所述函数的任何请求;响应于接收到用于加载所述函数的所述请求:确定数据中心集合来分配所述函数;在所述函数分配器处存储将所述函数的标识符与所述数据中心集合相关联的信息;以及将所述函数分配给所述数据中心集合,以将所述函数加载到所述数据中心集合的每个数据中心中;在将所述函数分配给所述数据中心集合之后,在所述函数分配器处从所述应用程序接收用于执行所述函数的请求,用于执行所述函数的所述请求包括所述函数的所述标识符;以及响应于接收到用于执行所述函数的所述请求:由所述函数分配器选择特定数据中心来执行所述函数;以及通过所述函数分配器使所述特定数据中心执行所述函数。10.如权利要求9所述的非暂时性计算机可读介质,其中所述操作进一步包括:在接收到用于执行所述函数的所述请求之后,基于所述函数的所述标识符确定已加载所述函数的所述数据中心集合,其中所述数据中心集合包括所述特定数据中心。11.如权利要求9所述的非暂时性计算机可读介质,其中用于加载所述函数的所述请求还包括指示所述应用程序正在运行的位置的信息,并且其中确定所述数据中心集合是基于所述数据中心集合中的每个数据中心的位置以及所述应用程序正在运行的所述位置。12.如权利要求9所述的非暂时性计算机可读介质,其中所述应用程序包括调用所述函数的执行的第二指令,所述第二指令包括与所述函数分配器相关联而非与所述特定数据中心相关联的地址。13.如权利要求9所述的非暂时性计算机可读介质,其中所述数据中心集合不包括所述特定数据中心,并且其中所述操作还包括:在接收到用于执行所述函数的所述请求之后,确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数;以及基于确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数,将所述函数分配到所述特定数据中心以将所述函数加载到所述特定数据中心。14.如权利要求9所述的非暂时性计算机可读介质,其中所述操作还包括:确定在阈值时间段内还没有选择所述数据中心集合中的至少一个数据中心来执行所
述函数;以及从所述至少一个数据中心删除所述函数。15.一种计算机系统,包括至少一个处理器,其被配置为执行用于在包括多个数据中心的云计算系统的数据中心中执行函数的操作,所述多个数据中心中的每一个包括一个或多个计算资源,所述操作包括:在函数分配器处从应用程序接收用于加载函数的请求,所述用于加载函数的请求不包含用于执行所述函数的任何请求;响应于接收到用于加载所述函数的所述请求:确定数据中心集合来分配所述函数;在所述函数分配器处存储将所述函数的标识符与所述数据中心集合相关联的信息;以及将所述函数分配给所述数据中心集合,以将所述函数加载到所述数据中心集合的每个数据中心中;在将所述函数分配给所述数据中心集合之后,在所述函数分配器处从所述应用程序接收用于执行所述函数的请求,用于执行所述函数的所述请求包括所述函数的所述标识符;以及响应于接收到用于执行所述函数的所述请求:由所述函数分配器选择特定数据中心来执行所述函数;以及通过所述函数分配器使所述特定数据中心执行所述函数。16.如权利要求15所述的计算机系统,其中所述操作还包括:在接收到用于执行所述函数的所述请求之后,基于所述函数的所述标识符确定已加载所述函数的所述数据中心集合,其中所述数据中心集合包括所述特定数据中心。17.如权利要求15所述的计算机系统,其中用于加载所述函数的所述请求还包括指示所述应用程序正在运行的位置的信息,并且其中确定所述数据中心集合是基于所述数据中心集合中的每个数据中心的位置以及所述应用程序正在运行的所述位置。18.如权利要求15所述的计算机系统,其中所述应用程序包括调用所述函数的执行的指令,所述指令包括与所述函数分配器相关联而非与所述特定数据中心相关联的地址。19.如权利要求15所述的计算机系统,其中所述数据中心集合不包括所述特定数据中心,并且所述操作还包括:在接收到用于执行所述函数的所述请求之后,确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数;以及基于确定所述数据中心集合中的每个数据中心不适合执行用于所述应用程序的所述函数,将所述函数分配到所述特定数据中心以将所述函数加载到所述特定数据中心中。20.如权利要求15所述的计算机系统,其中所述操作还包括:确定在阈值时间段内还没有选择所述数据中心集合中的至少一个数据中心来执行所述函数;以及从所述至少一个数据中心删除所述函数。

技术总结
本发明涉及一种函数即服务(FAAS)执行分配器。本公开提供一种用于在提供函数即服务(FaaS)的云系统的数据中心之间分配函数的方法。例如,本公开提供一个或更多个函数分配器,其被配置为接收对加载或执行函数的请求,自动地确定合适的数据中心以加载或执行函数,以及在所确定的数据中心上自动地加载或执行函数。在某些实施例中,函数分配器还被配置为确定合适的数据中心以提供用于该函数的存储资源,并配置该函数以利用所确定的数据中心的存储资源。源。源。


技术研发人员:A
受保护的技术使用者:威睿公司
技术研发日:2019.08.15
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-1033.html

最新回复(0)