一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

函数服务的调度方法、系统、计算设备和存储介质与流程

2022-05-21 03:17:20 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种函数服务的调度方法、系统、计算设备和存储介质。


背景技术:

2.函数服务(function as a service,faas)是可以直接部署和执行的一段业务逻辑代码,其可以直接在实例中运行,实例指一个虚拟服务器或者一种计算资源。函数服务可以同时运行多个实例。
3.相关技术中,一个函数服务包括多个实例时,由调度器按照负载均衡的方式,将对函数服务的请求调度至不同的实例。
4.在对函数服务的请求过多的情况下,会导致各个实例需要处理的请求比较多,造成处理请求的速度过慢。


技术实现要素:

5.本技术提供了一种函数服务的调度方法、系统、计算设备和存储介质,用以提升处理对函数服务的请求的速度。技术方案如下:
6.第一方面,本技术提供了一种函数服务的调度方法,该方法包括:
7.接收对目标函数服务的请求;根据目标函数服务对应的熔断机制,确定目标函数服务的至少一个实例发生熔断;将预热实例池中的至少一个预热实例,设置为目标函数服务的实例,其中,预热实例池包括多个预热实例,每个预热实例为已准备完成运行环境的实例;将请求调度至目标函数服务的实例。
8.本技术所示的方案,目标函数服务为任一函数服务,对目标函数服务的请求为目标函数服务的业务请求。接收对函数服务的请求,分析该请求的元数据,确定是对目标函数服务的请求。在将对目标函数服务的请求,调度至目标函数服务的实例时,获取存储的目标函数服务对应的熔断机制。基于该熔断机制判断目标函数服务的实例是否发生熔断,在确定至少一个实例满足熔断机制时,确定该至少一个实例发生熔断。确定目标函数服务的至少一个实例发生熔断时,可以在预热实例池中选取至少一个预热实例。将选取的至少一个预热实例,设置为目标函数服务的实例。对应目标函数服务新增了实例,可以将对目标函数服务的请求,调度至新增的实例,新增的实例处理对目标函数服务的请求。这样,可以及时地判断是否需要新增函数服务的实例,在确定需要新增函数服务的实例时,由于可以从预热实例池中,分配预热实例给函数服务,而不需要对实例进行冷启动,也可以减少新增实例带来的时延,进而可以大概率的保证处理函数服务的请求的速度。
9.在一种可能的实现方式中,该方法还包括:根据目标函数服务对应的计算资源,对目标函数服务的请求量和/或对目标函数服务的请求频率,确定目标函数服务对应的待删除实例;删除待删除实例。
10.本技术所示的方案,目标函数服务对应的计算资源为目标函数服务在可使用的所
有资源,或者为执行函数服务的调度方法的系统负载的所有函数服务可使用的计算资源总和。可以根据目标函数服务对应的计算资源,对目标函数服务的请求量和/或对目标函数服务的请求频率,确定目标函数服务的待删除实例,待删除实例上未执行对目标函数服务的请求。然后删除该待删除实例。这样,可以及时的回收空闲资源。
11.在一种可能的实现方式中,该方法还包括接收用户通过用户界面(user interface,ui)输入或者选择的目标函数服务对应的扩缩容策略;基于扩缩容策略,生成目标函数服务对应的熔断机制。
12.本技术所示的方案,用户可以通过ui,输入或者选择目标函数服务对应的扩缩容策略,该扩缩容策略用于生成目标函数服务对应的熔断机制,这样,可以更方便用户操作扩缩容。
13.在一种可能的实现方式中,基于目标函数服务对应的计算资源,对目标函数服务的请求量和/或对目标函数服务的请求频率,确定在预热实例池中选取预热实例的目标数目;将预热实例池中的至少一个预热实例,设置为目标函数服务的实例,包括:将预热实例池中目标数目的预热实例设置为目标函数服务的实例。
14.本技术所示的方案,获取距离当前时间点最近的一段时间内,对目标函数服务的请求频率,并且获取距离当前时间最近的一段时间内,对目标函数服务的请求量。基于目标函数服务对应的计算资源、该请求频率和/或请求量,确定在预热实例池中,选取预热实例的目标数目。在预热实例池中,选取目标数目的预热实例,设置为目标函数服务的实例。这样,可以基于当前对目标函数服务的请求量和/或请求频率,为目标函数服务进行扩缩容,所以可以快速的处理对目标函数服务的请求。
15.在一种可能的实现方式中,该方法应用于调度系统,调度系统包括调度模块和熔断模块。
16.在一种可能的实现方式中,根据目标函数服务对应的熔断机制,确定目标函数服务的至少一个实例发生熔断,包括:调度模块接收熔断模块发送的通知消息,其中,通知消息指示目标函数服务的至少一个实例发生熔断,至少一个实例发生熔断是熔断模块根据目标函数服务对应的熔断机制确定的;或者,调度模块从熔断模块获取熔断日志信息,在熔断日志信息中,确定目标函数服务的至少一个实例发生熔断。
17.本技术所示的方案,熔断模块检测到目标函数服务的至少一个实例发生熔断后,可以生成通知消息,发送至调度模块。调度模块接收该通知消息,即确定目标函数服务的至少一个实例发生熔断。或者,熔断模块检测到目标函数服务的至少一个实例发生熔断后,生成的熔断日志信息中会包括目标函数服务的至少一个实例发生熔断。调度模块通过读取熔断模块生成的熔断日志信息,获得目标函数服务的至少一个实例发生熔断。这样,可以基于多种方式确定出目标函数服务的至少一个实例发生熔断。
18.在一种可能的实现方式中,该方法还包括:周期性地基于预热实例池的调整策略,预测预热实例池中的预热实例的需求量;根据需求量,调整预热实例池中预热实例的数目。
19.本技术所示的方案,由于可以周期性地基于预热实例池的调整策略,预测预热实例池中的预热实例的需求量,调整预热实例池中预热实例的数目,所以在需要的预热实例比较多时,可以提前拉起预热实例,添加至预热实例池,在需要的预热实例比较少时,可以减少预设实例池中预热实例,使得预热实例池中的预热实例可以自适应的调整。即在函数
服务需要新增实例时,就能从预热实例池中获取,而不需要冷启动实例,可以降低处理请求的时延。在函数服务对实例的需求量比较小时,可以减少预热实例的数目,减少资源浪费。
20.在一种可能的实现方式中,将预热实例池中的至少一个预热实例,设置为目标函数服务的实例之后,还包括:确定至少一个预热实例的数目;在预热实例池中,添加至少一个预热实例的数目个预热实例。
21.本技术所示的方案,将预热实例池中的至少一个预热实例,设置为目标函数服务的实例之后,可以确定至少一个预热实例的数目。重新拉起该数目的实例,添加至预热实例池中。这样,由于预热实例池中的实例的数目可以保持不变,所以在目标函数服务扩容之后,不会影响其它函数服务的扩容。
22.在一种可能的实现方式中,将预热实例池中的至少一个预热实例,设置为目标函数服务的实例之前,还包括:确定目标函数服务的当前实例数目;确定当前实例数目未超过目标函数服务的最大实例使用数目。
23.本技术所示的方案,可以确定目标函数服务的当前实例数目,并且获取存储的目标函数服务的最大实例使用数目,判断该实例数目是否超过最大实例使用数目,在确定实例数目未超过最大实例使用数目的情况下,进行扩容处理。这样,可以约束目标函数服务可使用的实例的数目。
24.第二方面,本技术提供了一种函数服务的调度系统,该系统包括:调度模块,用于:
25.接收对目标函数服务的请求;根据所述目标函数服务对应的熔断机制,确定所述目标函数服务的至少一个实例发生熔断;纳管模块,用于:将预热实例池中的至少一个预热实例设置为所述目标函数服务的实例,其中,所述预热实例池包括多个预热实例,每个预热实例为已准备完成运行环境的实例;将所述请求调度至所述目标函数服务的实例。。
26.在一种可能的实现方式中,所述调度模块,还用于:根据所述目标函数服务对应的计算资源,对所述目标函数服务的请求量和/或对所述目标函数服务的请求频率,确定所述目标函数服务的待删除实例;删除所述待删除实例。
27.在一种可能的实现方式中,所述调度模块,还用于:接收用户通过ui输入或者选择的所述目标函数服务对应的扩缩容策略;
28.基于所述扩缩容策略,生成所述目标函数服务对应的熔断机制。
29.在一种可能的实现方式中,所述调度模块,还用于:将预热实例池中的至少一个预热实例,设置为所述目标函数服务的实例之前,基于所述目标函数服务对应的计算资源,对所述目标函数服务的请求量和/或对所述目标函数服务的请求频率,确定在所述预热实例池中选取预热实例的目标数目;所述纳管模块,用于:将预热实例池中所述目标数目的预热实例设置为所述目标函数服务的实例。
30.在一种可能的实现方式中,所述调度系统还包括熔断模块,所述调度模块,用于:接收所述熔断模块发送的通知消息,其中,所述通知消息指示所述目标函数服务的至少一个实例发生熔断,所述至少一个实例发生熔断是所述熔断模块根据所述目标函数服务对应的熔断机制确定的;或者,从所述熔断模块获取熔断日志信息,在所述熔断日志信息中,确定所述目标函数服务的至少一个实例发生熔断。
31.在一种可能的实现方式中,所述调度模块,还用于:周期性地基于所述预热实例池的调整策略,预测所述预热实例池中的预热实例的需求量;根据所述需求量,调整所述预热
实例池中预热实例的数目。
32.在一种可能的实现方式中,所述调度模块,还用于:将预热实例池中的至少一个预热实例设置为所述目标函数服务的实例之前,确定所述目标函数服务的当前实例数目;确定所述当前实例数目未超过所述目标函数服务的最大实例使用数目。
33.第三方面,本技术提供了一种计算设备,计算设备包括处理器和存储器,其中:存储器中存储有计算机指令,处理器执行计算机指令,以实现第一方面及其可能的实现方式的方法。
34.第四方面,本技术提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的系统的功能。
35.第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的系统的功能。
附图说明
36.图1是本技术一个示例性实施例提供的调度系统的架构示意图;
37.图2是本技术一个示例性实施例提供的调度系统的架构示意图;
38.图3是本技术一个示例性实施例提供的函数服务的调度方法的流程示意图;
39.图4是本技术一个示例性实施例提供的下发熔断机制的示意图;
40.图5是本技术一个示例性实施例提供的下发转换熔断机制的示意图;
41.图6是本技术一个示例性实施例提供的函数服务的调度方法的流程示意图;
42.图7是本技术一个示例性实施例提供的计算设备的结构示意图。
具体实施方式
43.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
44.为了便于对本技术实施例的理解,下面首先介绍所涉及到的名词的概念:
45.1、函数服务,指提供函数功能的一段业务逻辑代码。该逻辑代码可以直接在云提供方提供的实例中运行。实例指一个虚拟服务器或者一种计算资源。一个实例中运行一个函数服务,且一个函数服务可以运行于多个实例。
46.2、函数服务冷启动,通常指云平台为函数服务从零开始创建新的函数服务实例。
47.3、预热实例,指已准备完成运行环境的实例,即处于待命(stand-by)状态的实例,在使用时无需花费时间准备运行环境。
48.4、预热实例池,包括多个预热实例,每个预热实例可以相同,也可以不相同,在本技术实施例中,以每个预热实例相同为例进行说明。
49.5、函数服务弹性伸缩,包括函数服务扩容和函数服务缩容,是一种根据函数服务的需求,自动扩展或缩减分配给函数服务的计算资源的方法。
50.为了解决函数服务处理请求的速度过慢的问题,本技术实施例提供了一种函数服
务的调度方法,该方法所适用的系统架构如下:
51.如图1所示,函数服务的调度方法应用于调度系统,调度系统也可以称为是调度逻辑框架,也可以称为是自适应的调度逻辑框架,调度系统包括调度模块101(也可以称为是调度器)和至少一个熔断模块102(也可以称为是熔断器),调度模块101和熔断模块102建立有通信连接。每个熔断模块102可以负责一个或多个函数服务的实例的熔断判断。
52.调度模块101作为对函数服务的请求的入口,用于接收对函数服务的请求,分析该请求的元数据(例如元数据使用json进行编码),获得该请求对应的函数服务。调度模块101将对函数服务的请求,发送至该函数服务对应的熔断模块102。熔断模块102用于基于对函数服务的请求,确定该函数服务的实例是否发生熔断。
53.可选的,调度系统还包括预热实例池的管理模块103(也可以称为是管理器)和函数服务的纳管模块104(也可以称为是纳管器)。可选的,函数服务的纳管模块104与熔断模块102可以单独部署,也可以与熔断模块102集成为一个模块。管理模块103用于在预热实例池中,为函数服务选取预热实例。纳管模块104用于将对函数服务的请求调度至实例。
54.调度模块101还用于在某个函数服务的实例发生熔断后,通过管理模块103从预热实例池中,为该函数服务选取预热实例。
55.可选的,调度模块101和熔断模块102可以部署在同一设备上,也可以部署在不同的设备上。图1示出了调度模块101和熔断模块102分别部署服务器1和服务器2上。图2中示出了调度模块101和熔断模块102部署在同一服务器上。
56.可选的,调度模块101和熔断模块102可以分别是软件装置,如可以是计算设备上部署的一套软件程序。管理模块103可以是软件装置。纳管模块104可以是软件装置。
57.可选的,在某些情况下,调度模块101和熔断模块102可以分别是硬件装置,如服务器等计算设备。管理模块103和纳管模块104也可以是硬件装置。
58.下面将结合图3对本技术实施例提供的函数服务的调度方法进行说明,如图3所示,该方法的处理流程如下:
59.步骤301,接收对目标函数服务的请求。
60.其中,目标函数服务为任一函数服务,对目标函数服务的请求为目标函数服务的业务请求。
61.在本实施例中,调度系统接收对函数服务的请求,分析该请求的元数据,确定是对目标函数服务的请求。
62.步骤302,根据目标函数服务对应的熔断机制,确定目标函数服务的至少一个实例发生熔断。
63.其中,熔断机制用于指示实例停止处理请求的条件。例如,每个实例处理对函数服务的请求的数目在预设时间段内不能超过10,在超过10时,就不再接收对函数服务新的请求。在某个实例熔断之后,当前不再给该实例调度请求。
64.在本实施例中,调度系统在将对目标函数服务的请求,调度至目标函数服务的实例时,获取存储的目标函数服务对应的熔断机制。基于该熔断机制判断目标函数服务的实例是否发生熔断,在确定至少一个实例满足熔断机制时,确定该至少一个实例发生熔断。
65.另外,在确定目标函数服务的任一实例均未发生熔断时,调度系统可以确定目标函数服务的多个实例,按照多个实例上处理请求的数目相近的原则(即多个实例负载均衡
的方式),将该请求调度至目标函数服务的实例上处理。具体的,熔断模块102将对目标函数服务的请求发送至纳管模块104,纳管模块104将对目标函数服务的请求发送至相应的实例。
66.步骤303,将预热实例池中的至少一个预热实例,设置为目标函数服务的实例,其中,预热实例池包括多个预热实例,每个预热实例为已准备完成运行环境的实例。
67.其中,预热实例池中包括多个预热实例,每个预热实例是相同的,均是已经准备完成运行环境的实例。
68.在本实施例中,调度系统确定目标函数服务的至少一个实例发生熔断时,可以在预热实例池中选取至少一个预热实例。将选取的至少一个预热实例,设置为目标函数服务的实例。
69.需要说明的是,在某些情况下预热实例池中的多个预热实例有可能是不相同的,调度系统可以在预热实例池中选取满足目标函数服务需求的至少一个预热实例,设置为目标函数服务的实例。例如,目标函数服务的需求是每个实例的内存为10g,可以在预热实例池中选取内存为10g的实例,供目标函数服务使用。
70.步骤304,将对目标函数服务的请求调度至目标函数服务的实例。
71.在本实施例中,在步骤303中,对应目标函数服务新增了实例,调度系统可以将对目标函数服务的请求,调度至新增的实例,新增的实例处理对目标函数服务的请求。
72.这样,通过图3的流程,可以及时的判断是否需要新增函数服务的实例,在确定需要新增函数服务的实例时,由于可以从预热实例池中,分配预热实例给函数服务,而不需要对实例进行冷启动,也可以减少新增实例带来的时延,进而可以大概率的保证实例处理请求的速度。
73.如下对图3所示的流程进行补充说明:
74.在一种可能的实现方式中,在某些情况下,为了节约目标函数服务的计算资源,可以进行如下处理:
75.根据目标函数服务对应的计算资源,对目标函数服务的请求量和/或对目标函数服务的请求频率,确定目标函数服务的待删除实例;删除待删除实例。
76.其中,计算资源可以包括处理资源和内存资源。
77.在本实施例中,调度系统可以获取目标函数服务对应的计算资源。目标函数服务对应的计算资源为目标函数服务在调度系统中可使用的计算资源,和/或调度系统负载的所有函数服务可使用的计算资源总和。并且获取最近一段时间内对目标函数服务的请求量和/或对目标函数服务的请求频率。然后使用目标函数服务对应的计算资源、该请求量和/或请求频率,确定目标时长,目标时长用于指示某个实例未接收到对目标函数服务的请求的时长达到目标时长时,即删除该实例。调度系统可以获取目标函数服务的实例中,未执行请求的实例,在这些实例中,确定未接收到对目标函数服务的请求的时长达到目标时长的待删除实例。调度系统可以删除待删除实例。具体的,删除待删除的实例过程为:调度模块101向纳管模块104发送删除请求,通知纳管模块104删除待删除实例。
78.可选的,调度系统确定目标时长的处理如下:
79.方式一:调度系统使用请求量和调度系统负载的所有函数服务可使用的计算资源总和,确定目标时长。处理为:
80.调度系统可以获取调度系统负载的所有函数服务对应的计算资源总和,确定资源剩余量,资源剩余量等于计算资源总和减去各函数服务已使用的计算资源总和。在确定资源剩余量时,可以对计算资源的处理资源和内存资源综合考虑剩余量。
81.然后使用存储的资源剩余量范围、请求量范围与时长的第一对应关系,确定资源剩余量所属资源剩余量范围和请求量所属请求量范围共同对应的时长,为目标时长。在该第一对应关系中,资源剩余量范围的端点值越小,且请求量范围的端点值越小,目标时长越短,资源剩余量范围的端点值越大,且请求量范围的端点值越大,目标时长越长。
82.或者,调度系统可以计算资源剩余量与调度系统负载的所有函数服务对应的计算资源总和的比值,获得资源占用比例。使用存储的资源占用比例范围、请求量范围与时长的第二对应关系,确定资源占用比例所属资源占用比例范围和请求量所属请求量范围共同对应的时长,为目标时长。
83.或者,可以将请求量和资源剩余量进行加权,获得加权值。在加权值范围与时长的对应关系中,确定加权值所属加权值范围对应的时长为目标时长。
84.在方式一中,不管何种对应关系,均为:在资源剩余量一定时,请求量少对应的目标时长短于请求量多对应的目标时长;在请求量一定时,资源剩余量少对应的目标时长短于资源剩余量多对应的目标时长。这样,在资源剩余量较少且请求量也少的情况下,可以加速释放目标函数服务实例占用的资源,供其它函数服务使用,在资源剩余量较多且请求量较多的情况下,可以慢速释放目标函数服务实例占用的资源,降低删除实例后立即新增实例的可能。
85.方式二:调度系统使用请求频率和调度系统负载的所有函数服务可使用的计算资源总和,确定目标时长。方式二中确定目标时长的处理与方式一的处理类似,将方式一中的“请求量”替换为“请求频率”即为方式二的处理过程。
86.方式三,调度系统使用请求量和目标函数服务在调度系统中可使用的计算资源,确定目标时长。处理为:
87.目标函数服务在调度系统中可使用的计算资源不会影响目标时长,仅是由请求量限制目标时长。调度系统可以使用请求量范围与时长的第三对应关系,确定对目标函数服务的请求量所属请求量范围对应的时长为目标时长。在该第三对应关系中,请求量范围的端点值越小,目标时长越短,请求量范围的端点值越大,目标时长越长。这样,可以在请求量较小时,加速回收资源,减少资源的占用,在请求量较大时,慢速释放占用的资源,降低删除实例后立即新增实例的可能。
88.方式四,调度系统使用请求频率和目标函数服务在调度系统中可使用的计算资源,确定目标时长。方式四中确定目标时长的处理与方式三的处理类似,将方式三中的“请求量”替换为“请求频率”即为方式四的处理过程。
89.方式五,调度系统使用请求量、请求频率和调度系统负载的所有函数服务可使用的计算资源总和,确定目标时长。具体过程可以参见方式一的处理,在第一对应关系中,包括资源剩余量范围、请求量范围、请求频率范围与时长。或者,在第二对应关系中,包括资源占用比例范围、请求量范围、请求频率范围与时长。或者,是将请求量、请求频率和资源剩余量进行加权,获得加权值,在加权值范围与时长的对应关系中,确定加权值所属加权值范围对应的时长为目标时长。
90.在一种可能的实现方式中,在某些情况下,目标函数服务的实例持续未处理对目标函数服务的请求,为了节约资源,可以进行如下处理:
91.在目标函数服务的目标实例未接收到请求的时长超过目标时长,且目标实例上不存在未执行完的请求时,删除目标实例。
92.其中,目标时长可以预设,并且存储至调度系统,此时目标时长为一个固定值。
93.在本实施例中,调度系统可以获取目标函数服务的实例中,未执行请求的实例,在这些实例中,获取未接收到对目标函数服务的请求的时长达到目标时长的目标实例。调度系统可以删除目标实例,这样,可以及时的释放实例的资源,供其它函数服务使用。
94.可选的,本技术实施例中,步骤302可以对应有多种处理方式,如下给出两种可行的处理方式:
95.方式一:通过调度模块101接收熔断模块102发送的通知消息,其中,通知消息指示目标函数服务的至少一个实例发生熔断,至少一个实例发生熔断是熔断模块102根据目标函数服务对应的熔断机制确定的。
96.在本实施例中,熔断模块102在接收到对目标函数服务的请求之后,基于目标函数服务对应的熔断机制,判断目标函数服务的实例是否发生熔断。在确定至少一个实例发生熔断时,向调度模块101发送通知消息,指示目标函数服务的至少一个实例发生熔断。这样,由于是熔断模块102检测到熔断,就通知调度模块101,所以可以使调度模块101及时的知晓至少一个实例发生熔断,进而进行扩容处理,可以减少处理请求的延时。
97.方式二,通过调度模块101从熔断模块102获取熔断日志信息,在熔断日志信息中,确定目标函数服务的至少一个实例发生熔断,其中,熔断日志信息是熔断模块102根据目标函数服务对应的熔断机制,确定目标函数服务的至少一个实例发生熔断时生成的。
98.在本实施例中,熔断模块102在接收到对目标函数服务的请求之后,基于目标函数服务对应的熔断机制,判断目标函数服务的实例是否发生熔断。在确定至少一个实例发生熔断时,会有熔断日志信息记录目标函数服务的至少一个实例发生熔断。调度模块101可以周期性从熔断模块102获取日志信息,该日志信息包括熔断日志信息。调度模块101分析该熔断日志信息,确定目标函数服务的至少一个实例发生熔断。这样,由于调度模块101是主动从熔断模块102获取日志信息,所以知晓至少一个实例发生熔断的时延依赖于调度模块101从熔断模块102获取日志信息的周期。此处对于每个函数服务,周期可以相同可以不相同,具体的,可以是依照函数服务所属账户等级,等级高的账户的函数服务的周期比较短,而等级低的账户的函数服务的周期比较短。
99.可选的,方式一和方式二中,熔断模块102判断至少一个实例发生熔断的处理为:
100.熔断模块102确定目标函数服务对应的每个实例上未完成的请求的数目,在某个实例的该数目等于预设的处理量时,确定该实例发生熔断。例如,某个实例上未完成的请求的数目为5,熔断机制中要求的最大数目为5,确定该实例发生熔断。
101.或者,熔断模块102确定目标函数服务对应的每个实例返回对请求反馈的时长,在某个实例的该时长的超过预设的反馈时长时,确定该实例发生熔断。
102.在一种可能的实现方式中,目标函数服务对应的熔断机制的获取方式可以为:
103.接收用户通过ui输入或者选择的目标函数服务对应的扩缩容策略;基于扩缩容策略,生成目标函数服务对应的熔断机制。
104.在本实施例中,调度系统为用户提供了扩缩容策略的ui,该ui用于用户输入扩缩容策略,用户可以在该ui中输入目标函数服务对应的扩缩容策略。或者,
105.调度系统为用户提供了扩缩容策略的ui,该ui中提供了供用户选择的扩缩容策略,用户可以在供用户选择的扩缩容策略中,为目标函数服务选择对应的扩缩容策略。
106.调度系统可以接收目标函数服务对应的扩缩容策略,然后提取该扩缩容策略中的关键元素,基于关键元素,生成目标函数服务对应的熔断机制。
107.可选的,扩缩容策略包括的关键元素为如下元素的一种或多种:
108.1、函数服务的标识,代表函数服务的名称或者唯一标识,用于标识唯一的函数服务;
109.2、界定标识,用于指示该界定标识之后描述的是扩缩容策略;
110.3、类型(type),表示扩缩容策略的类别,用于限定该扩缩容策略用于何种类型的请求。如超文本传输协议(hyper text transfer protocol,http)或者传输控制协议(transmission control protocol,tcp);
111.4、规则(rules),用于界定扩缩容策略的具体规则;
112.5、名称(name),表示规则的名称;
113.6、值(value),表示规则具体的阈值。
114.例如,如图4所示,调度模块101接收用户通过ui输入或者选择的扩缩容策略,调度模块101将扩缩容策略下发给目标函数服务对应的熔断模块102。熔断模块102基于扩缩容策略,生成熔断机制。进一步的如图5所示,调度模块101接收用户通过ui输入或者选择的扩缩容策略,调度模块101将扩缩容策略下发给目标函数服务对应的策略引擎。策略引擎解析扩缩容策略,将扩缩容策略转换为可被熔断模块102识别的熔断机制。策略引擎将熔断机制下发给熔断模块102。这样,可以使得熔断模块102识别熔断机制。
115.这样,可以基于扩缩容策略生成熔断机制,方便用户控制函数服务对应的熔断机制。
116.在一种可能的实现方式中,步骤302中,调度系统可以基于对目标函数服务的请求频率和/或请求量,确定出需要的实例的数目,选择预热实例,处理为:
117.基于目标函数服务对应的计算资源,对目标函数服务的请求量和/或对目标函数服务的请求频率,确定在预热实例池中选取预热实例的目标数目;将预热实例池中目标数目的预热实例设置为目标函数服务的实例。
118.在本实施例中,调度系统可以获取距离当前时间点最近的一段时间内,对目标函数服务的请求频率。并且获取目标函数服务的实例占用的计算资源,作为目标函数服务对应的已使用计算资源。将目标函数服务对应的计算资源减去目标函数服务的已使用计算资源,确定目标函数服务对应的资源剩余量。基于资源剩余量,以及每个实例使用的资源,确定还可使用的实例数目,并且确定目标函数服务已有实例数目。在请求频率范围与需求实例数目的对应关系中,确定请求频率所属请求频率范围对应的需求实例数目;或者,在请求量范围与需求实例数目的对应关系中,确定请求量所属请求量范围对应的需求实例数目;或者,在请求量范围、请求频率范围与需求实例数目的对应关系中,确定请求量所属请求量范围和请求频率所属请求频率范围对应的需求实例数目。
119.将需求实例数目减去目标函数服务已有实例数目,获得需新增实例的数目。若确
定的新增实例的数目小于或等于还可使用的实例数目,则将确定的新增实例的数目确定为目标数目,反之,则将还可使用的实例数目确定为目标数目。此处确定目标数目的过程可以由调度模块101执行。
120.然后调度系统可以在预热实例池中,选取目标数目的预热实例,设置为目标函数服务的实例。具体的,该过程可以是调度模块101向管理模块103发送扩容请求,该扩容请求中携带目标数目,管理模块103从预热实例池中,选取目标数目的预热实例。管理模块103将目标数目的预热实例提供给纳管模块104,由纳管模块104将目标数目的预热实例设置为目标函数服务的实例。
121.此处需要说明的是,上述目标函数服务对应的计算资源是以目标函数服务可使用的计算资源为例进行说明,当然目标函数服务对应的计算资源也可以是调度系统上所有函数服务可使用的计算资源总和。在目标函数服务对应的计算资源为调度系统上所有函数服务可使用的计算资源总和时,上述提到的资源剩余量为所有函数服务可使用的计算资源总和减去已使用计算资源。
122.这样,可以基于当前目标函数服务对应的计算资源、对目标函数服务的请求量和/或请求频率,为目标函数服务进行扩缩容,所以可以快速的处理对目标函数服务的请求。
123.在一种可能的实现方式中,为了更便于调度系统为函数服务新增预热实例,可以自适应调整预热实例池,处理为:
124.周期性地基于预热实例池的调整策略,预测预热实例池中的预热实例的需求量;根据需求量,调整预热实例池中预热实例的数目。
125.在本实施例中,预热实例池的调整策略可以是基于距离当前时间点最近的多个周期内每两个相邻周期对函数服务的请求数量的变化量确定。此处函数服务指的是使用预热实例池的所有函数服务。例如,调整策略为距离当前时间点最近的多个周期内每两个相邻周期对函数服务的请求量的变化量超过目标阈值,目标阈值可以预设并且存储至调度系统中。此处函数服务包括使用预热实例池进行扩容的函数服务。
126.调度系统可以周期性地获取多个周期内的对函数服务的请求量,在多个周期中每两个相邻周期对函数服务的请求量的增量超过目标阈值时,可以确定当前会有函数服务新增实例,预热实例池中的预热实例的需求量比较大,所以可以增加预热实例池中预热实例的数目。预热实例池中增加的预热实例的数目可以基于每两个相邻周期对函数服务的请求量的增量确定。可选的,可以是存储有对函数服务的请求量的增量范围与预热实例的数目的对应关系。确定每两个相邻周期对函数服务的请求量的增量的平均值,将该平均值所属的增量范围对应的预热实例的数目,确定为预热实例池中预热实例的第一数目,将第一数目减去当前预热实例池中的预热实例的数目,即获得需要增加的预热实例的数目。然后在预热实例池中增加该数目个预热实例。这样,可以预先对预热实例池中扩容,所以在函数服务需要新增实例时,就能从预热实例池中获取,而不需要冷启动实例,所以可以降低处理请求的时延。
127.在多个周期中每两个相邻周期对函数服务的请求量的减少量超过目标阈值时,可以确定当前函数服务需要新增的实例比较少,预热实例池中的预热实例的需求量比较小,所以可以减少预热实例池中预热实例的数目。预热实例池中增加的预热实例的数目可以基于每两个相邻周期对函数服务的请求量的减少量确定。可选的,可以是存储有对函数服务
的请求量的减少量范围与预热实例的数目的对应关系。确定每两个相邻周期对函数服务的请求量的减少量的平均值,将该平均值所属的减少量范围对应的预热实例的数目,确定为预热实例池中预热实例的第二数目,将当前预热实例池中的预热实例的数目减去第二数目,即获得需要减少的预热实例的数目。然后在预热实例池中减少该数目个预热实例。这样,在函数服务对实例的需求量比较小时,可以减少预热实例的数目,减少资源浪费。
128.上述是从对函数服务的请求量的变化量与预热实例的数目的对应关系进行考虑,当然也可以是预先训练一个预测模型,预测模型的输入为对函数服务的请求量的变化量和当前预热实例池中预热实例的数目,输出为预热实例池中需要调整的预热实例的数目。
129.另外,在确定预热实例池中需要调整的预热实例的数目时,也可以基于历史时间段中预热实例池中预热实例的数目进行调整。
130.在一种可能的实现方式中,用户在部署函数服务时,是在调度系统中购买实例,调度系统记录目标函数服务对应的最大实例使用数目。在步骤302的扩容之前,还会进行如下处理:
131.确定目标函数服务的当前实例数目;确定当前实例数目未超过目标函数服务的最大实例使用数目。
132.在本实施例中,调度系统可以确定当前目标函数服务的实例数目,并且获取存储的目标函数服务的最大实例使用数目,判断该实例数目是否超过最大实例使用数目,在确定实例数目未超过最大实例使用数目的情况下,执行步骤302的处理。在确定当前实例数目等于最大实例使用数目的情况下,由于目标函数服务使用的实例已经达到最大数目,不能进行扩容,此时可以向用户的账户反馈扩容提醒消息,提醒用户进行手动扩容。具体的,该过程可以由调度模块101执行。
133.在一种可能的实现方式中,在步骤302中,调度系统选择至少一个预热实例之后,为了保证预热实例池中实例的数目保持不变,不影响其他函数服务的扩容,处理为:
134.确定至少一个预热实例的数目;在预热实例池中,添加至少一个预热实例的数目的预热实例。
135.在本实施例中,调度系统在为目标函数服务选取至少一个预热实例之后,调度系统可以确定该至少一个预热实例的数目。然后在预热实例池中,添加该数目的预热实例。这样,由于预热实例池中的实例的数目可以保持不变,所以在目标函数服务扩容之后,不会影响调度系统中其它函数服务的扩容。具体的,该过程可以由管理模块103执行。
136.本技术实施例中,为了更好的理解本技术实施例,如图6所示,还提供了如下的执行流程:
137.步骤601,调度模块101接收对目标函数服务的请求。
138.步骤602,调度模块101分析对目标函数服务的请求,将该请求调度至目标函数服务对应的熔断模块102。
139.步骤603,熔断模块102接收到对目标函数服务的请求,基于熔断机制,判断目标函数服务的至少一个实例是否发生熔断。
140.步骤604,熔断模块102在确定目标函数服务的至少一个实例发生熔断后,向调度模块101发送通知消息,通知消息用于指示目标函数服务的至少一个实例发生熔断。
141.步骤605,调度模块101向预热实例池的管理模块103发送扩容请求。
142.步骤606,预热实例池的管理模块103设置预热实例池中的至少一个预热实例,为目标函数服务的实例,即将该至少一个预热实例添加目标函数服务对应的标签。
143.步骤607,管理模块103将该至少一个预热实例,提供给函数服务的纳管模块104,纳管模块104将该至少一个预热实例设置为目标函数服务的实例。
144.步骤608,纳管模块104向调度模块101发送扩容成功消息。
145.图6的流程仅为一种可能的实现流程。
146.本技术实施例中,通过自适应的增加实例,并且结合熔断机制对请求的流量变化快速响应的特点,函数服务的实例可以快速的增加,无需实例做任何的指标的统计和采集,可以保证函数服务的实例数量充足,使得有足够的计算能力执行对函数服务的请求。
147.而且是从预热实例池中,为函数服务进行扩容,而不是冷启动实例,所以减少扩容时冷启动带来的时延,进而在总体上极大降低对函数服务的请求时延。
148.图1是本技术实施例提供的函数服务的调度系统的结构图。该调度系统可以通过软件、硬件或者两者的结合实现成为调度系统中的部分或者全部。本技术实施例提供的调度系统可以实现本技术实施例图3所述的流程,该调度系统包括:调度模块101、熔断模块102、管理模块103和纳管模块104,其中:
149.调度模块101,用于:
150.接收对目标函数服务的请求;
151.根据所述目标函数服务对应的熔断机制,确定所述目标函数服务的至少一个实例发生熔断;
152.纳管模块104,用于:
153.将预热实例池中的至少一个预热实例设置为所述目标函数服务的实例,其中,所述预热实例池包括多个预热实例,每个预热实例为已准备完成运行环境的实例;
154.将所述请求调度至所述目标函数服务的实例。
155.在一种可能的实现方式中,所述调度模块101,还用于:
156.根据所述目标函数服务对应的计算资源,对所述目标函数服务的请求量和/或对所述目标函数服务的请求频率,确定所述目标函数服务的待删除实例;
157.删除所述待删除实例。
158.在一种可能的实现方式中,所述调度模块101,还用于:
159.接收用户通过ui输入或者选择的所述目标函数服务对应的扩缩容策略;
160.基于所述扩缩容策略,生成所述目标函数服务对应的熔断机制。
161.在一种可能的实现方式中,所述调度模块101,还用于:
162.将预热实例池中的至少一个预热实例,设置为所述目标函数服务的实例之前,基于所述目标函数服务对应的计算资源,对所述目标函数服务的请求量和/或对所述目标函数服务的请求频率,确定在所述预热实例池中选取预热实例的目标数目;
163.所述纳管模块104,用于:
164.将预热实例池中所述目标数目的预热实例设置为所述目标函数服务的实例。
165.在一种可能的实现方式中,所述调度模块101,用于:
166.接收所述熔断模块102发送的通知消息,其中,所述通知消息指示所述目标函数服务的至少一个实例发生熔断,所述至少一个实例发生熔断是所述熔断模块102根据所述目
标函数服务对应的熔断机制确定的;或者,
167.从所述熔断模块102获取熔断日志信息,在所述熔断日志信息中,确定所述目标函数服务的至少一个实例发生熔断。
168.在一种可能的实现方式中,所述调度模块101,还用于:
169.周期性地基于所述预热实例池的调整策略,预测所述预热实例池中的预热实例的需求量;
170.根据所述需求量,调整所述预热实例池中预热实例的数目。
171.在一种可能的实现方式中,所述调度模块101,还用于:
172.将预热实例池中的至少一个预热实例设置为所述目标函数服务的实例之前,确定所述目标函数服务的当前实例数目;
173.确定所述当前实例数目未超过所述目标函数服务的最大实例使用数目。
174.本技术实施例中,通过自适应的增加实例,并且结合熔断机制对请求的流量变化快速响应的特点,函数服务的实例可以快速的增加,无需实例做任何的指标的统计和采集,可以保证函数服务的实例数量充足,使得有足够的计算能力执行对函数服务的请求。
175.而且是从预热实例池中,为函数服务进行扩容,而不是冷启动实例,所以减少扩容时冷启动带来的时延,进而在总体上极大降低对函数服务的请求时延。
176.本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
177.本技术实施例中还提供了一种函数服务的调度的计算设备。图7示例性的提供了计算设备700的一种可能的架构图。
178.计算设备700包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
179.存储器701可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行函数服务的调度方法。存储器701还可以存储数据集合,例如,存储器701中的一部分存储资源被划分成熔断机制的存储模块。
180.处理器702可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路。
181.处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的函数服务的调度系统的部分或全部功能可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术上述实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施
例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本技术实施例的函数服务的调度系统的部分功能。
182.通信接口703使用例如但不限于收发器一类的收发模块,来实现计算设备700与其他设备或通信网络之间的通信。例如,可以通过通信接口703接收对函数服务的调度请求。
183.总线704可包括在计算设备700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
184.在计算机设备700为多个时,上述每个计算设备700间通过通信网络建立通信通路。每个计算设备700上运行调度模块101、熔断模块102、管理模块103和纳管模块104中的任意一个或多个。任一计算设备700可以为云数据中心中的计算设备(例如:服务器),或边缘数据中心中的计算设备,或终端计算设备。
185.上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
186.另外,本技术实施例中,“a和/或b”表示三种情况,第一种情况a,第二种情况b,第三种情况a和b。“至少一个”表示“一个”或“多个”。
187.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,dvd)等),或者半导体介质(如固态硬盘等)。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献