一种无服务器架构下业务部署的方法和函数管理平台与流程

文档序号:23628433发布日期:2021-01-12 10:42阅读:202来源:国知局
一种无服务器架构下业务部署的方法和函数管理平台与流程

本申请涉及it技术领域,特别涉及一种无服务器架构下业务部署的方法和函数管理平台。



背景技术:

传统的互联网应用主要采用客户端-服务器架构,服务器端需长期维持业务进程来处理客户端请求,并调用代码逻辑完成请求响应流程。

无服务器(serverless)架构是最新兴起的架构模式。在serverless架构中,应用业务逻辑将基于功能即服务(functionsasaservice,faas)形成多个相互独立的功能组件,并以应用程序编程接口(applicationprogramminginterface,api)的形式向外提供服务。

跟传统的客户端-服务器架构的不同在于,serverless架构中,各功能组件的代码可以存储在amazonlambda,azurefunction,googlecloudfunctions等产品上,代码仅在函数功能被调用时才会被运行,当调用响应结束后,运行函数所占用的资源便会释放。serverless架构中函数运行在无状态的容器中,可以由事件触发,完全被第三方管理。因此,租户不需要关心后台服务器或者应用服务的构建,只需关心函数的代码实现即可。

serverless架构中的不同租户的函数执行器运行在共享服务资源池,且由于容器隔离性较弱,多租户共享服务资源池存在安全风险。



技术实现要素:

本申请实施例提供一种无服务器架构下业务部署的方法和函数管理平台,用以解决serverless架构中的不同租户的函数执行器运行在共享服务资源池带来的安全风险问题。

本申请实施例提供的具体技术方案如下:

第一方面,提供一种函数管理平台,包括函数调度器以及函数执行器管理器:

网关为函数管理平台与租户应用的中间设备,所述网关接收来自租户应用的函数调用请求,所述函数调用请求携带函数标识,向所述函数调度器转发所述函数调用请求;所述函数调度器根据租户的资源池信息选择可用主机,向函数执行器管理器发送函数实例创建请求,所述函数实例创建请求携带所述可用主机的主机标识和所述函数标识,所述租户的资源池信息包括租户标识、托管标识以及主机标识,所述托管标识用于指示主机托管于函数管理平台,所述主机标识对应的主机位于租户的资源池中;所述函数执行器管理器接收所述函数实例创建请求,根据所述主机标识在租户资源池中选择运行函数执行器的主机,并在所述主机上创建所述函数标识对应的函数执行器,以使得创建的函数执行器处理所述函数调用请求。

本发明实施例在租户资源池中定义了托管主机,托管主机由函数管理平台管理,在用户需要调用函数时,在托管主机上创建函数执行器,从而即保证函数执行器运行于租户资源池,同时保证运行函数执行器的托管主机对用户不可见,不被用户直接操作。

本发明实施例通过在租户资源池中建立函数执行器,由于不同租户的资源池相互隔离,从而使得不同租户的函数执行器运行在相互隔离的资源池中,提高了系统的安全性。

在一种可能的实施方式中,所述函数管理平台记录有执行器运行信息,所述执行器运行信息包括函数标识和所述函数标识对应的函数执行器所在的主机标识和端口,

所述函数调度器根据所述执行器运行信息,确定是否存在与所述函数调用请求携带的函数标识对应的可用函数执行器,如果存在,则获取可用函数执行器所在的主机标识和端口,根据获取的所述主机标识和端口向所述函数执行器转发所述函数调用请求。

所述函数调度器在不存在与所述函数调用请求携带的函数标识对应的可用函数执行器时,向所述函数执行器管理器发送函数实例创建请求,所述函数实例创建请求携带可用主机标识和函数标识;

所述函数执行器管理器接收所述函数实例创建请求,在所述可用主机标识对应的主机上创建所述函数标识对应的函数执行器,为创建的函数执行器分配端口,并向函数调度器返回创建的函数执行器所在的主机的标识和端口。

所述函数调度器向所述主机池管理器发送主机查询请求,所述主机查询请求携带租户标识,接收主机池管理器返回的主机查询响应,所述主机查询响应携带所述可用主机标识。

当所述租户不存在可用主机时,所述主机池管理器根据租户标识在租户的资源池中创建主机,并向函数调度器返回新创建的主机标识作为可用主机标识。

所述函数调度器在从函数执行器管理器获取新创建的函数执行器所在的主机标识和端口,刷新执行器运行信息。

函数管理平台还可以对租户的执行器进行管理,具体的,

函数管理平台的策略引擎判断函数的并发调用发量是否超过所述函数的所有执行器的最大处理门限,如果超过,则执行执行器扩容操作,通过所述函数执行器管理器为所述函数创建新的函数执行器。所述策略引擎还可以判断函数的并发调用发量是否低于所述函数的所有执行器的最小处理门限,如果低于,则执行执行器减容操作。

在执行减容操作时,所述策略引擎选择至少一个主机作为减容对象,减容对象上运行的函数执行器不再处理新的函数调用请求,当减容对象上运行的函数执行器完成当前任务处理后,删除函数执行器,当减容对象上的函数执行器均被删除后,删除该减容对象。

在一种可能的实施方式中,所述租户的资源池信息还包括影子租户标识,函数管理平台为每个租户创建一个影子租户,并记录租户标识和影子租户标识之间的对应关系,当所述租户的资源池信息中包含影子租户标识时,所述租户的资源池信息中包含的主机标识对应的主机为所述影子租户资源池中的主机。所述租户的资源池与所述影子租户的资源池通过租户网络互通。

当所述函数调用请求中携带的函数标识没有对应的可用函数执行器时,所述函数调度器根据租户标识查询租户对应的影子租户,在影子租户资源池中选择可用主机,并在选择的可用主机上运行函数执行器。

第二方面,与前述函数管理平台相对应,本发明实施例还提供了一种业务部署的方法。

前述函数管理平台中的各个功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。不同模块的功能可以合并在一个模块中。

在一个可能的实施方式中,运行该函数管理平台的物理服务器包括收发器、处理器和存储器,其中,处理器用于执行存储其中存储的程序代码,以执行第二方面中所述的方法。

第三方面,本发明实施例还提供了一种业务部署的方法,包括:

函数执行器管理器接收来自函数调度器的函数实例创建请求,所述函数实例创建请求用于指示所述函数执行器管理器在所述函数调度器根据所述租户的资源池信息选的可用主机上创建函数执行器,所述函数实例创建请求携带函数标识和所述可用主机的主机标识,所述租户的资源池信息包括租户标识、托管标识以及主机标识,所述托管标识用于指示主机托管于函数管理平台,所述主机标识对应的主机位于租户的资源池中;

所述函数执行器管理器根据所述主机标识在租户资源池中选择运行函数执行器的主机,并在所述主机上创建所述函数标识对应的函数执行器,以使得创建的函数执行器处理所述函数调用请求。

第四方面,本发明实施例提供了一种业务部署的装置,包括处理器和存储器,所述处理器执行存储器中记录的程序指令,以实现如第三方面所述的方法。

第五方面,提供了一种计算机存储介质,用于储存为上述第二方面所述的函数管理平台中各个模块所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

附图说明

图1为serverless系统架构示意图;

图2为本申请实施例中一种业务部署的流程示意图;

图3为本申请实施例中扩容操作的流程示意图;

图4为本申请实施例中减容操作的流程示意图;

图5为本申请实施例中运行函数管理平台各功能组件的物理服务器的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步描述。

如图1所示,为本发明实施例提供的一种serverless系统架构示意图。serverless系统包括管理域(即函数管理平台)和租户域,示例性的,租户域中以两个租户资源池为例进行说明。

管理域包括函数实例管理器(functioninstancemanager)101、函数管理器102、函数调度器103、策略引擎104、资源调度器105、函数执行器管理器106以及主机池管理器107。租户域中,每个租户资源池中包含若干个主机108,主机可以为运行函数的函数执行主机以及运行传统业务的业务主机,函数执行主机上运行有函数执行器(functionexecutor)109,函数执行器109用于接收并处理函数调用请求,所述主机108可以为物理机或者虚拟机。

