本发明属于无服务器计算架构,具体涉及一种基于调用链的serverless函数保活优化方法。
背景技术:
1、随着计算领域的不断发展,function as a service(faas)逐渐成为一种流行的云计算模型。faas的核心理念是将业务逻辑拆分为细粒度的函数,使其能够被按需调用,从而实现更加灵活和高效的计算资源利用。然而,随着faas的广泛应用,一些问题也逐渐浮现出来。
2、在faas平台中,一个主要的挑战是处理函数的冷启动问题。冷启动问题指的是当一个函数长时间未被调用时,再次调用时需要重新加载到内存中,导致较长的响应时间。为了缓解这一问题,通常的做法是通过保活(keep-alive)策略,让函数在内存中存在一段时间,从而降低冷启动的成本。然而,如何确定每个函数需要保活的时间成为一个复杂而具有挑战性的问题。
3、目前的优化方式主要分为两种:一种是对函数请求进行预测,提前启动容器以避免冷启动;另一种是通过保留执行结束的容器一段时间,接受后续可能的请求来避免冷启动。对于后者,当前主流的无服务器提供商通常采用固定的保持活动策略,例如在函数调用后保持活动10-15分钟。
4、在现实应用中,faas系统中的函数各自承担着不同的负载类型,导致保活时间的设定变得极为困难。以往的工作已经提出了一些策略,例如超额预订服务器实例、预缓存应用程序的不同部分以及大幅延长容器的保活时间,以减少冷启动的影响。然而,这些技术通常过于保守,可能在一定程度上优化冷启动,但显著增加了保活的时间和金钱成本。另外,一些预测函数到达间隔时间以相应预热函数实例的策略也会增加保持活动状态的成本。
5、此外,在faas场景下,业务逐渐被拆解为细粒度的函数,并通过工具进行显式调用。然而,这种更发散的调用链也导致了函数调用更多的不确定性。这种不确定性会影响到函数在不同调用路径中的执行效率和系统的整体性能。然而,传统的优化方法往往无法充分考虑serverless环境中的调用链结构,因为它需要对每个函数实例的冷启动、保活策略以及不同函数之间的关联等进行细致的优化。因此,在适应serverless架构的函数保活优化策略方面,还有很多值得探索和改进的空间。
技术实现思路
1、针对上述技术背景中的缺陷,本发明提出一种基于调用链的serverless函数保活优化方法,该方法是一种精准而高效的保活策略,可以在保障性能的同时最小化资源消耗。
2、本发明采用以下技术方案实现:
3、一种基于调用链的serverless函数保活优化方法,包括以下步骤:
4、1)数据采集
5、1.1)函数调用空闲时间采集:统计特定时间窗口内每个函数的调用空闲时间;
6、1.2)函数入度、出度采集:根据serverless的调用链获取函数的入度和出度,并计算函数的度,用于衡量函数是否是关键节点;
7、1.3)函数调用频率采集:函数调用频率是指函数的调用次数占调用链中所有函数总调用次数的比例,并且函数调用频率会根据时间动态变化;因此,需持续监控每个函数的调用频率,并实时更新每个函数的函数调用频率;
8、1.4)函数冷启动率采集:监控每次函数请求是否发生了冷启动,并将冷启动次数与总请求数的比值作为函数冷启动率;
9、2)保活时长确定
10、针对每个函数单独设定保活时长,具体方法为:利用步骤1)收集的数据,计算每个函数在不同时间点的保活时长alivetime,计算公式如下:
11、alivetime=f(th)×(1+deg×α+feq×β+pun×γ)
12、其中,f(th)为函数调用空闲时间,deg为函数的度,freq为函数调用频率,pun为冷启动惩罚项,α、β和γ为各自参数对应的权重系数,用于调整对应变量的影响强度;
13、冷启动惩罚项pun的计算公式如下:
14、
15、其中,change表示冷启动变化率,θ和η分别代表对于冷启动率上升和下降的惩罚系数,punbefore表示函数冷启动率;
16、3)遗传算法参数寻优
17、通过遗传算法的迭代过程,对参数α、β和γ进行了交叉和变异,生成新一代的参数组合,并通过适应度函数对这些组合进行评估,从而得到最优参数组合;其中,适应度函数的设计目标为,在目标冷启动率范围内,降低系统的整体保活成本。
18、上述技术方案中,进一步地,所述步骤1.2)中,函数的度的计算公式为:
19、
20、其中,in表示函数的入度,out表示函数的出度,c为常数。
21、在本发明中:
22、1.基于调用链的真实负载特征的详细描述:对serverless平台中的真实负载进行了深入研究,重点关注了调用链的结构以及函数在调用链中的不同特征。这种详细描述有助于深入理解serverless环境中函数之间的依赖关系和差异,从而帮助制定更加合理的函数保活策略。
23、2.当前保活策略在保活时长设置方面的缺陷:对当前常见的保活策略进行了审查,并发现它们在设置保活时长方面存在缺陷。发现不同函数的最佳保活时长存在明显差异,这表明利用函数特征来确定保活时长具有潜在优势。
24、3.提出一个基于调用链的函数keep-alive策略:旨在保持冷启动率在合理范围的同时进一步降低保活成本。该策略结合了真实负载特征,考虑了函数在调用链中的细粒度特征,并通过动态调整保活时长来更精准地适应serverless环境的需求,达到更优的性能和成本平衡。
25、本发明的有益效果为:
26、鉴于faas工作负载的多样性,函数的保活时长应当根据其特征来确定,而这些特征可能存在于调用链这一faas服务广泛采用的部署方式中。因此,提出了基于调用链的函数保活策略,通过挖掘更加细粒度的函数调用链特征,它能更好地确定和调整每个函数的保活时长,以应对faas中存在的调用变化,并达到更低的保活成本。实验系统评估结果证实,在代表性的无服务器工作负载跟踪数据集中,基于调用链的方法能够将总体运行成本降低31%。
1.一种基于调用链的serverless函数保活优化方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于调用链的serverless函数保活优化方法,其特征在于,所述步骤1.2)中,函数的度的计算公式为:
