函数缓存的方法及系统与流程
- 国知局
- 2024-09-14 14:26:51
本技术实施例涉及云计算,并且更具体地,涉及一种函数缓存的方法及系统。
背景技术:
1、服务器无感知计算以用户免运维、按需计费以及弹性伸缩等优势,成为日益流行的云计算开发范式。当函数的调用请求到达时,服务器无感知计算平台可以通过相应的函数实例提供服务。若函数的调用请求到达时服务器无感知计算平台的节点中没有可用的函数实例,会触发冷启动调用。目前基于轻量化容器的函数实例的冷启动调用所需的时间普遍分布在数百毫秒至数百秒之间,给函数服务带来较大的响应时延,影响用户的服务体验。
2、函数的实例缓存是一种广泛采用的减少冷启动调用的方式。实例缓存指的是在通过函数实例执行完调用请求后,函数实例不会立刻被释放,而是以缓存的形式在节点内保活一段时间,以使得后续短时间内的调用请求可以复用函数实例,从而避免冷启动调用。在相关方案中,可以在各个节点内缓存尽可能多的实例,这样可以降低冷启动调用的发生率。然而,该方案可能会造成缓存冗余的问题,产生不必要的缓存开销,浪费了节点的资源。
3、如何在保证较低的冷启动调用的发生率的同时避免缓存资源的浪费成为一个亟待解决的问题。
技术实现思路
1、本技术实施例提供一种函数缓存的方法及系统,有利于在降低冷启动调用的发生率的同时避免缓存资源的浪费。
2、第一方面,提供了一种函数缓存的方法,包括:主控制器向多个子控制器中的第一子控制器发送第一指示信息,第一指示信息用于确定集群中的第一计算节点上的实例的缓存策略;第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理;主控制器向多个子控制器中的第二子控制器发送第二指示信息,第二指示信息用于确定集群中的第二计算节点上的实例的缓存策略;第二子控制器根据第二指示信息对第二计算节点上的实例进行实例缓存处理。
3、在本技术实施例的方案中,由主控制器管理各个计算节点上的实例的缓存策略,这样可以基于全局的信息确定或调整各个计算节点上的实例的缓存策略,有利于在降低冷启动调用的发生率的同时减少不必要的实例的缓存,从而减少缓存冗余。同时,这样可以合理利用各个计算节点的缓存资源,缓解负载倾斜问题,从而减少节点内的缓存竞争。例如,主控制器可以基于各个计算节点的情况和/或各个函数的调用信息确定或调整各个计算节点上的实例的缓存策略,进而指示子控制器进行相应的处理。
4、第一子控制器和第二子控制器为不同的子控制器。第一计算节点和第二计算节点为不同的计算节点。
5、示例性地,第一指示信息和第二指示信息可以相同,也可以不同。
6、示例性地,第一指示信息可以为全局的热点函数列表。第二指示信息可以为全局的热点函数列表。
7、结合第一方面,在第一方面的某些实现方式中,第一子控制器部署于第一计算节点中,第二子控制器部署于第二计算节点中,主控制器部署于控制节点中。
8、控制节点为与计算节点不同的节点。
9、示例性地,第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,可以包括以下至少一项:第一子控制器根据第一指示信息对第一计算节点上未缓存的实例进行缓存,第一子控制器根据第一指示信息对第一计算节点上已缓存的实例进行释放,或者,第一子控制器根据第一指示信息对第一计算节点上已缓存的实例的缓存策略进行调整。
10、结合第一方面,在第一方面的某些实现方式中,第一计算节点的内存包括第一区和第二区,
11、在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一计算节点上的第一函数的实例缓存于第一区,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第一函数的实例从第一区转移至第二区;或者,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一计算节点上的第二函数的实例缓存于第二区,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第二函数的实例从第二区转移至第一区。
12、结合第一方面,在第一方面的某些实现方式中,第一区中缓存的实例的目标缓存时长大于第二区中缓存的实例的目标缓存时长。
13、在本技术实施例中可以根据实例的缓存策略调整函数的实例的缓存位置,即调整函数的目标缓存时长,这样有利于进一步提高缓存资源的利用率。示例性地,若函数原本的调用请求较少,可以将该函数的实例缓存在第二区,在该函数的调用请求增多时,可以调整缓存策略,将该函数的实例从第二区转移至第一区;若函数原本的调用请求较多,可以将该函数的实例缓存在第一区,在该函数的调用请求减少时,可以调整缓存策略,将该函数的实例从第一区转移至第二区。这样可以适应函数的调用请求的波动情况,从而有利于进一步调高缓存资源的利用率。
14、结合第一方面,在第一方面的某些实现方式中,第一计算节点上的实例的缓存策略包括第一计算节点上的至少一个函数的实例的目标缓存时长,第一指示信息指示至少一个函数的类型,至少一个函数的类型包括热点函数或非热点函数,至少一个函数中类型为热点函数的函数的实例的目标缓存时长大于类型为非热点函数的函数的实例的目标缓存时长。
15、在本技术实施例的方案中,区分热点函数和非热点函数,热点函数的目标缓存时长大于非热点函数的目标缓存时长,即优先分配资源以缓存热点函数,有利于在降低冷启动调用的发生率的同时避免缓存资源的浪费,即有利于提高缓存资源的利用率。同时,将函数分为热点函数和非热点函数,基于函数的类型即可确定函数的实例的目标缓存时长,实现上更简便高效。
16、结合第一方面,在第一方面的某些实现方式中,非热点函数对应的目标缓存时长大于0。
17、在本技术实施例的方案中,可以为非热点函数分配缓存资源进行缓存,这样有利于减少由于热度识别精度不足或者延迟导致的决策失误,从而有利于降低冷启动发生的频率。
18、结合第一方面,在第一方面的某些实现方式中,热点函数对应的目标缓存时长不受生命周期限制。
19、结合第一方面,在第一方面的某些实现方式中,第一计算节点的内存包括第一区和第二区,第一区用于缓存第一计算节点上类型为热点函数的函数的实例,第二区用于缓存第一计算节点上类型为非热点函数的函数的实例。
20、结合第一方面,在第一方面的某些实现方式中,至少一个函数包括第一函数,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一函数的实例缓存于第一区,第一指示信息指示第一函数的类型为非热点函数,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第一函数的实例从第一区转移至第二区;或者,至少一个函数包括第二函数,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第二函数的实例缓存于第二区,第一指示信息指示第二函数的类型为热点函数,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第二函数的实例从第二区转移至第一区。
21、由于函数的调用请求的次数是随时间波动的,相应地,函数的类型也会随着时间波动。在本技术实施例中可以根据函数的类型的变化调整函数的实例的缓存位置,即调整函数的目标缓存时长,以适应热点的变化,有利于进一步提高缓存资源的利用率。
22、结合第一方面,在第一方面的某些实现方式中,方法还包括:主控制器基于集群中的函数在集群中的调用次数确定集群中的函数的类型,集群中的函数包括至少一个函数。
23、结合第一方面,在第一方面的某些实现方式中,方法还包括:在第三函数的调用请求到达的情况下,主控制器根据集群中的多个计算节点的累积热度从集群中确定第三计算节点,第三计算节点用于创建第三函数的实例,多个计算节点中的每个计算节点的累积热度是根据每个计算节点上的函数在集群中的调用次数确定的。
24、在本技术实施例的方案中,可以基于计算节点的累积热度实现实例调度,有利于实现合理的资源分配,避免计算节点上热度堆积而导致的单节点性能瓶颈,减少负载倾斜,有利于避免热点函数之间的资源竞争,从而降低冷启动调用的发生率。各个计算节点的累积热度可以是根据每个计算节点上的函数在集群中的调用次数确定的。这样可以从全局角度分析函数的访问行为,进而基于此确定各个计算节点的累积热度,有利于得到更准确全面的累积热度,有利于进一步热点函数倾斜,从而避免热度函数之间的资源竞争。
25、结合第一方面,在第一方面的某些实现方式中,多个计算节点中的每个计算节点的累积热度分别是根据每个计算节点上的类型为热点函数的函数的热度和每个计算节点上的类型为热点函数的函数的实例的数量确定的,每个计算节点上的类型为热点函数的函数的热度是根据每个计算节点上的类型为热点函数的函数在集群中的调用次数确定的。
26、进一步地,函数的热度可以通过对该函数在各个计数周期的执行次数进行加权求和得到。
27、结合第一方面,在第一方面的某些实现方式中,第三计算节点的累积热度与第三计算节点的可用资源的比值小于或等于多个计算节点中除第三计算节点以外的其他计算节点的累积热度与其他计算节点的可用资源的比值。
28、在本技术实施例的方案中,在确定第三计算节点时考虑了计算节点的可用资源量,有利于进一步避免计算节点上热度堆积。
29、结合第一方面,在第一方面的某些实现方式中,集群中的实例不包括第三函数的可用实例。
30、在本技术实施例的方案中,当函数的调用请求到达时,若集群中的多个计算节点中没有该函数的可用实例,才触发冷启动调用,进行实例的调度以创建新的实例,这样有利于减少计算节点间的实例缓存冗余,提高缓存资源的利用率。
31、结合第一方面,在第一方面的某些实现方式中,方法还包括:在第三函数的调用请求到达的情况下,负载分发器将第三函数的调用请求转发至集群中第四计算节点,第四计算节点上的实例包括第三函数的可用实例。
32、结合第一方面,在第一方面的某些实现方式中,方法还包括:第一计算节点创建第四函数的实例,第一指示信息指示第四函数的实例的类型为热点函数,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第四函数的实例缓存至第一区。
33、结合第一方面,在第一方面的某些实现方式中,该方法还包括:第一计算节点创建第五函数的实例,第一指示信息指示第五函数的实例的类型为非热点函数,以及第一子控制器根据第一指示信息对第一计算节点上的实例进行实例缓存处理,包括:第一子控制器将第五函数的实例缓存至第二区。
34、可选地,方法还包括:第一子控制器根据第一计算节点上的第六函数的负载调整第六函数的实例的数量,第六函数的类型为热点函数。
35、在本技术实施例的方案中,子控制器可以监控对应的计算节点上的热点函数的负载变化,若负载减少,可以相应地减少该热点函数的实例的数量。这样,有利于进一步减低缓存实例的内存消耗,避免不必要的实例缓存,有利于避免缓存冗余。
36、第二方面,提供了一种函数缓存的系统,该系统包括主控制器和多个子控制器,其中,主控制器用于向多个子控制器中的第一子控制器发送第一指示信息,第一指示信息用于确定集群中的第一计算节点上的实例的缓存策略;第一子控制器用于根据第一指示信息对第一计算节点上的实例进行实例缓存处理;主控制器还用于向多个子控制器中的第二子控制器发送第二指示信息,第二指示信息用于确定集群中的第二计算节点上的实例的缓存策略;第二子控制器用于根据第二指示信息对第二计算节点上的实例进行实例缓存处理。
37、结合第二方面,在第二方面的某些实现方式中,第一子控制器部署于第一计算节点中,第二子控制器部署于第二计算节点中,主控制器部署于控制节点中。
38、结合第二方面,在第二方面的某些实现方式中,第一计算节点的内存包括第一区和第二区,
39、在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一计算节点上的第一函数的实例缓存于第一区,以及第一子控制器具体用于:将第一函数的实例从第一区转移至第二区;或者,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一计算节点上的第二函数的实例缓存于第二区,以及第一子控制器具体用于:将第二函数的实例从第二区转移至第一区。
40、结合第二方面,在第二方面的某些实现方式中,第一区中缓存的实例的目标缓存时长大于第二区中缓存的实例的目标缓存时长。
41、结合第二方面,在第二方面的某些实现方式中,第一计算节点上的实例的缓存策略包括第一计算节点上的至少一个函数的实例的目标缓存时长,第一指示信息指示至少一个函数的类型,至少一个函数的类型包括热点函数或非热点函数,至少一个函数中类型为热点函数的函数的实例的目标缓存时长大于类型为非热点函数的函数的实例的目标缓存时长。
42、结合第二方面,在第二方面的某些实现方式中,第一计算节点的内存包括第一区和第二区,第一区用于缓存第一计算节点上类型为热点函数的函数的实例,第二区用于缓存第一计算节点上类型为非热点函数的函数的实例。
43、结合第二方面,在第二方面的某些实现方式中,至少一个函数包括第一函数,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第一函数的实例缓存于第一区,第一指示信息指示第一函数的类型为非热点函数,以及第一子控制器具体用于将第一函数的实例从第一区转移至第二区;或者,至少一个函数包括第二函数,在主控制器向多个子控制器中的第一子控制器发送第一指示信息之前,第二函数的实例缓存于第二区,第一指示信息指示第二函数的类型为热点函数,以及第一子控制器具体用于将第二函数的实例从第二区转移至第一区。
44、结合第二方面,在第二方面的某些实现方式中,主控制器还用于:基于集群中的函数在集群中的调用次数确定集群中的函数的类型,集群中的函数包括至少一个函数。
45、结合第二方面,在第二方面的某些实现方式中,主控制还用于:在第三函数的调用请求到达的情况下,根据集群中的多个计算节点的累积热度从集群中确定第三计算节点,第三计算节点用于创建第三函数的实例,多个计算节点中的每个计算节点的累积热度是根据每个计算节点上的函数在集群中的调用次数确定的。
46、结合第二方面,在第二方面的某些实现方式中,多个计算节点中的每个计算节点的累积热度分别是根据每个计算节点上的类型为热点函数的函数的热度和每个计算节点上的类型为热点函数的函数的实例的数量确定的,每个计算节点上的类型为热点函数的函数的热度是根据每个计算节点上的类型为热点函数的函数在集群中的调用次数确定的。
47、结合第二方面,在第二方面的某些实现方式中,第三计算节点的累积热度与第三计算节点的可用资源的比值小于或等于多个计算节点中除第三计算节点以外的其他计算节点的累积热度与其他计算节点的可用资源的比值。
48、结合第二方面,在第二方面的某些实现方式中,集群中的实例不包括第三函数的可用实例。
49、结合第二方面,在第二方面的某些实现方式中,系统还包括负载分发器,用于:在第三函数的调用请求到达的情况下,将第三函数的调用请求转发至集群中第四计算节点,第四计算节点上的实例包括第三函数的可用实例。
50、应理解,在上述第一方面中对相关内容的扩展、限定、解释和说明也适用于第二方面中相同的内容。
51、第三方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器。至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得计算设备集群执行第一方面以及第一方面的任意一种实现方式中的方法。
52、第四方面,提供一种计算机可读介质,包括计算机程序指令,当计算机程序指令由计算设备集群执行时,计算设备集群执行第一方面以及第一方面的任意一种实现方式中的方法。
53、第五方面,提供一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得计算设备集群执行上述第一方面以及第一方面的任意一种实现方式中的方法。
本文地址:https://www.jishuxx.com/zhuanli/20240914/294129.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表