在本发明实施例中,函数执行器109运行在租户资源池中,每个租户的函数执行器109由于运行的租户资源池不同从而相互隔离,即通过基础设施即服务(infrastructureasaservice,iaas)平台基础的资源隔离能力实现不同租户之间的资源池网络隔离。由于不同租户的资源池中的主机相互网络隔离,因此,运行于主机上的函数执行器也是网络隔离的。

以公有云为例,云服务提供商所设计的应用系统会容纳数个以上的租户在同一个环境下使用。为保护租户数据的隐私与安全,不同的租户在共享数据中心的硬件设施的同时,会按照各自的需求定义他们的虚拟化资源,且不同租户的虚拟化资源应相互独立和隔离。通过现有的多租户技术,可以实现不同租户间应用程序环境的隔离(applicationcontextisolation)以及数据的隔离(dataisolation),使得不同租户间应用程序不会相互干扰,同时提高数据的保密性。每个租户在云计算系统中拥有一组虚拟化资源被称为租户的资源池。

主机108启动后,在主机上部署函数执行器109,函数执行器109由iaas平台提供,是函数运行的环境/沙箱,函数执行器中封装了用于函数执行的上下文,例如,环境变量以及依赖库等等。

当租户的业务触发函数调用时,函数调用请求经过网络传递到管理域,由管理域的函数调度器103或函数执行器管理器106执行请求分发操作,在租户的资源池中选择主机,并将函数调用请求发送给主机上的函数执行器处理。

在一种可能的实施方式中,函数执行器109所在的主机108通过租户网络相连。在租户网络中,运行函数执行器的主机可以与非serverless架构的其他业务系统中的业务主机互通,实现跨serverless架构传输数据。

在一种可能的实施方式中,函数执行器109所在的主机108部署于租户的资源池,与非serverless架构的业务系统不同的是,函数执行器109所在的主机108可以由函数管理平台托管,由函数管理平台负责函数的操作,从而使得租户无感知。在serverless逻辑架构中,用户授权函数管理平台执行创建和释放资源(主机计算资源以及网络资源等),托管在函数管理平台的资源对租户不可见,也不会被租户使用和访问,被托管的资源不需要租户进行显式运维,也不会对租户计费。

在本发明实施例中,不同租户的应用调用的函数需要执行在各自租户的资源池中,因此,在函数调用过程中,需要标明函数执行主机属于哪个租户以及函数执行主机由函数管理平台托管。

函数实例管理器101用于对函数执行器的管理,函数实例查询请求由函数调度器103发送到函数实例管理器101,由函数实例管理器101向函数调度器103返回函数实例信息,所述函数实例信息包含可用函数执行器109所在的主机标识和端口,所述主机标识用于指示函数执行器109所在的主机108的地址,所述端口用于指示所述函数执行器109对应的主机108的端口,通过主机标识和端口可以路由到对应的函数执行器109。

函数管理器102用于记录函数信息,包括函数标识以及函数的描述信息,所述描述信息包括函数软件包位置和运行所述函数需要的上下文等。

函数调度器103用于接收来自用户的函数调用请求,并向函数实例管理器101查询可用的函数执行器。进一步的,当无可用函数执行器时,函数调度器103可用发起主机创建操作以及执行器创建操作。需要说明的是,函数调度器103的部分功能可以合并到函数实例管理器101中,由函数实例管理器101发起主机创建操作以及执行器创建操作。

需要说明的是,在可能的实施方式中,函数实例管理器101和函数调度器103可以合设,可以由函数调度器103执行函数实例管理器101的功能,或者,由函数实例管理器101执行函数调度器103的功能。

策略引擎104用于根据规则触发资源控制流程,包括主机的扩容和减容,以及执行器的扩容和减容。

资源调度器105用于接收来自策略引擎104的控制指令,执行主机和执行器的扩容和减容。在一种可能的实施方式中,资源调度器105可以与策略引擎104合设。

函数执行器管理器106用于执行函数执行器的创建和删除。当需要创建新的函数执行器时,所述函数执行器管理器106可以从函数管理器102中获取函数的描述信息,函数执行器管理器106接收执行器创建请求,根据函数的描述信息在指定的主机上创建函数执行器。

