CN114816713A - 函数调用方法及系统 - Google Patents
函数调用方法及系统 Download PDFInfo
- Publication number
- CN114816713A CN114816713A CN202210527313.7A CN202210527313A CN114816713A CN 114816713 A CN114816713 A CN 114816713A CN 202210527313 A CN202210527313 A CN 202210527313A CN 114816713 A CN114816713 A CN 114816713A
- Authority
- CN
- China
- Prior art keywords
- target
- function
- carrier
- computing node
- idle
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 239000000969 carrier Substances 0.000 claims abstract description 96
- 239000002184 metal Substances 0.000 claims description 67
- 238000004364 calculation method Methods 0.000 claims description 43
- 238000011084 recovery Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 description 255
- 230000008569 process Effects 0.000 description 16
- 238000004590 computer program Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了一种函数调用方法及系统。该函数调用方法包括在调度装置获取到对目标函数的函数调用请求的情况下,通过调度装置从多个计算节点中确定空闲的目标计算节点;向目标计算节点发送函数调用请求,其中,多个计算节点中的每个计算节点中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;通过目标计算节点,根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;通过目标计算节点在目标空闲载体中调用目标函数。根据本申请实施例,能够降低突发流量下的函数冷启动延迟时长,提升用户使用体验。
Description
技术领域
本申请属于云计算技术,尤其涉及一种函数调用方法及系统。
背景技术
随着云计算技术的不断发展,越来越多的商家倾向于使用云服务器来为客户提供服务。其中,无服务器化的函数计算平台可以为用户提供弹性的FAAS(Function asaservice,函数即服务)服务。
相关技术中,对于突发流量,在基于某个事件触发调用某个函数计算时,函数冷启动所需时间往往较长,容易出现延迟毛刺,使得用户体验较差,特别是对于对冷启动延迟敏感的应用来说,往往是不可接受的。
发明内容
本申请实施例提供一种函数调用方法及系统,能够降低突发流量下的函数冷启动延迟时长,提升用户使用体验。
第一方面,本申请实施例提供一种函数调用方法,应用于函数计算系统,函数计算系统包括调度装置和多个计算节点,该方法包括:
在调度装置获取到对目标函数的函数调用请求的情况下,通过调度装置从多个计算节点中确定空闲的目标计算节点;
向目标计算节点发送函数调用请求,其中,多个计算节点中的每个计算节点中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;
通过目标计算节点,根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
通过目标计算节点在目标空闲载体中调用目标函数。
第二方面,本申请实施例提供一种函数调用方法,应用于函数计算系统,函数计算系统包括调度装置和多个裸金属服务器,该方法包括:
在调度装置获取到对目标函数的函数调用请求的情况下,通过调度装置从多个裸金属服务器中确定空闲的目标裸金属服务器;
向目标裸金属服务器发送函数调用请求,其中,多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的;
通过目标裸金属服务器,根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
通过目标裸金属服务器在目标空闲载体中调用目标函数。
第三方面,本申请实施例提供了一种函数计算系统,该系统包括调度装置和多个计算节点;
调度装置,用于在获取到对目标函数的函数调用请求的情况下,从多个计算节点中确定空闲的目标计算节点;
调度装置,还用于向目标计算节点发送函数调用请求,其中,多个计算节点中的每个计算节点中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;
目标计算节点,用于根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
目标计算节点,还用于在目标空闲载体中调用目标函数。
第四方面,本申请实施例提供了一种函数计算系统,该系统包括调度装置和多个裸金属服务器;
调度装置,用于在获取到对目标函数的函数调用请求的情况下,从多个裸金属服务器中确定空闲的目标裸金属服务器;
调度装置,还用于向目标裸金属服务器发送函数调用请求,其中,多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的;
目标裸金属服务器,用于根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
目标裸金属服务器,还用于在目标空闲载体中调用目标函数。
第五方面,本申请实施例提供了一种计算机设备,该计算机设备包括:存储器和处理器;
存储器,用于存储计算机程序;
处理器,用于执行存储器中存储的计算机程序,计算机程序运行时使得处理器执行如第一方面的任意一项实施例中的函数调用方法的步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储程序或指令,在程序或指令被计算机设备执行的情况下,使得计算机设备执行如第一方面的任一项实施例中的函数调用方法的步骤。
第七方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,在计算机程序被计算机设备执行的情况下,使得计算机设备执行如第一方面的任一项实施例中的函数调用方法的步骤。
本申请实施例中的函数调用方法及系统,通过将函数计算系统分为两层,由调度装置负责从上层的多个计算节点中挑选空闲的目标计算节点,且由下层的计算节点从载体资源池中获取空闲载体,且下层的载体资源池中的载体数量是由各自计算节点根据自身的资源占用情况动态调整的。这样,上层调度装置不用关心具体载体的分布情况,也不维护载体的具体信息,可以简化上层调度策略,减少载体调度时间,从而可以降低突发流量下的函数冷启动延迟时长,提升用户使用体验。
附图说明
从下面结合附图对本申请的具体实施方式的描述中可以更好地理解本申请其中,相同或相似的附图标记表示相同或相似的特征。
图1是本申请提供的函数调用方法所适用的一个示例的架构图;
图2是本申请提供的函数计算系统资源池的一个示例的结构示意图;
图3是本申请一个实施例提供的函数调用方法的流程示意图;
图4是本申请提供的计算节点所使用镜像的一示例的示意图;
图5是本申请另一个实施例提供的函数调用方法的流程示意图;
图6是本申请再一个实施例提供的函数调用方法的流程示意图;
图7是本申请提供的空闲载体数量动态调整策略的一示例的流程示意图;
图8是本申请提供的载体生命周期的一示例的示意图;
图9是本申请又一个实施例提供的函数调用方法的流程示意图;
图10是本申请一个实施例提供的函数计算系统的结构示意图;
图11是本申请另一个实施例提供的函数计算系统的结构示意图;
图12是本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面首先对本申请可能涉及的术语进行解释说明:
容器:一种轻量的资源封装单位;
函数:函数是系统调度和运行的单位,可以把函数理解为仓库里的每个代码文件,该文件可以是一个代码函数,也可以是多个代码函数;
Serverless:无服务器化,一种无需用户关心服务器运营的研发运营新模式;
FAAS:“函数即服务”,它允许开发人员以函数的形式来构建、计算、运行和管理应用,无需维护自己的基础架构;
冷启动:函数调用链路中的代码下载、启动函数实例容器、运行时初始化、代码初始化等环节;
ECS:ECS(Elastic Compute Service,云服务器)是一种简单高效、处理能力可弹性伸缩的计算服务。为用户提供虚拟机实例;
runtime:即函数运行时,用于提供针对不同语言的、在执行环境中运行的环境。该函数运行时可作为函数计算和用户函数之间的接力员,传递函数调用的事件(event)、上下文信息(context)和响应;
动态挂载:指为一个已经创建出的容器,通过更新容器的Volume/Mount配置,动态的修改容器目录的内容;
函数layer:用户可以将函数依赖的公共库提炼到层layer,以减少部署、更新时的代码包体积,且各layer之间可按照先后顺序合并内容部署到/opt目录;
Bootstrap入口:serverless runtime内的一个可执行文件,用于拉起用户函数代码。
当前对于FAAS平台,用户突发函数调用会导致大量容器冷启动的产生,从而在函数调用时出现抖动和时延,影响用户的使用体验。示例性地,函数冷启动过程中由于需要经历容器启动、代码下载、runtime初始化、服务逻辑初始化等环节,这些时间加起来可能将函数调用请求的处理耗时拉高至500ms-30s,对于延迟敏感(<100ms)的应用,这样的延迟不可接受。
为了解决现有技术问题,本申请实施例提供了一种函数调用方法及系统。本申请所提供的函数调用方法,可以应用于如图1所示的架构中,具体结合图1进行详细说明。
图1是本申请提供的函数调用方法所适用的一示例的架构图。
如图1所示,该架构图中可以包括函数计算系统10和至少一个电子设备11。函数计算系统10可以通过网络与至少一个电子设备11建立连接并进行信息交互。其中,电子设备11可以是手机、平板电脑、笔记本电脑、台式电脑等可以进行云端服务访问的设备。函数计算系统10可以是包括多个云服务器的服务器集群等具有函数计算功能的平台。函数计算系统10中可包括调度装置和多个计算节点,其中,一个计算节点可以为一个虚拟机实例,调度装置可用于进行资源调度,以便向电子设备11提供函数计算服务。
在上述架构中,函数计算可基于多种事件触发,在一些示例中,用户在使用电子设备11上的目标应用时,若目标应用为基于FAAS服务的应用,当目标应用触发目标事件时,可触发调用目标函数,在此情况下,电子设备11可向函数计算系统10发送针对目标函数的函数调用请求,以使函数计算系统10根据该函数调用请求调用云端的目标函数,从而为用户提供服务。其中,目标函数例如可以是深度学习模型对应的函数。
基于上述架构,本申请实施例提供的函数调用方法可以应用于基于FAAS服务进行函数调用的场景。
在其中一些应用场景中,设备应用中的视频推荐事件可触发对云端中视频推荐模型对应多个函数的调用,以使云端向应用提供视频推荐服务。示例性地,在电子设备的应用中生成或启动视频推荐事件后,电子设备可向云端对应的函数计算系统,发送针对视频推荐模型相关函数的函数调用请求。针对每个函数,函数计算系统中的调度装置在收到该函数的函数调用请求后,可根据该函数调用请求从多个计算节点中确定空闲的目标计算节点,并向目标计算节点发送函数调用请求。该目标计算节点根据函数调用请求从目标载体资源池中获取目标空闲载体,以及与函数调用请求对应的函数,在目标空闲载体中调用该函数,以实现通过函数计算系统对视频推荐模型相关函数的调用,向电子设备提供视频推荐服务。
在另一些应用场景中,设备应用中的图像生成事件可触发对云端中图像生成模型对应多个函数的调用,以使云端向应用提供根据真实图像生成对应卡通图像的图像生成服务。示例性地,在电子设备的应用中生成或启动图像生成事件后,电子设备可向云端对应的函数计算系统,发送针对图像生成模型相关函数的函数调用请求。针对每个函数,函数计算系统中的调度装置在收到该函数的函数调用请求后,可根据该函数调用请求从多个计算节点中确定空闲的目标计算节点,并向目标计算节点发送函数调用请求。该目标计算节点根据函数调用请求从目标载体资源池中获取目标空闲载体,以及与函数调用请求对应的函数,在目标空闲载体中调用该函数,以实现通过函数计算系统对图像生成模型的调用,向电子设备提供图像生成服务。
需要说明的是,上述本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于上述各个应用场景,针对函数冷启动延迟的问题,如图2所示,本申请实施例将函数计算系统中的资源池分为两层,其中,一层为虚拟机层,另一层为载体层。在虚拟机层中,调度装置可用于管理包含多个计算节点的节点资源池21,其中可维护一份虚拟机列表;在载体层中,在每个计算节点内分别部署执行引擎模块,该执行引擎模块可用于管理载体资源池22中的载体。上层的调度装置不关心具体载体的分布情况,将资源池载体的管理工作交给下层具体的计算节点。如此,可简化上层调度策略,进而可以减少由于载体调度时间造成的冷启动时间的延长。
需要说明的是,本申请实施例中的载体可以包括容器、虚拟机等能够任意支持函数应用运行的形态。
基于上述资源池分层情况,下面对本申请实施例所提供的函数调用方法进行介绍。
图3是本申请一个实施例提供的函数调用方法的流程示意图。该函数调用方法可应用于如图1所示的函数计算系统。
如图3所示,该函数调用方法具体可以包括如下步骤:
S310、在调度装置获取到对目标函数的函数调用请求的情况下,通过调度装置从多个计算节点中确定空闲的目标计算节点;
S320、向目标计算节点发送函数调用请求,其中,多个计算节点中的每个计算节点中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;
S330、通过目标计算节点,根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
S340、通过目标计算节点在目标空闲载体中调用目标函数。
由此,通过将函数计算系统分为两层,由调度装置负责从上层的多个计算节点中挑选空闲的目标计算节点,且由下层的计算节点从载体资源池中获取空闲载体,且下层的载体资源池中的载体数量是由各自计算节点根据自身的资源占用情况动态调整的。这样,上层调度装置不用关心具体载体的分布情况,也不维护载体的具体信息,可以简化上层调度策略,减少载体调度时间,从而可以降低突发流量下的函数冷启动延迟时长,提升用户使用体验。
下面介绍上述各个步骤的具体实现方式。
在一些实施方式中,在S310中,调度装置获取函数调用请求的方式包括但不限于,接收电子设备发送的针对目标函数的调用请求,或者基于某个应用服务的服务请求而生成的与该服务相关的函数调用请求。
另外,目标计算节点的确定方式例如可以是从多个计算节点的空闲节点中,随机选取一个计算节点作为目标计算节点,当然,也可以是从多个计算节点中选取最空闲的计算节点作为该目标计算节点。
基于此,在一些示例中,上述S310中从多个计算节点中确定空闲的目标计算节点,具体可以包括:
计算多个计算节点中每个计算节点的空闲资源量;
将多个计算节点中空闲资源量最大的计算节点,作为目标计算节点。
这里,空闲资源量包括但不限于内存资源、存储资源和流量资源等。示例性地,调度装置可实时计算每个计算节点上的空闲资源量,在接收到函数调用请求时,根据每个计算节点上的空闲资源量,命中其中空闲资源量最大的计算节点作为目标计算节点。
如此,通过上述实施方式,可为目标函数分配当前最空闲的计算节点进行函数调用,进而可以最大程度上保证函数调用所需的计算资源。
在一些实施方式中,在S320中,在确定目标计算节点后,调度装置可将针对目标函数的函数调用请求下发至该目标计算节点,以便目标计算节点从资源池中获取空闲载体,基于该载体调用目标函数。这样,上层调度装置的调度逻辑简化,从而可以提高处理突发流量的能力,降低函数冷启动延迟。
另外,本实施例中每个计算节点中都设置有相应的载体资源池,且载体资源池的大小是动态改变的。也即,每个计算节点会根据自身节点中资源占用情况,动态调整节点内载体资源池中空闲载体的数量。例如,在资源占用较多时,可减少载体资源池中空闲载体的数量,以降低节点内的资源占用率;在资源占用较少时,可增加载体资源池中空闲载体的数量,以提升函数计算能力,降低大流量情况下的函数调用延迟。
在一些实施方式中,在S330和S340中,目标计算节点在接收到调度装置发送的函数调用请求后,可在节点内的载体资源池中获取一个空闲载体,作为目标空闲载体,并基于该目标空闲载体进行函数调用。
示例性地,目标计算节点中的执行引擎模块在接收到调度装置发送的函数调用请求后,可判断自身的载体资源池内是否有空闲载体,若没有空闲载体,则创建新的空闲载体作为目标空闲载体;若有空闲载体,则随机获取一个空闲载体,作为目标空闲载体。
在获取到目标空闲载体后,该执行引擎模块可在目标空闲载体中动态挂载函数代码、layer等。根据bootstrap入口,执行bootstrap拉起进程,进而实现对目标函数的调用。
另外,为了提高计算节点的稳定性和可靠性,本申请实施例还可为每个计算节点设置回收时间,以便到期收回。基于此,在一些实施方式中,本申请实施例提供的函数调用方法还可以包括:
通过调度装置获取多个计算节点中每个计算节点分别对应的回收时间;
在系统时间到达第一计算节点对应的第一回收时间的情况下,通过调度装置删除第一计算节点对应的虚拟机,其中,第一计算节点包括多个计算节点中的任意节点;
通过调度装置创建新的计算节点对应的虚拟机。
这里,调度装置还可动态维护节点资源池中计算节点的数量,每个计算节点对应的虚拟机可设置有默认的回收时间,超过这一时间后,调度装置可从节点资源池中回收超时的计算节点,例如删除该计算节点对应的虚拟机实例。从而保证能及时淘汰可能存在故障,或者安全风险的虚拟机。回收完成后,系统可通过调度装置对节点资源池进行虚拟机填充,维持节点资源池中计算节点的数量的稳定。
如此,通过动态维护计算节点的数量,在保证系统应有的函数计算能力的同时,可提高系统中现有计算节点的稳定性和可靠性,进而提高系统函数计算服务的稳定性。
另外,本申请实施例还为不同用户提供了一个统一的镜像,将多种函数运行环境对应的runtime设置在一个镜像中,这样,无需关心用户函数具体配置的是何种runtime,均可从镜像中获取到当前函数对应的runtime配置在载体中,从而实现随机选择载体资源池中的任意载体,都可以部署函数运行。
基于此,在一些实施方式中,上述S340具体可以包括:
根据目标函数对应的运行环境配置信息,从镜像中获取与目标函数对应的目标函数运行时,其中,镜像中包括与多种函数运行环境对应的函数运行时;
基于目标函数运行时,在目标空闲载体中调用目标函数。
这里,运行环境配置信息可以包括函数代码所采用的编程语言种类信息。不同语言种类对应的函数代码,需要不同的函数运行环境,进而对应不同的函数运行时(runtime)。
示例性地,如图4所示,镜像中可包括Node.js、Python3、Php7.2、Java11等多种语言对应的runtime,若目标函数采用Node.js编写的代码,则可在目标计算节点执行Bootstrap拉起进程时,根据目标函数的配置信息从镜像中拉起Node.js对应的runtime,以便进行函数调用。
为了进一步提高载体之间租户的亲和性,在一些实施方式中,空闲载体之间载体运行环境隔离。示例性地,载体运行时环境可采用轻量级虚拟机,如此可做到更好的隔离性,使得上层的调度装置和计算节点中的执行引擎模块在执行函数调用操作时不需要考虑载体之间租户的亲和性。
如此,通过提供统一镜像和采用运行时环境隔离的载体,可以使载体资源池中的载体环境统一,这样,计算节点才能不关心用户函数具体配置的是何种runtime,从而实现从载体资源池中随机选择任何一个载体,都可部署采用不同语言环境的函数运行。
需要说明的是,本申请实施例中载体资源池中的载体不复用,一段时间内没有调用后将被销毁并相应地在载体资源池中进行新载体的动态填充。
基于此,在其中一些实施例中,如图5所示,本申请实施例提供的函数调用方法还可以包括:
S510、多个计算节点中的每个计算节点分别获取自身计算节点内载体资源池中空闲载体的数量;
S520、在空闲载体的数量小于目标数量值的情况下,通过计算节点确定自身计算节点内的载体创建并发度;
S530、在载体创建并发度小于预设阈值的情况下,通过计算节点在载体资源池中创建新的空闲载体。
这里,每个计算节点可维护自身节点内载体资源池中空闲载体的数量,实现载体的动态填充。其中,不同的计算节点对应的目标数量值(即Target),可以相同,也可以不同,对于后者的情况,目标数量值可根据当前计算节点内的资源占用状态动态确定。
另外,由于每个计算节点内除了在载体资源池中创建新载体的情况之外,还有可能存在需要在载体资源池之外创建新载体的情况,因此,这里的载体创建并发度中可包括该节点内当前正在创建的载体的并发程度。也即,载体创建并发度包括载体资源池内的载体创建并发度和载体资源池外的载体创建并发度,载体资源池内的当前载体填充数量与函数实例生产共享该并发度。
示例性地,每个计算节点按照预设周期检测本节点中载体资源池内空闲载体的数量,若空闲载体的数量小于Target,说明此时载体资源池中的空闲载体数量不够,则可进一步通过确定当前计算节点内载体创建并发度,来确定当前是否立刻进行载体填充;若空闲载体的数量大于或等于Target,说明此时载体资源池中的空闲载体数量足够,无需进行载体填充。进一步地,在空闲载体的数量小于Target的情况下,若当前计算节点内载体创建并发度小于预设阈值,例如小于最大并发度的50%,则说明当前载体创建并不拥挤,可以执行在载体资源池中创建新载体的操作,直至载体资源池中的空闲载体的数量达到Target;若当前计算节点内载体创建并发度不小于预设阈值,例如大于或等于最大并发度的50%,则说明当前载体创建较为拥挤,为了避免影响节点中其他正常的载体创建过程,可以等待至载体创建并发度小于预设阈值时,再执行在载体资源池中创建新载体的操作。
如此,通过上述载体资源池的动态填充策略,可以在不依赖过多数据的情况下,实现载体资源池大小的动态调整,使得载体调度更为灵活,且基于计算节点的动态填充策略,也可提高函数计算系统内的载体部署密度。另外,资源池载体生命周期管理下放到计算节点来执行,上层调度载体策略简化,可以减少调度时间造成的冷启动时间延长。除此之外,按照固定周期填充载体资源池,且填充时考虑到节点负载、载体创建并发度,可以避免载体填充过程本身占用计算节点过多的资源。
基于此,针对不同计算节点对应不同目标数量值的情况,为了确定目标数量值,在一些实施方式中,如图6所示,在上述S520之前,本申请实施例提供的函数调用方法还可以包括:S610-S630,具体如下所示。
S610、通过计算节点根据单节点每秒请求数限制值,确定与计算节点对应的载体数量最小值。
这里,单节点QPS(Query Per Second,每秒请求数)限制值可用于表征单个计算节点在单位时间内最多能够处理的请求的数量值。如此,可参考该单节点QPS限制值,设置一个较为合理的值作为资源池空闲载体的载体数量最小值,也即目标数量值的取值下限,从而保证该计算节点具有一定的请求处理能力。
在一些实施方式中,上述S610具体可以包括:
将单节点每秒请求数限制值与第一预设比例的乘积,作为与计算节点对应的载体数量最小值,其中,第一预设比例小于1。
示例性地,可按照公式Min=单节点QPS限制值*第一预设比例,来确定资源池空闲载体的载体数量最小值。其中,Min表示载体数量最小值,第一预设比例<1。
如此,可在保证计算节点具有一定的请求处理能力的同时,不至于达到处理能力上限,从而能够保留一定的资源,用于处理其他事件。
S620、通过计算节点根据载体资源池的载体数量配置值,或者计算节点对应的载体数量上限值和当前载体数量值,确定与计算节点对应的载体数量最大值。
这里,载体数量配置值也即载体资源池大小配置值,其可根据计算节点的设备类型进行预先配置;载体数量上限值可以是根据计算节点的设备类型设置的固定值;当前载体数量值可以是计算节点实时统计的动态值,其中包括当前计算节点内正在使用的载体和空闲的载体。
示例性地,可直接将载体数量配置值,作为该计算节点内资源池空闲载体的载体数量最大值,当然,也可参考载体数量上限和当前载体数量值的差值,确定一个合适的值,并将该值作为该计算节点内资源池空闲载体的载体数量最大值。
基于此,为了提高准确性,在一些实施方式中,上述S620具体可以包括:
计算载体数上限值与当前载体数量值之差,与第二预设比例的乘积,得到载体数量实际值,其中,第二预设比例小于1;
将载体资源池的载体数量配置值与载体数量实际值中的最小值,作为与计算节点对应的载体数量最大值。
示例性地,可按照公式Max=min(pool_size配置值,(载体数上限值-当前载体总数)*第二预设比例),来确定资源池空闲载体的载体数量最大值。其中,Max表示载体数量最大值,pool_size配置值即为载体数量配置值,第二预设比例<1。本申请实施例中第二预设比例例如可以是50%,当然也可以是(0,1)中的其他值,在此不作限定。
如此,通过上述载体数量最大值确定方式,可动态地保证资源池空闲载体的数量不超过载体资源池最多能够盛放的空闲载体的数量,也不超过计算节点内最多允许存在的载体的数量。
S630、通过计算节点根据载体数量最小值和载体数量最大值,确定目标数量值。
这里,确定目标数量值的方式包括但不限于,从载体数量最小值和载体数量最大值之间随机选择一个值作为目标数量值。当然,也可按照预设公式,计算得到。其中,预设公式例如可以是Target=(Max+Min)/2。
这样,通过动态地确定目标数量值,可以使计算节点内载体资源池中空闲载体的数量得以动态调整,如此,可使函数计算系统能够适应各种突发流量,从而可以降低函数冷启动延迟。
另外,为了节约计算节点内的内存资源,在一些实施方式中,本申请实施例提供的函数调用方法还可以包括:
在空闲载体的数量大于载体数量最大值的情况下,通过计算节点删除载体资源池中的部分空闲载体,直至载体资源池中空闲载体的数量不大于载体数量最大值。
这里,在载体资源池内空闲载体的数量过多时,可通过销毁资源池中的空闲载体至上述确定的载体数量最大值,使空闲载体数量不至于过多而占用计算节点内的过多内存,从而节约计算节点内的内存资源。
为了便于更好地理解本申请实施例提供的空闲载体数量动态调整策略,在上述各个实施方式的基础上,下面举一个具体例子。
如图7所示,每个计算节点可按照预设周期,计算载体数量的Min、Max和Target,确定资源池相对于Max和Target的大小,也即确定载体资源池中空闲载体的数量相对于Max和Target的大小。在资源池大小>Max,即载体资源池中空闲载体的数量>Max的情况下,销毁载体至Max,进而结束进程;在Target≤资源池大小≤Max,即Target≤载体资源池中空闲载体的数量≤Max的情况下,不执行任何动作,直接结束进程;在资源池大小<Target,即载体资源池中空闲载体的数量<Target的情况下,进一步确定并发度是否超过最大并发的50%,若是,则结束进程,若否,则执行节点并发度增加待填充载体数,进而向载体资源池中填充新的空闲载体,直至空闲载体数量达到Target,结束进程。
如此,通过上述周期性的载体资源池大小调整策略,可提高载体调度灵活性,从而进一步提高系统对突发流量的处理能力,降低函数冷启动延迟。
另外,为了便于计算节点对载体的统计管理,在一些实施方式中,在S620之前,本申请实施例提供的函数调用方法还可以包括:
通过计算节点确定自身计算节点中每个载体对应的载体状态;
通过计算节点对处于预设载体状态的载体的数量进行统计,得到当前载体数量值,其中,预设载体状态包括空闲状态、就绪状态和在用状态。
本申请实施例中,明确了每个载体从填充到销毁期间的多个状态,以便于计算节点统一管理。
示例性地,一个载体的生命周期可如图8所示,载体在不同使用阶段可对应不同的载体状态。其中,处于空闲(Standby)状态的载体可以是:资源池中填充的载体,未动态挂载代码时可处于这一状态,另外,载体和具体的函数绑定执行之前,该载体已经被分配了网卡等一部分计算资源。挂载(Prepared)状态:Standby状态载体挂载代码后所处的状态。使用(In-Use)状态:开始处理调用请求后,通过bootstrap入口文件启动函数进程,载体进入In-Use状态。销毁(Destroyed)状态:一段时间无调用后,载体进入Destroyed状态,并最终被销毁,也即,待销毁状态的载体可以为已绑定函数且函数在预设时间段内未被调用的载体。错误(Error)状态:在载体的整个生命周期中可能因为某些错误而导致载体出错,进而进入该状态。
基于上述各个载体状态的定义,每个计算节点可确定节点内每个载体对应的载体状态,并根据该载体状态对载体进行统一管理,例如统计空闲载体的数量、计算载体数量最大值时统计当前载体数量值等。
以统计当前载体数量值为例,计算节点可按照上述状态规则,确定节点内的每个载体对应的载体状态,进而对处于空闲状态、就绪状态和在用状态的载体的数量进行统计,统计结果即为当前载体数量值。
如此,通过明确每个载体对应的载体状态,可便于计算节点对处于不同状态的载体进行分类统计管理。
另外,在一些实施方式中,本申请实施例提供的函数调用方法还可以包括:
通过计算节点删除待销毁状态的载体。
这里,为了及时清理短时间内没有被调用过的载体,可定时删除计算节点中处于待销毁状态的载体,如此,可及时释放占用的资源,促进计算节点创建新的空闲载体至载体资源池,以便等待其他函数的调用。
下面结合裸金属服务器对本申请提供的函数调用方法进行具体介绍。
图9是本申请又一个实施例提供的函数调用方法的流程示意图。该函数调用方法可应用于函数计算系统,该函数计算系统可包括调度装置和多个裸金属服务器。
如图9所示,该函数调用方法具体可以包括如下步骤:
S910、在调度装置获取到对目标函数的函数调用请求的情况下,通过调度装置从多个裸金属服务器中确定空闲的目标裸金属服务器;
S920、向目标裸金属服务器发送函数调用请求,其中,多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的;
S930、通过目标裸金属服务器,根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
S940、通过目标裸金属服务器在目标空闲载体中调用目标函数。
这里,前述实施例中的计算节点可以是裸金属服务器,裸金属服务器可以被看作是一种性能更好,规格更大的特殊的ECS。其他相关步骤的解释可参见上述实施例中的相关描述,在此不再赘述。
由此,通过将载体部署在大规格裸金属实例上,由于用于进行载体管理所消耗的资源较少,因此每个裸金属服务器内更多的资源可以对应为设置更多的载体,节约节点资源,进一步提高载体部署密度。
基于相同的发明构思,本申请还提供了一种函数计算系统。具体结合图10进行详细说明。
图10是本申请一个实施例提供的函数计算系统的结构示意图。
如图10所示,该函数计算系统1000可以包括调度装置1001和多个计算节点1002。其中,多个计算节点中的每个计算节点中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的。
调度装置1001,用于在获取到对目标函数的函数调用请求的情况下,从多个计算节点1002中确定空闲的目标计算节点10021;
调度装置1001,还用于向目标计算节点10021发送函数调用请求;
目标计算节点10021,用于根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
目标计算节点10021,还用于在目标空闲载体中调用目标函数。
下面对上述函数计算系统1000进行详细说明,具体如下所示:
在其中一些实施例中,计算节点1002还用于分别获取自身计算节点内载体资源池中空闲载体的数量;
计算节点1002还用于在所述空闲载体的数量小于目标数量值的情况下,确定自身计算节点内的载体创建并发度;
计算节点1002还用于在所述载体创建并发度小于预设阈值的情况下,在所述载体资源池中创建新的空闲载体。
在其中一些实施例中,计算节点1002还用于通过所述计算节点根据单节点每秒请求数限制值,确定与所述计算节点对应的载体数量最小值;
计算节点1002还用于根据所述载体资源池的载体数量配置值,或者所述计算节点对应的载体数量上限值和当前载体数量值,确定与所述计算节点对应的载体数量最大值;
计算节点1002还用于根据所述载体数量最小值和所述载体数量最大值,确定所述目标数量值。
在其中一些实施例中,计算节点1002还用于将所述单节点每秒请求数限制值与第一预设比例的乘积,作为与所述计算节点对应的所述载体数量最小值,其中,所述第一预设比例小于1。
在其中一些实施例中,计算节点1002还用于计算所述载体数上限值与所述当前载体数量值之差,与第二预设比例的乘积,得到载体数量实际值,其中,所述第二预设比例小于1;
将所述载体资源池的载体数量配置值与所述载体数量实际值中的最小值,作为与所述计算节点对应的所述载体数量最大值。
在其中一些实施例中,计算节点1002还用于在所述空闲载体的数量大于所述载体数量最大值的情况下,删除所述载体资源池中的部分空闲载体,直至所述载体资源池中空闲载体的数量不大于所述载体数量最大值。
在其中一些实施例中,计算节点1002还用于确定自身计算节点中每个载体对应的载体状态;
计算节点1002还用于对处于预设载体状态的载体的数量进行统计,得到所述当前载体数量值,其中,所述预设载体状态包括空闲状态、就绪状态和在用状态。
在其中一些实施例中,所述载体状态还包括待销毁状态,所述待销毁状态的载体包括已绑定函数且所述函数在预设时间段内未被调用的载体;计算节点1002还用于删除所述待销毁状态的载体。
在其中一些实施例中,目标计算节点10021还用于根据所述目标函数对应的运行环境配置信息,从镜像中获取与所述目标函数对应的目标函数运行时,其中,所述镜像中包括与多种函数运行环境对应的函数运行时;
目标计算节点10021,还用于基于所述目标函数运行时,在所述目标空闲载体中调用所述目标函数。
在其中一些实施例中,调度装置1001还用于获取所述多个计算节点中每个计算节点分别对应的回收时间;
调度装置1001还用于在系统时间到达第一计算节点对应的第一回收时间的情况下,删除所述第一计算节点对应的虚拟机,其中,所述第一计算节点包括所述多个计算节点中的任意节点;
调度装置1001还用于创建新的计算节点对应的虚拟机。
在其中一些实施例中,调度装置1001还用于计算所述多个计算节点中每个计算节点的空闲资源量;
调度装置1001,还用于将所述多个计算节点中空闲资源量最大的计算节点,作为所述目标计算节点。
在其中一些实施例中,所述空闲载体之间载体运行环境隔离。
由此,通过将函数计算系统分为两层,由调度装置负责从上层的多个计算节点中挑选空闲的目标计算节点,且将载体调度策略下放至下层的计算节点中执行,且下层的载体资源池中的载体数量是由各自计算节点根据自身的资源占用情况动态调整的。这样,上层调度装置不用关心具体载体的分布情况,不维护载体的具体信息,可以简化上层调度策略,减少载体调度时间,降低冷启动延迟时长。同时,载体数量的动态调整可以使系统能够应对各种负载流量的场景。因此,本申请实施例能够降低突发流量下的函数冷启动延迟时长,提升用户使用体验。
本申请还提供了一种函数计算系统。具体结合图11进行详细说明。
图11是本申请另一个实施例提供的函数计算系统的结构示意图。该函数计算系统1100包括调度装置1101和多个裸金属服务器1102。其中,多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的。
如图11所示,该函数计算系统1100可以包括:
调度装置1101,用于在获取到对目标函数的函数调用请求的情况下,从多个裸金属服务器1102中确定空闲的目标裸金属服务器11021;
调度装置1101,还用于向目标裸金属服务器发送函数调用请求;
目标裸金属服务器11021,用于根据函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与函数调用请求对应的目标函数;
目标裸金属服务器11021,还用于在目标空闲载体中调用目标函数。
由此,通过将载体部署在大规格裸金属实例上,由于用于进行载体管理所消耗的资源较少,因此每个裸金属服务器内更多的资源可以对应为设置更多的载体,节约节点资源,进一步提高载体部署密度。
图12是本申请一个实施例提供的计算机设备的硬件结构示意图。
如图12所示,计算机设备1200包括输入设备1201、输入接口1202、处理器1203、存储器1204、输出接口1205、以及输出设备1206。
输入接口1202、处理器1203、存储器1204、以及输出接口1205通过总线1210相互连接,输入设备1201和输出设备1206分别通过输入接口1202和输出接口1205与总线1210连接,进而与计算机设备1200的其他组件连接。具体地,输入设备1201接收来自外部的输入信息,并通过输入接口1202将输入信息传送到处理器1203;处理器1203基于存储器1204中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器1204中,然后通过输出接口1205将输出信息传送到输出设备1206;输出设备1206将输出信息输出到计算机设备1200的外部供用户使用。
在一个实施例中,图12所示的计算机设备1200可以被实现为一种数据处理设备,该数据处理设备可以包括:存储器,被配置为存储程序;处理器,被配置为运行存储器中存储的程序,以执行上述实施例描述的数据处理方法。
在一个实施例中,该存储器还可以用于存储上述多个信息以及结合上述图1至图9描述的函数调用过程中每个步骤的计算结果。作为示例,该计算结果至少包括:载体数量最小值、载体数量最大值、目标数量值等。
根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机可读存储介质。例如,本申请的实施例包括一种计算机可读存储介质,其包括在计算机可读存储介质上存储程序或指令,在程序或指令被计算机设备执行的情况下,使得计算机设备执行上述方法的步骤。
根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以从网络上被下载和安装,和/或从可拆卸存储介质被安装。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令,当其在计算机上运行时,使得计算机执行上述各个实施例中描述的方法。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (15)
1.一种函数调用方法,应用于函数计算系统,所述函数计算系统包括调度装置和多个计算节点,所述方法包括:
在所述调度装置获取到对目标函数的函数调用请求的情况下,通过所述调度装置从所述多个计算节点中确定空闲的目标计算节点;
向所述目标计算节点发送所述函数调用请求,其中,所述多个计算节点中的每个计算节点中分别设置载体资源池,所述载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;
通过所述目标计算节点,根据所述函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与所述函数调用请求对应的所述目标函数;
通过所述目标计算节点在所述目标空闲载体中调用所述目标函数。
2.根据权利要求1所述的方法,还包括:
所述多个计算节点中的每个计算节点分别获取自身计算节点内载体资源池中空闲载体的数量;
在所述空闲载体的数量小于目标数量值的情况下,通过所述计算节点确定自身计算节点内的载体创建并发度;
在所述载体创建并发度小于预设阈值的情况下,通过所述计算节点在所述载体资源池中创建新的空闲载体。
3.根据权利要求2所述的方法,其中,在所述空闲载体的数量小于目标数量值的情况下,通过所述计算节点确定自身计算节点内的载体创建并发度之前,所述方法还包括:
通过所述计算节点根据单节点每秒请求数限制值,确定与所述计算节点对应的载体数量最小值;
通过所述计算节点根据所述载体资源池的载体数量配置值,或者所述计算节点对应的载体数量上限值和当前载体数量值,确定与所述计算节点对应的载体数量最大值;
通过所述计算节点根据所述载体数量最小值和所述载体数量最大值,确定所述目标数量值。
4.根据权利要求3所述的方法,其中,所述根据单节点每秒请求数限制值,确定与所述计算节点对应的载体数量最小值,包括:
将所述单节点每秒请求数限制值与第一预设比例的乘积,作为与所述计算节点对应的所述载体数量最小值,其中,所述第一预设比例小于1。
5.根据权利要求3所述的方法,其中,所述根据所述载体资源池的载体数量配置值,或者所述计算节点对应的载体数量上限值和当前载体数量值,确定与所述计算节点对应的载体数量最大值,包括:
计算所述载体数上限值与所述当前载体数量值之差,与第二预设比例的乘积,得到载体数量实际值,其中,所述第二预设比例小于1;
将所述载体资源池的载体数量配置值与所述载体数量实际值中的最小值,作为与所述计算节点对应的所述载体数量最大值。
6.根据权利要求3所述的方法,还包括:
在所述空闲载体的数量大于所述载体数量最大值的情况下,通过所述计算节点删除所述载体资源池中的部分空闲载体,直至所述载体资源池中空闲载体的数量不大于所述载体数量最大值。
7.根据权利要求3所述的方法,其中,在通过所述计算节点根据所述载体资源池的载体数量配置值,或者所述计算节点对应的载体数量上限值和当前载体数量值,确定与所述计算节点对应的载体数量最大值之前,所述方法还包括:
通过所述计算节点确定自身计算节点中每个载体对应的载体状态;
通过所述计算节点对处于预设载体状态的载体的数量进行统计,得到所述当前载体数量值,其中,所述预设载体状态包括空闲状态、就绪状态和在用状态。
8.根据权利要求7所述的方法,所述载体状态还包括待销毁状态,所述待销毁状态的载体包括已绑定函数且所述函数在预设时间段内未被调用的载体;所述方法还包括:
通过所述计算节点删除所述待销毁状态的载体。
9.根据权利要求1所述的方法,其中,所述在所述目标空闲载体中调用所述目标函数,包括:
根据所述目标函数对应的运行环境配置信息,从镜像中获取与所述目标函数对应的目标函数运行时,其中,所述镜像中包括与多种函数运行环境对应的函数运行时;
基于所述目标函数运行时,在所述目标空闲载体中调用所述目标函数。
10.根据权利要求1所述的方法,还包括:
通过所述调度装置获取所述多个计算节点中每个计算节点分别对应的回收时间;
在系统时间到达第一计算节点对应的第一回收时间的情况下,通过所述调度装置删除所述第一计算节点对应的虚拟机,其中,所述第一计算节点包括所述多个计算节点中的任意节点;
通过所述调度装置创建新的计算节点对应的虚拟机。
11.根据权利要求1所述的方法,其中,所述从所述多个计算节点中确定空闲的目标计算节点,包括:
计算所述多个计算节点中每个计算节点的空闲资源量;
将所述多个计算节点中空闲资源量最大的计算节点,作为所述目标计算节点。
12.根据权利要求1所述的方法,其中,所述空闲载体之间载体运行环境隔离。
13.一种函数调用方法,应用于函数计算系统,所述函数计算系统包括调度装置和多个裸金属服务器,所述方法包括:
在所述调度装置获取到对目标函数的函数调用请求的情况下,通过所述调度装置从所述多个裸金属服务器中确定空闲的目标裸金属服务器;
向所述目标裸金属服务器发送所述函数调用请求,其中,所述多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,所述载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的;
通过所述目标裸金属服务器,根据所述函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与所述函数调用请求对应的所述目标函数;
通过所述目标裸金属服务器在所述目标空闲载体中调用所述目标函数。
14.一种函数计算系统,包括调度装置和多个计算节点;
所述调度装置,用于在获取到对目标函数的函数调用请求的情况下,从所述多个计算节点中确定空闲的目标计算节点;
所述调度装置,还用于向所述目标计算节点发送所述函数调用请求,其中,所述多个计算节点中的每个计算节点中分别设置载体资源池,所述载体资源池中空闲载体的数量是由对应的计算节点根据自身计算节点内的资源占用状态动态调整的;
所述目标计算节点,用于根据所述函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与所述函数调用请求对应的所述目标函数;
所述目标计算节点,还用于在所述目标空闲载体中调用所述目标函数。
15.一种函数计算系统,包括调度装置和多个裸金属服务器;
所述调度装置,用于在获取到对目标函数的函数调用请求的情况下,从所述多个裸金属服务器中确定空闲的目标裸金属服务器;
所述调度装置,还用于向所述目标裸金属服务器发送所述函数调用请求,其中,所述多个裸金属服务器中的每个裸金属服务器中分别设置载体资源池,所述载体资源池中空闲载体的数量是由对应的裸金属服务器根据自身的资源占用状态动态调整的;
所述目标裸金属服务器,用于根据所述函数调用请求从目标载体资源池中获取目标空闲载体,以及获取与所述函数调用请求对应的所述目标函数;
所述目标裸金属服务器,还用于在所述目标空闲载体中调用所述目标函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210527313.7A CN114816713A (zh) | 2022-05-16 | 2022-05-16 | 函数调用方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210527313.7A CN114816713A (zh) | 2022-05-16 | 2022-05-16 | 函数调用方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816713A true CN114816713A (zh) | 2022-07-29 |
Family
ID=82514887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210527313.7A Pending CN114816713A (zh) | 2022-05-16 | 2022-05-16 | 函数调用方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816713A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357342A (zh) * | 2022-08-23 | 2022-11-18 | 北京火山引擎科技有限公司 | 冷启动资源处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200081745A1 (en) * | 2018-09-10 | 2020-03-12 | Nuweba Labs Ltd. | System and method for reducing cold start latency of serverless functions |
CN111475235A (zh) * | 2020-04-13 | 2020-07-31 | 北京字节跳动网络技术有限公司 | 函数计算冷启动的加速方法、装置、设备及存储介质 |
CN113672343A (zh) * | 2021-08-04 | 2021-11-19 | 浪潮云信息技术股份公司 | 一种基于轻量安全容器的函数计算冷启动加速的方法 |
-
2022
- 2022-05-16 CN CN202210527313.7A patent/CN114816713A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200081745A1 (en) * | 2018-09-10 | 2020-03-12 | Nuweba Labs Ltd. | System and method for reducing cold start latency of serverless functions |
CN111475235A (zh) * | 2020-04-13 | 2020-07-31 | 北京字节跳动网络技术有限公司 | 函数计算冷启动的加速方法、装置、设备及存储介质 |
CN113672343A (zh) * | 2021-08-04 | 2021-11-19 | 浪潮云信息技术股份公司 | 一种基于轻量安全容器的函数计算冷启动加速的方法 |
Non-Patent Citations (2)
Title |
---|
JIACHENG SHEN 等: "Defuse: A Dependency-Guided Function Scheduler to Mitigate Cold Starts on FaaS Platforms", 《2021 IEEE 41ST INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS (ICDCS)》, 4 October 2021 (2021-10-04), pages 194 - 204 * |
徐政钧: "无服务器云计算平台中函数启动加速器的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 May 2021 (2021-05-15), pages 139 - 35 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357342A (zh) * | 2022-08-23 | 2022-11-18 | 北京火山引擎科技有限公司 | 冷启动资源处理方法及装置 |
CN115357342B (zh) * | 2022-08-23 | 2024-05-28 | 北京火山引擎科技有限公司 | 冷启动资源处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199194B (zh) | 基于容器集群的资源调度方法、装置、设备和存储介质 | |
CN108683516B (zh) | 一种应用实例的升级方法、装置和系统 | |
CN109150987B (zh) | 基于主机层和容器层的两层式容器集群弹性扩容方法 | |
CN109302483A (zh) | 一种应用程序的管理方法及系统 | |
CN110351366A (zh) | 一种互联网应用的服务调度方法、系统及计算机可读存储介质 | |
CN110166507B (zh) | 多资源调度方法和装置 | |
CN111427675A (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
CN109614167A (zh) | 一种管理插件的方法和系统 | |
CN105354090B (zh) | 虚拟设备的管理方法和装置 | |
CN114816713A (zh) | 函数调用方法及系统 | |
US11144359B1 (en) | Managing sandbox reuse in an on-demand code execution system | |
CN115248692A (zh) | 一种支持多种深度学习框架模型云端部署的装置及方法 | |
US20220103500A1 (en) | Method and device for managing group member, and method for processing group message | |
CN110351107B (zh) | 配置管理方法及装置 | |
CN110781441A (zh) | 基于微服务化架构的新零售业务中台 | |
CN112988062B (zh) | 一种元数据读取限制方法、装置、电子设备及介质 | |
CN108153794B (zh) | 页面缓存数据刷新方法、装置及系统 | |
CN111625344B (zh) | 应用系统中的资源调度系统、方法及装置 | |
CN113535371A (zh) | 一种多线程异步加载资源的方法和装置 | |
CN116643845A (zh) | 缩容方法、容器编排系统、设备及存储介质 | |
CN106550002A (zh) | 一种paas云托管系统及方法 | |
CN116389454A (zh) | 数据下载系统 | |
CN110278109A (zh) | 一种容灾方法及系统 | |
CN115225645A (zh) | 一种服务更新方法、装置、系统和存储介质 | |
CN115277599A (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 |