
1.本发明涉及无服务器计算技术领域,特别涉及一种基于无服务器计算的缓存方法、系统、电子设备及可读存储介质。
背景技术:2.随着云计算技术的不断发展,无服务器概念被提出。无服务器计算(serverless)作为部署云应用程序的一种新兴的模式,通过将应用拆分为多个细粒度的函数并上传至平台,用户只需关心代码的业务逻辑,无需担心服务器配置、维护、更新和扩展等运维问题。无服务器具有低成本、低风险、缩放灵活等特点,使其逐渐成为软件开发的主流架构。
3.无服务器计算将一个应用细分为多个函数,由于函数之间不能直接通信,当函数之间要进行数据共享时,函数的处理数据需要先写入远端存储器中。在函数执行的过程中,频繁访问远端存储器会降低带宽和增加延迟,同时会增加管理的成本和开销。考虑上述的因素,本地缓存成为了解决这一瓶颈的方案,通过本地缓存加快对远端存储数据的读写访问和加快函数之间的数据共享。
4.在现有的技术中,大多都将本地缓存独立于每个应用程序进行管理,系统中包含一个本地缓存,多个应用程序共用一个本地缓存,通过api接口控制数据的一致性,在函数之间传递信息。现有的缓存技术中,大多都是提供固定大小的缓存块,一些技术根据缓存对象计算负载对缓存进行调节,但缓存的大小有所限制。
5.然而,现有技术中缓存独立于每个应用程序进行管理,使得管理成本高,还需要更改系统配置或应用程序,使得缓存层不够透明,此外缓存系统是静态地分配资源,不能随着访问的数据量的变化而自动扩展其容量。
技术实现要素:6.本发明的目的在于提供一种基于无服务器计算的缓存方法、系统、电子设备及可读存储介质,以解决现有技术中缓存管理成本高,缓存层不透明,不能随着访问的数据量的变化而自动扩展其容量的问题。
7.本发明是这样实现的:
8.为达到上述目的,本发明提供一种基于无服务器计算的缓存方法,包括:
9.将目标应用程序拆分得到的多个细粒度的应用函数运行在各自的独立的容器中;
10.通过化学反应优化算法,为各个所述应用函数进行本地缓存资源分配;
11.将每个所述应用函数及其本地缓存都置于函数服务运行时中,每个所述应用函数的本地缓存能够在运行的过程中透明地管理应用程序访问的数据,不同的所述应用函数能够通过本地缓存相互访问。
12.进一步的,所述通过化学反应优化算法,为各个所述应用函数进行本地缓存资源分配,包括:
13.将优化缓存资源分配问题转化为服务提供商总收益最大化问题,通过化学反应优
化算法为各个所述应用函数进行本地缓存资源优化分配。
14.进一步的,所述化学反应优化算法包括基于单分子无效碰撞的算法、基于分解反应的算法、基于合成反应的算法。
15.进一步的,任一所述应用函数读取数据的方法如下:
16.首先访问本地缓存,如果命中则直接从本地缓存中读取数据,如果不命中则继续访问远端存储系统。
17.进一步的,所述方法还包括:
18.当本地缓存内存被占完时,通过saiu缓存替换策略,优先替换访问率低、占用空间大且更新频率高的数据块,对于被替换的数据块,通过写回的方式将数据写入远端存储系统。
19.进一步的,所述saiu缓存替换策略应用一获益函数来决定替换哪一个数据块,该获益函数为:
[0020][0021]
其中,g(i)是数据块i的获益函数,li是获取数据块i的延迟时间,ai是数据块i的访问时间,ui是数据块i的更新时间,si是数据i的大小。
[0022]
进一步的,当所述目标应用程序被删除时,收集缓存对象的元数据,当所述目标应用程序再次被运行时,利用收集的元数据对缓存数据进行预热。
[0023]
进一步的,任一应用函数的本地缓存中有如下三个守护进程:
[0024]
内存守护进程,用于监视应用函数和本地缓存的内存消耗情况;
[0025]
对象守护进程,用于确定本地缓存使用对象的数据块;
[0026]
缓冲守护进程,用于收集缓存对象元数据,并对数据进行预热。
[0027]
为达到上述目的,本发明还提供一种基于无服务器计算的缓存系统,包括:用户前端控制平面,服务器平台和远端存储系统,其中,
[0028]
所述用户前端控制平面,用于将目标应用程序拆分为多个细粒度的应用函数并上传至所述服务器平台;
[0029]
所述服务器平台,用于实现如上文任一项所述的基于无服务器计算的缓存方法;
[0030]
所述远端存储系统,用于存储各个所述应用函数的处理数据。
[0031]
为达到上述目的,本发明还提供一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现上文任一项所述的基于无服务器计算的缓存方法。
[0032]
为达到上述目的,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上文任一项所述的基于无服务器计算的缓存方法。
[0033]
与现有技术相比,本发明具有以下有益效果:
[0034]
(1)本发明设计了一种透明动态优化的无服务器计算缓存系统,在每个应用函数设置本地缓存,使本地缓存与应用函数联系起来,本地缓存在运行时能够透明地管理程序数据,降低了缓存管理成本;
[0035]
(2)本发明设计一种基于化学反应优化算法的无服务器缓存扩展算法,通过将优
化缓存资源分配问题转化为服务提供商总收益最大化问题,通过化学反应优化算法对缓存资源进行优化并将计算量、缓存大小等因素考虑进缓存资源的分配中,可以随着访问的数据量的变化自动扩展容量;
[0036]
(3)在缓存替换中,基于saiu缓存替换策略,优先考虑替换那些访问率低、占用空间大且更新频率高的数据块;
[0037]
(4)当应用程序被删除后,通过收集有关缓存对象的元数据,当应用程序再次被运行时,利用收集的元数据对缓存数据进行预热。
[0038]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
[0039]
为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图:
[0040]
图1是本发明一实施例提供的基于无服务器计算的缓存系统的架构图;
[0041]
图2是本发明一实施例提供的基于无服务器计算的缓存方法的流程图;
[0042]
图3是本发明一实施例提供的基于化学反应优化算法的缓存资源分配流程图。
具体实施方式
[0043]
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0044]
为解决现有技术存在的问题,本发明提供了一种基于无服务器计算的缓存方法、系统、电子设备及可读存储介质。
[0045]
本发明采用透明动态优化的无服务器计算缓存系统设计,在每个应用函数设置本地缓存,使本地缓存与应用函数联系起来,本地缓存在运行时能够透明地管理程序数据。
[0046]
本发明设计的基于无服务器计算的缓存系统架构如图1所示,包括用户前端控制平面,服务器平台和远端存储系统。当用户在用户前端控制平面部署程序代码时,将应用程序细分为一个个应用函数,服务器平台利用容器技术部署每一个应用函数,每个应用函数和本地缓存都置于函数服务运行时中,能够提高速度降低开销,降低维护成本。每个应用函数都具有自己的本地缓存,每个函数的本地缓存都能在运行时透明地管理应用程序访问的数据。不同应用程序函数的缓存能够相互访问,形成一个协作分布式缓存。
[0047]
本地缓存中有三个守护进程,内存守护进程主要负责监应用视函数和本地缓存的内存消耗情况,对象守护进程主要负责确定本地缓存使用对象的数据块。缓冲守护进程主要负责收集缓存对象元数据,并使用它们来对数据进行预热。用户前端控制平面则用来控制添加或删除函数实例。
[0048]
如图2所示,本发明一实施例提供的基于无服务器计算的缓存方法,应用于服务器
平台,包括以下步骤:
[0049]
s100:将目标应用程序拆分得到的多个细粒度的应用函数运行在各自的独立的容器中;
[0050]
s200:通过化学反应优化算法,为各个所述应用函数进行本地缓存资源分配;
[0051]
s300:将每个所述应用函数及其本地缓存都置于函数服务运行时中,每个所述应用函数的本地缓存能够在运行的过程中透明地管理应用程序访问的数据,不同的所述应用函数能够通过本地缓存相互访问。
[0052]
其中,函数服务运行时是指函数在运行时所依赖的环境,包括任何库、代码包、框架或平台。“透明地管理应用程序访问的数据”是指用户不需要了解本地缓存的运行机制,只需通过要调存接口就能与本地缓存数据进行交互。
[0053]
在步骤s200中,本发明设计一种基于化学反应优化算法的无服务器缓存扩展算法,通过将优化缓存资源分配问题转化为服务提供商总收益最大化问题,通过化学反应优化算法对缓存资源进行优化,并将计算量、缓存大小等因素考虑进缓存资源的分配中。缓存扩展算法具体如下:
[0054]
内容缓存能耗成本是由于内容缓存和内容更新所带来的能量消耗,用来作为优化缓存资源的判定,缓存能耗比例其公式定义为:
[0055][0056]
其中,m
×
n的二维矩阵y∈y表示应用函数的缓存资源分配状态(服务提供商将物理网络切分成多个虚拟网络(即网络切片),n是指服务提供商所能管控的物理节点集合的数量,m是指服务提供商所能提供的网络切片的集合的数量),α为单位缓存容量的内容缓存或内容更新所带来的能量消耗值,v
ik
表示单位时间t内的内容更新次数,u
ik
表示单位时间t内的请求队列的数量。
[0057]
内容缓存能耗成本为:
[0058][0059]
其中,ρ为单位缓存容量的内容缓存或内容更新的能量消耗价格。
[0060]
服务提供商总收益函数定义为u
total
,可以表示为:
[0061]utotal
=p-p
cache
ꢀꢀ
(3)
[0062]
其中,p为所有用户支付给服务提供商的费用。
[0063]
所以总收益最大化问题为:
[0064]
max{y=ik}u
total(y)
ꢀꢀ
(4)
[0065]
化学反应优化算法是化学反应过程中分子行为,通过相互作用达到一种稳定状态。将整个系统平台视为一个分子,分子结构代表给定优化问题的解,即缓存资源分配矩阵y,分子势能为目标函数值,即服务提供商的总收益,分子动能为获得比现有分子更高得势能状态得分子容忍度。基于化学反应优化算法的缓存资源分配流程如图3所示,其步骤如下:
[0066]
(1)初始化,设置初始参数,设定单分子无效碰撞反应中的动能损失的上限值loss
max
,分子动能的初始值e
inital
,分子间无效碰撞反应的参数影响因子f。在约束条件下随机生成缓存资源分配矩阵y。
[0067]
(2)选择一种化学反应优化算法进行缓存资源分配,可以从基于单分子无效碰撞的算法、基于分解反应的算法、基于合成反应的算法中选择一种,也可以采用其它的化学反应优化算法。
[0068]
基于单分子无效碰撞反应的缓存资源分配的思路是,随机选择缓存资源分配矩阵y中的一行,在约束条件下随机的重新分配缓存资源,继而得到一个新的缓存资源分配矩阵y
′
;
[0069]
基于分解反应的缓存资源分配的思路是,随机选择缓存分配资源矩阵y中的一行,随机地分配到y1′
或y2′
中相对应的那一行,直到矩阵y中的每一行都被分配完为止,然后在y1′
和y2′
中未被分配的行则随机地分配正数;
[0070]
基于合成反应的缓存资源分配。随机创建缓存资源分配矩阵y1和y2,并将矩阵y1和y2中随机选择不重合的行将其对应的值分配到缓存资源分配矩阵y
′
中相应的位置,直到矩阵y
′
每一行都被分配完为止,即生成一个新的缓存分配矩阵y
′
;
[0071]
上述基于单分子无效碰撞的算法、基于分解反应的算法、基于合成反应的算法的具体计算过程可参考现有技术,在此不做赘述。
[0072]
(3)根据公式(3)计算当前服务提供商总收益u
total
,并判断得到的解是否满足公式(4)约束条件。
[0073]
(4)停止判据。设置循环系数t,当循环次数达到t时,停止迭代,否则继续迭代。如果满足退出条件则结束退出,确定分配资源大小,如果不满足则继续迭代。迭代停止后输出分子势能和分子结构,即目标函数和给定问题的解。
[0074]
进一步的,应用函数在读取数据时,首先访问本地缓存,如果命中则直接从本地缓存中读取数据,如果不命中则继续访问远端存储系统。读取数据有三种情形:
[0075]
(1)本地命中,即所需要读取的数据在本地缓存中查找到;
[0076]
(2)本地不命中远端命中,即所需要读取的数据在本地缓存中查找不到,而在远端存储系统中查到;
[0077]
(3)本地和远端均不命中,即所需要读取的数据在本地缓存中查找不到,继而去远端存储系统中进行查找,也未查找到。
[0078]
进一步的,当本地缓存内存被占完时,通过saiu缓存替换策略,优先考虑替换那些访问率低、占用空间大且更新频率高的数据块。对于被替换的数据块,需要通过写回的方式将数据写入远端存储系统。
[0079]
在saiu缓存替换策略中,应用一个获益函数来决定替换哪一个数据块,该获益函数为:
[0080][0081]
其中,g(i)是数据块i的获益函数,li是获取数据块i的延迟时间,ai是数据块i的访问时间,ui是数据块i的更新时间,si是数据i的大小。
[0082]
即,计算出每一个数据块对应的获益函数,选择获益函数值最小的数据块替换掉。
[0083]
对于数据的写入采用回写策略,当缓存中的数据块被替换时,才将数据块的内容写回远端存储系统中,在数据块中设置一个“脏位”,即设置一个标志位用来表示数据块是否进行过修改,0表示未修改过,1表示修改过。
[0084]
进一步的,当所述目标应用程序被删除时,本地缓存也将会被卸载。此时会收集有关缓存对象的元数据,并在应用程序重新加载时,使用该元数据频繁访问的对象对缓存进行预热。
[0085]
综上所述,与现有技术相比,本发明在每个应用函数设置本地缓存,在运行时能够透明地管理程序数据,实现应用函数之间缓存的相互访问。利用基于化学反应优化算法的无服务器缓存扩展算法,通过化学反应优化算法对缓存资源进行优化并将计算量、缓存大小等因素考虑进缓存资源的分配中。
[0086]
基于同一发明构思,本发明还提供一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上文所述的基于无服务器计算的缓存方法。
[0087]
所述处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器通常用于控制所述电子设备的总体操作。本实施例中,所述处理器用于运行所述存储器中存储的程序代码或者处理数据,例如运行基于无服务器计算的缓存方法的程序代码。
[0088]
所述存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器可以是所述电子设备的内部存储单元,例如该电子设备的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(secure digital,sd)卡,闪存卡(flashcard)等。当然,所述存储器还可以既包括所述电子设备的内部存储单元也包括其外部存储设备。本实施例中,所述存储器通常用于存储安装于所述电子设备的操作方法和各类应用软件,例如基于无服务器计算的缓存方法的程序代码等。此外,所述存储器还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0089]
基于同一发明构思,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的基于无服务器计算的缓存方法。
[0090]
综上所述,本发明提供的一种基于无服务器计算的缓存方法、系统、电子设备及可读存储介质,具有下列优点和积极效果:
[0091]
(1)本发明设计了一种透明动态优化的无服务器计算缓存系统,在每个应用函数设置本地缓存,使本地缓存与应用函数联系起来,本地缓存在运行时能够透明地管理程序数据,降低了管理成本;
[0092]
(2)本发明设计一种基于化学反应优化算法的无服务器缓存扩展算法,通过将优化缓存资源分配问题转化为服务提供商总收益最大化问题,通过化学反应优化算法对缓存资源进行优化并将计算量、缓存大小等因素考虑进缓存资源的分配中,可以随着访问的数据量的变化自动扩展容量;
[0093]
(3)在缓存替换中,基于saiu缓存替换策略,优先考虑替换那些访问率低、占用空间大且更新频率高的数据块;
[0094]
(4)当应用程序被删除后,通过收集有关缓存对象的元数据,当应用程序再次被运行时,利用收集的元数据对缓存数据进行预热。
[0095]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0096]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0097]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0098]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0099]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。