上述serverless架构中的主机池管理器107,用于记录租户专属的函数执行主机列表。当租户的应用需要调用函数时,如果租户的资源池中存在可以运行被调用函数的函数执行器时,则主机池管理器107选择对应的主机,在该主机上的函数执行器中运行被调用的函数;当租户的资源池中没有合适的主机时,主机池管理器107在租户资源池中创建主机,并在新建的主机中的函数执行器中运行被调用函数,新建的主机需要位于租户的资源池,与其他租户保持隔离。

在一种可能的实施方式中,主机池管理器107在资源数据库中记录主机属性,所述主机属性包括主机标识、租户标识以及托管标识,租户标识用于标识主机所属的租户,托管标识用于标识主机托管于函数管理平台,由函数管理平台执行主机资源的创建、释放,以及扩容等等操作。

示例性的,主机属性如下表所示:

标识租户标识(描述资源的属主)托管标识

主机1tenantatenant_funtion_service

主机2tenantbtenant_funtion_service

在另一种可能的实施方式中,可以为租户创建影子租户,为影子租户分配资源池,影子租户的资源池与租户资源池通过租户网络内的路由器互联互通。函数管理平台记录租户与影子租户之间的对应关系,对影子租户的管理,当租户的应用调用函数时,函数管理平台根据该对应关系,在影子租户的资源池中为租户创建主机,并在主机的函数执行器中运行被调用的函数。

基于图1所示的serverless逻辑架构,如图2所示,为本发明实施例提供的一种函数调用流程示意图。

步骤201:租户应用执行函数调用,函数调用请求通过api网关发送到函数调度器,所述函数调用请求携带函数标识;

本发明实施例所涉及的租户应用可以为各种类型的应用,用于调用资源池中的函数执行器执行预定的函数,实现功能处理,并获得返回的执行结果。租户可以预先把函数代码上传到函数管理平台,函数管理平台可以为租户函数分配函数标识,所述函数标识可以唯一识别一个函数,例如,函数标识为统一资源定位符((uniformresourelocator,url)或字符串等。

更进一步的,函数管理平台可以记录函数标识与租户标识的对应关系,函数管理平台中的各个模块可以用该函数标识查到租户信息。

租户将函数上传到函数管理平台中,进行函数定义。在一种可能的实施方式中,用户上传函数代码,定义函数访问地址,以及定义函数标识和函数请求地址的对应关系,并在函数管理器中记录上述信息。需要说明的是,函数相关信息可以记录在函数管理平台的数据库中,并可以被函数管理平台上的各个模块所访问。

步骤202:函数调度器向函数管理器发送查询请求,所述函数查询请求携带函数标识,所述函数查询请求用于查询被调用的函数的描述信息。

步骤203:函数管理器根据函数标识查询被调用函数,向函数调度器返回函数的描述信息,比如,函数软件包位置和运行所述函数需要的上下文。

需要说明的是,步骤202和203为可选步骤。当租户资源池中运行有被调用函数对应的执行器时,执行器可以直接处理函数调用请求而无需预先根据函数描述信息获取函数代码。

步骤204:所述函数调度器向函数实例管理器发送函数实例信息查询请求,所述函数实例信息查询请求携带函数标识。

步骤205:所述函数实例管理器根据所述函数标识向函数调度器返回函数实例信息,所述函数实例信息包括执行器所在主机的ip地址和端口。其中,所述端口与主机上运行的执行器一一对应。

在一种可能的实施方式中,云计算系统中包含多个租户,当不同租户定义了相同函数标识的函数时,所述函数实例信息查询请求进一步包括租户标识,所述函数实例管理器根据所述租户标识和函数标识识别对应租户的函数。进一步的,函数实例管理器根据租户标识和函数标识查询租户的资源池中是否有可用的执行器。如果存在可用的执行器,则返回函数实例信息。

在另一种可能的实施方式中,函数标识在serverless系统中唯一,不存在具备相同函数标识的不同函数,此时,函数实例管理器可以根据函数实例信息查询请求携带的函数标识查询租户的资源池中是否有可用的执行器。

函数管理平台中记录有函数标识和租户标识的对应关系、租户的资源池信息以及空闲执行器的运行信息,所述租户的资源池信息包括租户标识、托管标识以及主机标识,其中,所述主机标识包括主机的ip地址,所述空闲执行器的运行信息包括函数标识,以及与所述函数标识对应的执行器所在的主机标识和端口。

具体的,在一种可能的实施方式中,可以由函数管理平台中的函数实例管理器记录上述信息。当函数执行器的状态发生变化时,函数实例管理器更新上述信息,示例性的,函数执行器的状态发生变化包括:创建新的函数执行器、函数执行器被占用以及函数执行器空闲等。

在本发明实施例中,可用执行器是指可以运行被调用函数的空闲执行器。

更进一步的,租户的资源池中可能存在多个可用执行器,多个执行器运行在至少一个主机上。此时,函数实例管理器可用使用列表的形式,将每个可用执行器所在的主机的ip地址和端口携带在上述列表中发送给函数调度器,由函数调度器从列表中选择一个执行器执行函数调用,具体的选择方式可以为随机选择,或者根据主机的负载选择。示例性的,函数调度器确定租户的资源池中每个主机上运行的执行器的数量,将新创建的执行器部署在负载最小的主机上。

当租户的资源池中不存在可用的执行器时,函数实例管理器向函数调度器返回失败响应。具体的,失败响应携带的可用执行器列表为空。

当存在可用的执行器时,执行步骤206;当不存在可用的执行器时,执行步骤209。

步骤206:函数调度器将携带函数标识的函数调用请求转发到可用的函数执行器。

函数调度器从可用执行器列表中选择可用执行器,获取可用执行器对应的ip地址和端口,将函数调用请求发送到获取的ip地址和端口。

函数调度器可以根据一定的规则选择执行器,保证执行器在各个主机上分布均匀。

步骤207:函数执行器根据函数标识运行被调用函数,生成函数执行结果。

当函数执行器为通用执行器时,函数执行器下载并执行被调用函数的代码,获取函数调用请求的参数,生成函数执行结果。函数执行器获取被调用函数的代码的方式可以采用serverless架构现有技术,通过框架找到对应的函数,本发明实施例对此并不限定。

当执行器已经运行了被调用函数时,则无需下载被调用函数的代码,而是直接获取函数调用请求的参数,生成函数执行结果。

步骤208:函数执行器向函数调度器返回应答消息,所述应答消息携带函数执行结果。

步骤209:函数调度器接收到函数实施例管理器返回的失败响应后,判断租户资源池中是否存在可用主机,如果租户资源池中存在可用主机,则向函数实例管理器返回主机标识,用于指示函数实例管理器在所述主机标识对应的主机上创建函数执行器;如果租户资源池中不存在可用主机,则向主机池管理器发送主机创建请求,创建运行函数执行器的新主机。

具体的,函数调度器可以向主机池管理器发送主机查询请求以确定是否存在可用主机,所述主机查询请求携带租户标识,主机池管理器查询租户资源池中的空闲主机,向函数调度器返回可用主机列表,所述可用主机列表携带可用主机的标识。

进一步的,当需要保证特定函数的资源时,所述主机查询请求中还可以携带函数标识,主机池管理器选择合适的空闲主机。示例性的,当某个函数有高输入输出io的需求时,主机池管理器可以根据函数标识为函数选择满足io性能的空闲主机。

步骤210:函数调度器向函数实例管理器发送函数实例创建请求,所述函数实例创建请求携带主机标识和函数标识。

步骤211:函数实例管理器向函数执行器管理器发送函数实例创建请求,所述函数实例创建请求携带主机标识和函数标识。

步骤212:函数执行器管理器接收函数实例创建请求,根据主机标识在租户资源池选择运行函数执行器的主机,在该主机上创建函数执行器,为函数执行器分配主机上的端口。

函数执行器管理器根据函数标识获取并运行函数代码以及函数上下文,创建执行器。

在函数执行器创建完成后,函数管理平台记录函数标识和函数执行器所在的主机标识和端口,刷新函数管理平台中记录的空闲执行器的运行信息。

步骤213:函数执行器管理器向函数实例管理器返回函数执行器创建响应,所述函数执行器创建响应携带函数执行器所在的主机标识和端口。

步骤214:函数实例管理器向函数调度器转发函数执行器创建响应。

步骤215:函数调度器根据将函数调用请求转发到对应的函数执行器。

步骤216:函数执行器运行被调用函数,生成函数执行结果。

步骤217:函数执行器向函数调度器返回应答消息,所述应答消息携带函数执行结果。

步骤215-步骤217与步骤206-步骤208类似,本发明实施例不再赘述。

步骤218:在函数执行完成后,函数调度器通过api网关向租户的应用返回函数执行结果。

本发明实施例提供基于租户隔离的函数资源池部署函数执行器的方法,将为租户创建函数执行器运行在租户资源池的主机中,避免不同租户的函数执行器运行在同一共享服务资源池中,解决了多租户共享服务资源池存在安全风险的问题。

进一步的,基于上述serverless逻辑架构,本发明实施例还提供了二层函数调度方法,可以平衡函数运行资源池的资源利用率与隔离性诉求,提高资源利用率的控制粒度。

在本发明实施例中,函数执行主机运行于租户的资源池中,由于租户的资源池相互隔离,因此,函数执行主机由租户独享。函数执行主机的创建和释放所需的时长一般为分钟级别,时间较长,因此,无法频繁执行函数执行主机的创建和释放。为了提高资源利用率,本发明实施例还可以提供了一种资源控制方法,具体的,本发明实施例公开了函数执行器以及函数执行主机两级资源弹性控制方法,当业务高峰时,主机扩容(包括扩大数量或规格);业务降低时,主机减容(包括缩小数量或规格)。

如图3所述,为本发明实施例提供的一种资源弹性控制的方法流程图,用于执行扩容操作,所述资源弹性控制方法包括:

步骤301:策略引擎触发函数执行主机池扩容,向资源调度器发送扩容请求,所述扩容请求携带租户标识。

在本发明实施例中,策略引擎基于cpu、内存指标等,或者各指标的加权组合,触发函数执行主机的伸缩。即,租户资源池中正在运行的主机的资源占用率超过扩容阈值时,策略引擎触发主机池扩容。扩容的容量可以基于资源利用率的当前值或历史均值,也可以基于历史数据的预测值进行计算。所述扩容的容量可以为主机的数量或者cpu/内存的数量。

步骤302:资源调度器向主机池管理器发送扩容请求,所述扩容请求携带租户标识以及扩容的容量。

步骤303:主机池管理器执行扩容操作,根据租户标识以及扩容的容量在租户的资源池中创建函数执行主机,创建函数执行主机的数量满足扩容的容量。

步骤304:主机池管理器向资源调度器返回扩容响应,所述扩容响应携带已创建的函数执行主机的标识。

进一步的,策略引擎还可以基于函数的并发调用量来判断是否执行函数执行器的伸缩,当函数的并发调用量超过函数的所有执行器的处理门限时,执行该函数对应的处理器扩容操作。策略引擎可以在步骤101中的扩容请求中进一步携带函数标识,用于指示对函数标识对应的执行器进行扩容。或者,策略引擎也可以向资源调度器发送执行器扩容请求,将执行器扩容操作与主机扩容操作独立开。

步骤305:资源调度器向函数执行器管理器发送执行器扩容请求,所述执行器扩容请求携带主机标识、函数标识以及待创建的执行器的数量。

步骤306:函数执行器管理器执行扩容操作,在主机标识对应的主机上创建函数执行器。

步骤307:函数执行器管理器向资源调度器返回执行器扩容响应,所述执行器扩容响应携带函数标识以及执行器所在的主机的标识和端口。

步骤308:资源调度器向策略引擎返回扩容响应,所述扩容响应携带函数标识以及执行器所在的主机的标识和端口

主机层以及执行器层两层伸缩的触发均可以基于资源利用率的当前值或历史均值,也可以基于历史数据的预测值。一般来说,两层伸缩可以协同配合。函数执行主机的伸缩优先于函数执行器的伸缩。函数执行主机的伸缩粒度更大,对业务变化相对不敏感,函数执行器的伸缩粒度小,可以快速跟随业务变化。

在一种可能的实施方式中,可以采用定时或预约类型的资源弹性伸缩,可以基于用户的预估业务量、业务并发量,以及处理时延,计算两层资源的初始分配量,解决可预测型业务的资源预留。

与前述扩容操作相对应,本发明实施例还提供了一种减容操作的执行流程,如图4所述,为本发明实施例提供的另一种资源弹性控制方法流程图,用于执行减容操作,所述资源弹性控制方法包括:

步骤401:策略引擎触发函数执行主机池减容,向资源调度器发送减容请求,所述减容请求携带函数标识。

策略引擎基于与步骤301类似的策略判断是否执行减容操作,示例性的,策略引擎可以判断当前函数的并发调用量是否低于所述函数的所有执行器的最小处理门限,如果是,则说明函数执行器的数量过多,产生了资源浪费,则执行函数执行器的减容操作。进一步的,策略引擎还可以判断当前可用主机上是否存在空闲主机,即是否存在没有运行函数执行器的主机,如果是,则对空闲主机执行减容操作,删除空闲主机。

更进一步,策略引擎可以预定减容策略,当主机池中的主机总体资源使用率较低时,选择部分主机作为减容对象,被选作减容对象的主机不再执行新的任务,当作为减容对象的主机上的任务处理完成后,删除函数执行器,当主机上的所有函数执行器均被删除以后,删除该空闲主机。

当策略引擎确定需要对某个函数的执行器执行减容操作时,向资源调度器发送减容请求,所述减容请求携带函数标识以及待减容的执行器的数量。

步骤402:资源调度器向函数执行器管理器发送执行器减容请求,所述执行器减容请求携带函数标识以及待减容的执行器的数量。

步骤403:函数执行器管理器执行减容操作。

具体的,函数执行器管理器在函数标识对应的函数执行器上的任务完成后,删除指定数量的执行器。

步骤404:函数执行器管理器向资源调度器返回执行器减容响应,所述执行器减容响应携带已删除的执行器所在的主机标识和端口。

步骤405:资源调度器异步通知主机池减容,向主机池管理器发送减容请求,所述减容请求携带租户标识和减容的容量。

步骤406:主机池管理器根据租户标识对租户的主机池执行减容操作,删除符合减容容量的函数执行主机。

步骤407:主机池管理器向资源调度器返回减容响应,所述减容响应携带已删除的主机的标识。

步骤408:资源调度器向策略引擎返回减容响应,所述减容响应携带已删除的主机的标识。

在完成扩容或减容操作后,函数管理平台更新租户的执行器信息,包括更新租户的主机池信息以及函数执行器的运行信息等等。

与前述函数管理平台和业务部署方法相对应,本发明实施例提供了一种运行该函数管理平台的物理服务器,参阅图5所示,一种物理服务器500,包括收发器501、处理器502、存储器503,收发器501、存储器503均与处理器502连接,需要说明的是图5所示的各部分之间的连接方式仅为一种可能的示例,也可以是,收发器501与存储器503均与处理器502连接,且收发器501与存储器503之间没有连接,或者,也可以是其他可能的连接方式。

其中,存储器503中存储一组程序,处理器502用于调用存储器503中存储的程序,以执行前述图2至图4所示的函数管理平台和业务部署方法中各模块的功能。

在图5中,处理器502可以是中央处理器(英文:centralprocessingunit,缩写:cpu),网络处理器(英文:networkprocessor,缩写:np)或者cpu和np的组合。

处理器502还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,缩写:asic),可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。

存储器501可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器401也可以包括非易失性存储器(英文:non-volatilememory),例如快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);存储器501还可以包括上述种类的存储器的组合。

函数管理平台中的每个功能模块均可以单独或者组合运行于如图5所示的物理服务器上,本发明实施例不再赘述。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

这些计算机程序代码可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1