CN114900485A - 访问网络文件存储的方法、电子设备及系统 - Google Patents
访问网络文件存储的方法、电子设备及系统 Download PDFInfo
- Publication number
- CN114900485A CN114900485A CN202210489816.XA CN202210489816A CN114900485A CN 114900485 A CN114900485 A CN 114900485A CN 202210489816 A CN202210489816 A CN 202210489816A CN 114900485 A CN114900485 A CN 114900485A
- Authority
- CN
- China
- Prior art keywords
- file storage
- data
- network file
- cache
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 222
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000006870 function Effects 0.000 claims description 250
- 230000002776 aggregation Effects 0.000 claims description 31
- 238000004220 aggregation Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 17
- 230000004931 aggregating effect Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000001960 triggered effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Abstract
本公开提供一种访问网络文件存储的方法、电子设备及系统,涉及云计算技术,在运行函数实例时,若从实例缓存中获取数据失败,则根据函数实例中的第一挂载点在计算节点的节点缓存中获取数据;第一挂载点是将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例上得到的;若从节点缓存中获取数据失败,则根据计算节点的第二挂载点从网络文件存储获取数据;第二挂载点是将网络文件存储挂载到计算节点得到的。本公开提供的访问网络文件存储的方法、电子设备及系统中,各个函数实例能够共享计算节点的节点缓存,函数实例可以依次从实例缓存、节点缓存中获取,若均未命中,才从网络文件存储中获取数据,能够有效的降低访问网络文件存储的次数。
Description
技术领域
本公开涉及云计算技术,尤其涉及一种访问网络文件存储的方法、电子设备及系统。
背景技术
FaaS(Function as a Service,函数计算)平台能够管理用户上传的函数代码,在发生特定事件时,会触发FaaS平台执行相应的代码。FaaS平台执行代码时,会在计算节点上创建函数实例,调用函数并返回执行结果。
FaaS平台通常默认只提供临时存储空间,在一些特定的应用场景中,可以利用网络文件存储作为持久化的存储介质。
执行计算节点中的函数实例时,会访问网络文件存储,若FaaS平台中的多个函数实例并发执行,则会导致FaaS平台与网络文件存储之间的交互次数较多,进而导致网络文件存储的读写压力较大。
发明内容
本公开提供一种访问网络文件存储的方法、电子设备及系统,以降低FaaS平台与网络文件存储之间的交互次数。
本公开的第一个方面是提供访问网络文件存储的方法,包括:
运行函数实例时,在所述函数实例的实例缓存中获取数据;
若从所述实例缓存中获取数据失败,则根据所述函数实例中的第一挂载点在计算节点的节点缓存中获取数据;所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
若从所述节点缓存中获取数据失败,则根据所述计算节点的第二挂载点从所述网络文件存储获取数据;所述第二挂载点是将所述网络文件存储挂载到所述计算节点上得到的。
本公开的另一个方面是提供一种访问网络文件存储的装置,包括:
实例缓存获取单元,用于运行函数实例时,在所述函数实例的实例缓存中获取数据;
节点缓存获取单元,用于若从所述实例缓存中获取数据失败,则根据所述函数实例中的第一挂载点在计算节点的节点缓存中获取数据;所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
网络存储获取单元,用于若从所述节点缓存中获取数据失败,则根据所述计算节点的第二挂载点从所述网络文件存储获取数据;所述第二挂载点是将所述网络文件存储挂载到所述计算节点上得到的。
本公开的又一个方面是提供一种电子设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的访问网络文件存储的方法。
本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的访问网络文件存储的方法。
本公开的又一个方面是提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上述第一方面所述的访问网络文件存储的方法。
本公开的又一个方面是提供一种电子系统,包括:计算节点和网络文件存储;
所述计算节点中设置有用于访问所述网络文件存储的第二挂载点;
所述计算节点中运行有多个函数实例,各函数实例中设置有第一挂载点,所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
所述函数实例从实例缓存中获取数据失败时,通过所述第一挂载点访问所述计算节点的节点缓存。本公开提供的访问网络文件存储的方法、电子设备及系统的技术效果是:
本实施例提供的访问网络文件存储的方法、电子设备及系统,运行函数实例时,在函数实例的实例缓存中获取数据;若从实例缓存中获取数据失败,则根据函数实例中的第一挂载点在计算节点的节点缓存中获取数据;第一挂载点是将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例上得到的;若从节点缓存中获取数据失败,则根据计算节点的第二挂载点从网络文件存储获取数据;第二挂载点是将网络文件存储挂载到计算节点上得到的。本公开提供的访问网络文件存储的方法、电子设备及系统中,各个函数实例能够共享计算节点的节点缓存,函数实例获取数据时,可以依次从实例缓存、节点缓存中获取,若均未命中,才从网络文件存储中获取数据,能够有效的降低访问网络文件存储的次数。
附图说明
图1为一示例性实施例示出的FaaS平台的示意图;
图2为本公开一示例性实施例示出的访问网络文件存储的方法的流程图;
图3为本公开一示例性实施例示出的FaaS平台的示意图;
图4为本公开另一示例性实施例示出的访问网络文件存储的方法的流程图;
图5为本公开一示例性实施例示出的计算节点的示意图;
图6为本公开一示例性实施例示出的获取数据的流程图;
图7为本公开一示例性实施例示出的访问网络文件存储的装置的结构图;
图8为本公开另一示例性实施例示出的访问网络文件存储的装置的结构图;
图9为本公开一示例性实施例示出的电子设备的结构图。
具体实施方式
图1为一示例性实施例示出的FaaS平台的示意图。
如图1所示,FaaS平台中包括多个计算节点11,FaaS平台能够存储租户上传的函数代码,存在触发事件时,FaaS平台中的任一个计算节点11能够启动函数实例111,函数实例111可以是容器形式。
函数实例111具有缓存页(Page Cache),用于为函数实例111提供缓存服务。
通常,不同租户的函数实例运行在同一计算节点上,这些函数实例之间相互隔离。函数实例各自建立与NFS服务端12(Network File System服务端,网络文件存储服务端)之间的会话,将NFS服务端12各自挂载到实例本地的挂载点(NFS mount)。
这种方案中,函数实例各自的Page Cache之间独立,且各自独立的访问NFS服务端12。即使多个函数实例所做的操作相同,或者访问内容相同,也会各自独立的访问NFS服务端12。当函数实例数量较多时,这些函数实例之间会相互竞争NFS服务端12有限的带宽和请求处理能力。
每个函数实例各自维护自己的Page Cache;这种局部的Page Cache无法与其它函数实例共享;函数实例释放后其所构建的Cache也被立即释放;新的函数实例启动后需要重头构建自己的Page Cache。因此函数实例间无法充分利用各自已建立的Page Cache,不利于降低延时和提升吞吐。
为了解决上述技术问题,本公开提供的方案中,将网络存储服务挂载在计算节点中,从而建立计算节点与网络存储服务之间的会话,再将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例中。这种方式能够通过节点缓存使得各个函数实例共享缓存的数据,从而降低函数实例访问网络存储服务次数,以降低函数实例对网络存储服务的竞争和请求。
图2为本公开一示例性实施例示出的访问网络文件存储的方法的流程图。
如图2所示,本实施例提供的访问网络文件存储的方法包括:
步骤201,运行函数实例时,在函数实例的实例缓存中获取数据。
其中,本公开提供的方案应用于FaaS平台中的计算节点。
具体的,还可以设置函数代码库,当发生了触发事件时,可以基于预设的策略将用于启动函数实例的请求发送给计算节点,计算节点可以从函数代码库中下载相应的代码,并基于该函数代码启动函数实例,从而响应触发事件。触发事件例如可以是网络请求、预设时间到达等,本公开不对此进行限制。
进一步的,计算节点中启动的各函数实例共享计算节点的内存,每个函数实例还具有内核,能够独立运行。
实际应用时,计算节点中的每个函数实例都具有实例缓存,比如是Page Cache,用于为函数实例提供缓存服务。比如,函数实例可以将获取的数据写入实例缓存中,以便能够快速读取该数据。
其中,计算节点中的函数实例运行时,可以从函数实例的实例缓存中获取数据。
步骤202,若从实例缓存中获取数据失败,则根据函数实例中的第一挂载点在计算节点的节点缓存中获取数据;第一挂载点是将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例上得到的。
具体的,每个函数实例还具有第一挂载点,第一挂载点是通过将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例上得到的。挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。函数实例能够通过第一挂载点访问计算节点中的数据。
进一步的,可以对计算节点中挂载的网络文件存储进行抽象得到共享文件存储,并将其挂载到函数实例中。
进一步的,若实例缓存中不存在需要获取的数据,则命中数据失败,此时,可以利用第一挂载点访问共享网络存储。利用第一挂载点访问共享网络存储时,会先访问计算节点的节点缓存,从中获取数据。
实际应用时,计算节点中启用多个函数实例时,各个函数实例均可以基于各自的第一挂载点访问计算节点的缓存,进而达到共享计算节点缓存中的数据的目的。
一种可选的实现方式中,可以通过virtiofs技术在函数实例中挂载计算节点中的共享文件存储,具体可以在计算节点中创建守护进程,在函数实例中创建virtiofs客户端,守护进程对函数实例暴露virtiofs服务,使得函数实例中的virtiofs客户端能够将计算节点的目录以virtiofs文件系统(共享文件存储)的格式挂载到virtiofs客户端本地。
这种实现方式中,计算节点为服务端,函数实例中设置有客户端,通过virtiofs协议使得客户端能够访问服务端,进而从计算节点的缓存中获取数据。
其中,若实例缓存中存储有需要获取的数据,则函数实例能够获取到该数据,并进行处理。
步骤203,若从节点缓存中获取数据失败,则根据计算节点的第二挂载点从网络文件存储获取数据;第二挂载点是将网络文件存储挂载到计算节点上得到的。
其中,若节点缓存中仍然没有存储需要获取的数据,则可以从网络文件存储中获取数据。
具体的,计算节点中可以具有第二挂载点,第二挂载点是通过挂载网络文件存储得到的。通过挂载网络文件存储,使得计算节点能够通过第二挂载点访问网络文件存储。
在一种可选的实现方式中,还可以在计算节点中设置网络文件存储客户端,可以在该客户端中挂载网络文件存储,从而在该客户端中生成第二挂载点。
进一步的,若计算节点的节点缓存中不存在需要获取的数据,则计算节点可以通过第二挂载点访问网络文件存储,以获取需要的数据。
实际应用时,若计算节点的节点缓存中存在需要获取的数据,则计算节点可以从中获取数据并反馈给函数实例,以使函数实例能够对该数据进行处理。
这种实现方式中,通过在计算节点中挂载网络文件存储,在函数实例中挂载计算节点中与网络文件存储对应的共享文件存储,能够使各函数实例共享计算节点的节点缓存中的数据,比如,当运行第一函数实例从网络文件存储中获取数据A时,由于数据A是最近操作的数据,因此该数据A会被缓存到计算节点的节点缓存中,还会被存储在第一函数实例的实例缓存中,此后第二函数实例若需要读取数据A,即使第二函数实例的实例缓存中没有数据A,也可以从节点缓存中获取,而无需再次访问网络文件存储,能够有效的降低网络文件存储的访问压力。
本公开提供的方案中,各个函数实例无需建立与网络文件存储之间的会话,而是在计算节点中建立与网络文件存储之间的会话,从而避免各函数实例分别访问网络文件存储,造成网络文件存储的访问压力过大的问题。
图3为本公开一示例性实施例示出的FaaS平台的示意图。
如图3所示,FaaS平台包括多个计算节点31,若需要通过计算节点31运行函数实例,则可以在该计算节点31中挂载网络文件存储33生成第二挂载点,计算节点31中还具有节点缓存,用于为计算节点31提供缓存服务。计算节点31通过第二挂载点访问网络文件存储33。
计算节点31还可以基于启动函数实例的请求启动函数实例32,函数实例32中挂载计算节点生成第一挂载点,每个函数实例还具有实例缓存。函数实例可以通过第一挂载点访问计算节点31的节点缓存。
若函数实例需要获取数据,则可以从该函数实例的实例缓存中读取,若读取失败,则利用第一挂载点访问计算节点31的缓存获取数据,若再获取失败,则计算节点31通过第二挂载点访问网络文件存储33获取数据,获取到数据后,计算节点31可以缓存该数据,该数据被函数实例32接收后,函数实例32可以将数据缓存到实例缓存中。
若存在另一函数实例34也需要获取上述数据,则可以从该函数实例34的实例缓存中读取,若读取失败,则利用第一挂载点访问计算节点31的缓存获取数据,此时能够从计算节点31的缓存中获取到该数据。从中可以看出,当函数实例从网络文件存储中获取了数据后,其他函数实例再次获取该数据时,无需再次访问网络文件存储,因此,能够高效利用各函数实例的数据,以降低访问网络文件存储的次数。
本实施例提供的访问网络文件存储的方法,包括:运行函数实例时,在函数实例的实例缓存中获取数据;若从实例缓存中获取数据失败,则根据函数实例中的第一挂载点在计算节点的节点缓存中获取数据;第一挂载点是将计算节点中与网络文件存储所对应的共享文件存储挂载到函数实例上得到的;若从节点缓存中获取数据失败,则根据计算节点的第二挂载点从网络文件存储获取数据;第二挂载点是将网络文件存储挂载到计算节点上得到的。本公开提供的访问网络文件存储的方法中,各个函数实例能够共享计算节点的节点缓存,函数实例获取数据时,可以依次从实例缓存、节点缓存中获取,若均未命中,才从网络文件存储中获取数据,能够有效的降低访问网络文件存储的次数。
图4为本公开另一示例性实施例示出的访问网络文件存储的方法的流程图。
如图4所示,本实施例提供的访问网络文件存储的方法,包括:
步骤401,接收用于创建函数实例的请求,若确定函数实例需要访问网络文件存储,则在计算节点中挂载网络文件存储目录,得到第二挂载点。
其中,本公开提供的方法可以由具备计算能力的电子设备执行,该电子设备可以是FaaS平台中的计算节点。
具体的,FaaS平台可以管理租户上传的函数代码,当触发函数代码执行的事件发生时,FaaS平台基于预设的策略向任一个计算节点发送用于创建函数实例的请求。该请求中可以包括需要执行的函数代码的信息。
进一步的,还可以设置触发器,该触发器能够在满足条件时向FaaS平台发送请求,以使FaaS平台启动函数实例,FaaS平台还能够向触发器反馈函数实例的处理结果。比如,触发器可以接收网络中的请求,根据该请求确定是否发生了触发事件,该触发器还可以是定时触发器,在预设时间到达时向FaaS平台发送请求。
实际应用时,计算节点接收到用于创建函数实例的请求,可以确定需要启动的函数实例是否需要访问网络文件存储。比如,计算节点可以根据用于创建函数实例的请求确定函数实例是否需要访问网络文件存储。再比如,可以根据需要执行的函数代码的功能确定函数实例是否需要访问网络文件存储。
其中,若确定函数实例需要访问网络文件存储,则在计算节点中建立用于访问网络文件存储的网络通道,并使用该网络通道挂载网络文件存储目录,得到第二挂载点。
进一步的,网络文件存储通过“挂载点”才能够被访问,而“挂载点”与租户的VPC(Virtual Private Cloud,虚拟专有网络)关联。因此,基于不同租户的函数代码启动函数实例时,需要建立用于访问不同租户的网络文件存储的网络通道,比如,基于租户A的函数代码启动实例时,可以建立第一网络通道,该第一网络通道用于访问租户A的网络文件存储。基于租户B的函数代码启动实例时,可以建立第二网络通道,该第二网络通道用于访问租户B的网络文件存储。具体的,可以先判断计算节点中是否存在用于访问租户的网络文件存储的第二挂载点,若存在,则可以直接执行步骤402,若不存在,则可以在计算节点中挂载网络文件存储,得到第二挂载点,第二挂载点例如可以是NFS mount。这种实现方式中,通过第二挂载点使得计算节点中的各函数实例共享节点缓存中的数据。
步骤402,启动守护进程得到与网络文件存储对应的共享文件存储,并创建函数实例。
计算节点中挂载了网络文件存储之后,可以为待创建的函数实例启动守护进程,并创建函数实例。
进一步的,守护进程可以是virtiofsd,通过在计算节点中启动virtiofsd,能够将计算节点中的挂载的网络问卷存储以virtiofs协议暴露给函数实例,得到共享文件存储,函数实例内可以使用virtiofs将计算节点上的共享文件存储挂载到函数实例本地。virtiofs使用Virtio作为传输通道。
实际应用时,计算节点还可以根据用于创建函数实例的请求创建函数实例,比如,可以根据需要执行的函数代码创建函数实例。
步骤403,在函数实例中挂载共享文件存储,得到第一挂载点。
其中,守护进程用于将计算节点中挂载的网络文件存储暴露给函数实例,使得函数实例能够将计算节点的存储目录挂载到函数实例中,得到第一挂载点,例如可以是virtiofs mount。
具体的,通过在函数实例中挂载计算节点中的网络文件存储,使得各个函数实例均能够访问计算节点的节点缓存,进而共享节点缓存中的数据,以降低各函数实例访问网络文件存储的次数。
图5为本公开一示例性实施例示出的计算节点的示意图。
如图5所示,计算节点接收到用于创建函数实例的请求时,若确定函数实例需要访问网络文件存储,且计算节点没有挂载网络文件存储时,可以建立用于访问网络文件存储的网络通道,并使用该网路通道挂载网络文件存储目录,得到第二挂载点NFS mount 51,此后,计算节点还可以为待创建的函数实例启动守护进程virtiofsd 52,得到与网络文件存储对应的共享文件存储,还可以创建函数实例53。
其中,计算节点还可以在函数实例53中挂载共享文件存储,得到virtiofs mount54。具体的,函数实例53可以通过virtiofs mount 54调用virtiofsd 52,virtiofsd 52调用计算节点的系统,进而能够访问计算节点的节点缓存,计算节点还可以利用NFS mount51访问网络文件存储。
步骤404,运行函数实例时,在函数实例的实例缓存中获取数据。
进一步的,步骤404与步骤201的实现方式类似,不再赘述。
步骤405,若从实例缓存中获取数据失败,通过第一挂载点调用计算节点的守护进程,守护进程用于调用计算节点的系统。
实际应用时,若实例缓存中不包括需要获取的数据,则会导致从实例缓存中获取数据失败的情况。这种情况下,会触发第一挂载节点访问共享文件存储,在访问共享文件存储时会先访问节点缓存,若在节点缓存中命中数据失败,则会触发第二挂载点访问网络文件存储。
可以通过函数实例中的第一挂载点调用计算节点的守护进程,具体可以通过virtiofs mount调用函数实例的virtiofsd。
其中,守护进程能够调用计算节点的系统。计算节点的系统中包括多个API(Application Programming Interface,应用程序接口),守护进程能够调用这些API,具体可以调用用于在节点缓存中查询数据的API。
步骤406,利用计算节点的系统在节点缓存中获取数据。
具体的,计算节点中设置有系统,该系统被调用时,计算节点可以基于该系统在节点缓存中获取数据。比如系统中用于查询数据的API被调用时,计算节点可以基于该API在节点缓存中获取数据。
进一步的,若节点缓存中存储有需要获取的数据,则计算节点能够基于系统从中获取到数据。此后,还可以执行步骤407。若节点缓存中未存储需要获取的数据,则计算节点不能够基于系统从节点缓存中获取数据,还可以执行步骤408。
步骤407,将数据存储在实例缓存中。
实际应用时,计算节点从节点缓存中获取了数据之后,可以将该数据通过守护进程反馈给函数实例,函数实例还可以将这些数据存储在实例缓存中,从而使得函数实例能够操作这些数据。
步骤408,生成用于从网络文件存储中获取数据的访问请求。
其中,若从节点缓存中获取数据失败,则计算节点可以访问网络文件存储,以获取数据。
具体的,计算节点可以生成用于从网络文件存储中获取数据的访问请求,该访问请求用于获取函数实例所需要的数据。
步骤409,对多个访问请求进行聚合处理,得到第一聚合请求,并在满足访问条件时通过第二挂载点向网络文件存储发送第一聚合请求,第一聚合请求用于指示网络文件存储反馈数据。
进一步的,计算节点中可能存在多个函数实例,运行多个函数实例时,可能存在无法在实例缓存和节点缓存中获取到多个函数实例所需的数据的情况,因此,计算节点中可以生成多个访问请求。
为了进一步降低访问网络文件存储的次数,本公开提供的方案中,还可以对多个访问请求进行聚合处理,得到第一聚合请求,再向网络文件存储发送第一聚合请求。例如,存在5条访问请求,计算节点可以将其聚合为2条请求,再向网络文件存储发送这2条请求,这种方式能够进一步的降低对网络文件存储的访问次数。
实际应用时,网络文件存储接收到第一聚合请求后,可以向计算节点反馈数据。
其中,可以对访问请求中用于访问同一个文件的多个访问请求进行聚合,得到第一聚合请求。比如,存在多个访问请求都用于访问文件A,则计算节点可以聚合这些访问请求,得到一个聚合请求。这种方式,可以使用一个聚合请求替代多条访问请求,能够有效的降低访问网络文件存储的次数。
一种可选的实现方案中,若计算节点确定存在用于访问文件的第一部分内容的第一访问请求,以及访问文件的第二部分内容的第二访问请求,则可以根据第一访问请求和第二访问请求生成第一聚合请求,第一聚合请求用于访问文件的第一部分内容和第二部分内容。
需要说明的是,当存在更多的用于访问该文件的内容的访问请求,可以基于相同的方式进行聚合,而不局限于仅对访问同一个文件的两个请求进行聚合处理。
例如,文件A共有100字节的数据,存在一个访问请求用于访问文件A的第1个到第50个字节,还存在另一个访问请求用于访问文件A的第51个到第80个字节,则计算节点可以聚合这两个访问请求,得到一个聚合请求,该聚合请求用于获取文件A的第1个到80个字节。
再例如,文件A共有100字节的数据,存在一个访问请求用于访问文件A的第40个到第60个字节,还存在另一个访问请求用于访问文件A的第50个到第80个字节,则计算节点可以聚合这两个访问请求,得到一个聚合请求,该聚合请求用于获取文件A的第40个字节到第80个字节。
再例如,文件A共有100字节的数据,存在一个访问请求用于访问文件A的第20个到第80个字节,还存在另一个访问请求用于访问文件A的第30个到第50个字节,则计算节点可以聚合这两个访问请求,得到一个聚合请求,该聚合请求用于获取文件A的第20个到第80个字节。一种可选的实现方式中,可以直接将第一个用于访问文件A的第20个到第80个字节的访问请求作为聚合请求。
可选的,计算节点还可以对预设时段内生成的访问请求生成第一聚合请求,比如,可以聚合每2秒钟时长内所生成的访问请求。
计算节点可以向网络文件存储发送第一聚合请求,使得网络文件存储向计算节点反馈数据。
步骤410,接收网络文件存储发送的数据。
其中,计算节点向网络文件存储发送了第一聚合请求之后,网络文件存储可以向其反馈数据,使得计算节点能够接收到网络文件存储发送的数据。
图6为本公开一示例性实施例示出的获取数据的流程图。
如图6所示,需要执行的函数通过系统调用函数实例内核,函数实例内核先从实例缓存中获取数据,若获取失败,则通过virtiofs mount调用virtiofsd,virtiofsd调用计算节点内核,计算节点内核从节点缓存中获取数据,若获取失败,则计算节点通过NFS mount调用网络文件存储,从而获取数据。
一种可选的实现方式中,函数实例中还设置有virtiofs客户端,通过virtiofsmount调用virtiofsd具体包括:通过virtiofs mount调用virtiofs客户端,再通过virtiofs客户端调用virtiofsd。
一种可选的实现方式中,计算节点中设置有NFS客户端,计算节点通过NFS mount调用网络文件存储,具体包括:通过NFS mount调用NFS客户端,再通过NFS客户端调用网络文件存储。
步骤411,将数据存储在节点缓存和实例缓存中。
其中,计算节点从网络文件存储中读取了数据之后,可以将其缓存在节点缓存中,此后,还可以通过守护进程将数据反馈给函数实例,函数实例能够将数据存储在实例缓存中。以便于函数实例下次获取数据时,能够从实例缓存中快速的获取。
而且将数据缓存在节点缓存中,还能够使其他函数实例能够快速获取数据。
具体的,若聚合多个访问请求从网络文件存储中获取数据,则可以根据每个访问请求确定函数实例所需要获取的数据,并将数据反馈给相应的函数实例。比如,运行第一函数实例时生成了第一访问请求,运行第二函数实例时生成了第二访问请求,计算节点聚合第一访问请求和第二访问请求,从网络文件存储中获取数据。
这种情况下,可以在获取的数据中确定与第一访问请求对应的第一数据,确定与第二访问请求对应的第二数据,计算节点可以将第一数据反馈给第一函数实例,将第二数据反馈给第二函数实例。
步骤412,接收用于向网络文件存储写入数据的写请求。
进一步的,函数实例还可以生成向网络文件存储写入数据的写请求。比如,基于第一函数实例的处理结果可以生成第一写请求,基于第二函数实例的处理结果可以生成第二写请求。
步骤413,根据写请求在节点缓存中写入待处理数据。
计算节点可以根据每个写请求在节点缓存中写入处理结果,该处理结果具体为待写入处理数据。比如,一个写请求用于向网络文件存储中写入一个文件,则计算节点可以将该文件的数据缓存在节点缓存中。
步骤414,根据多个待处理数据生成第二聚合请求,并向网络文件存储发送第二聚合请求,第二聚合请求用于向网络文件存储写入待处理数据。
在满足向网络文件存储写入数据的条件时,计算节点可以根据当前的待处理数据生成第二聚合请求,从而降低函数实例向网络文件存储写入数据的次数。比如,当写请求的数量达到预设数量,或者待处理数据所占用的缓存空间达到预设空间,再或者距离本次写入第一个待处理数据的时长达到预设时长时,可以根据节点缓存中的待处理数据生成第二聚合请求。
计算节点可以向网络文件存储发送第二聚合请求,使得网络文件存储基于第二聚合请求操作存储的数据。
其中,计算节点还可以将存储有待处理数据的范围标记为待上传,以便在满足向网络文件存储写入数据的条件时,将标记有待上传的数据上传到网络文件存储中。
步骤415,接收用于释放函数实例的请求,关闭函数实例和函数实例的守护进程。
其中,在函数执行完毕后,FaaS平台还可以指示计算节点关闭函数实例,从而向其发送用于释放函数实例的请求。
具体的,当计算节点接收到释放请求后,可以关闭函数实例以及该函数实例的守护进程。从而尽快释放计算节点的计算资源。
步骤416,若确定计算节点中不存在其他需要访问网络文件存储的函数实例,则卸载计算节点中的第二挂载点。
进一步的,计算节点还可以判断当前运行的函数实例中,是否还存在其他用于访问网络文件存储的函数实例。比如,当前计算节点中不存在运行的函数实例时,或者运行的函数实例不需要访问网络文件存储,则可以确定不存在其他用于访问网络文件存储的函数实例。
实际应用时,若确定不存在需要访问网络文件存储的函数实例,则计算节点可以卸载计算节点中的第二挂载点,该第二挂载点是指用于挂载网络文件存储的挂载点,由于当前计算节点不需要访问网络文件存储,因此,可以卸载第二挂载点,以释放网络资源。
其中,一个计算节点可以访问多个网络文件存储,此处释放的第二挂载点,是不再访问的网络文件存储的挂载点。
步骤417,若确定计算节点与网络文件存储之间的网络通道没有被使用,则释放网络通道。
其中,在释放了第二挂载点之后,计算节点还可以确定计算节点与网络文件存储之间的网络通道是否被使用,若没有被使用,则可以释放该网络通道,以尽快释放网络资源。
具体的,网络文件存储通过“挂载点”才能够被访问,而“挂载点”与租户的VPC(Virtual Private Cloud,虚拟专有网络)关联。不同网络文件存储的“挂载点”可以关联相同的VPC。需要在FaaS VPC内建立网络通道,打通到达租户的VPC网络,FaaS平台中的计算节点使用该通道才能够访问租户的网络文件存储。
因此,一个租户的多个函数被执行时,可以启动多个函数实例,且这些函数实例与相同的租户VPC关联,这种情况下,仅需要建立一条网络通道,就能够访问该租户的多个网络文件存储。在函数实例被关闭后,可以确定该函数实例使用的网络通道是否被其他函数实例使用,若否,则可以关闭该网络通道,以尽快释放网络资源。
图7为本公开一示例性实施例示出的访问网络文件存储的装置的结构图。
如图7所示,本实施例提供的访问网络文件存储的装置700,包括:
实例缓存获取单元710,用于运行函数实例时,在所述函数实例的实例缓存中获取数据;
节点缓存获取单元720,用于若从所述实例缓存中获取数据失败,则根据所述函数实例中的第一挂载点在计算节点的节点缓存中获取数据;所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
网络存储获取单元730,用于若从所述节点缓存中获取数据失败,则根据所述计算节点的第二挂载点从所述网络文件存储获取数据;所述第二挂载点是将所述网络文件存储挂载到所述计算节点上得到的。
本公开提供的访问网络文件存储的装置,各个函数实例能够共享计算节点的节点缓存,函数实例获取数据时,可以依次从实例缓存、节点缓存中获取,若均未命中,才从网络文件存储中获取数据,能够有效的降低访问网络文件存储的次数。
图8为本公开另一示例性实施例示出的访问网络文件存储的装置的结构图。
如图8所示,在上述实施例的基础上,本实施例提供的访问网络文件存储的装置800,包括启动单元740,用于在所述运行所述函数实例之前:
接收用于创建函数实例的请求,若确定所述函数实例需要访问网络文件存储,则在计算节点中建立用于访问网络文件存储的网络通道,使用所述网络通道挂载网络文件存储目录,得到所述第二挂载点;
启动守护进程得到与所述网络文件存储对应的共享文件存储,并创建函数实例;
在所述函数实例中挂载所述共享文件存储,得到所述第一挂载点。
所述装置包括释放单元750,用于:
接收用于释放所述函数实例的请求,关闭所述函数实例和所述函数实例的守护进程;
若确定所述计算节点中不存在其他需要访问所述网络文件存储的函数实例,则卸载所述计算节点中的第二挂载点;
若确定所述计算节点所述网络文件存储之间的所述网络通道没有被使用,则释放所述网络通道。
可选的,所述节点缓存获取单元720,包括:
守护进程调用模块721,用于通过所述第一挂载点调用所述计算节点的所述守护进程,所述守护进程用于调用所述计算节点的系统;
节点缓存获取模块722,用于利用所述计算节点的系统在所述节点缓存中获取所述数据。
可选的,所述网络存储获取单元730,包括:
请求生成模块731,用于生成用于从所述网络文件存储中获取所述数据的访问请求;
请求聚合模块732,用于对多个所述访问请求进行聚合处理,得到第一聚合请求,并在满足访问条件时通过所述第二挂载点向所述网络文件存储发送所述第一聚合请求,所述第一聚合请求用于指示所述网络文件存储反馈数据;
数据接收模块733,用于接收所述网络文件存储发送的所述数据。
可选的,所述请求聚合模块732具体用于:
对所述访问请求中用于访问同一个文件的多个读请求进行聚合,得到第一聚合请求。
可选的,所述装置还包括缓存单元760,用于:
若从所述节点缓存中获取所述数据,则将所述数据存储在所述实例缓存中;
若从所述网络文件存储中获取所述数据,则将所述数据存储在所述节点缓存和所述实例缓存中。
可选的,所述装置还包括写单元770,用于:
接收用于向所述网络文件存储写入数据的写请求;
根据所述写请求在节点缓存中写入待处理数据;
根据各待处理数据生成第二聚合请求,并向所述网络文件存储发送所述第二聚合请求,所述第二聚合请求用于向所述网络文件存储写入所述待处理数据。
图9为本公开一示例性实施例示出的电子设备的结构图。
如图9所示,本实施例提供的电子设备包括:
存储器91;
处理器92;以及
计算机程序;
其中,所述计算机程序存储在所述存储器91中,并配置为由所述处理器92执行以实现如上所述的任一种访问网络文件存储的方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如上所述的任一种访问网络文件存储的方法。
本实施例还提供一种计算机程序,包括程序代码,当计算机运行所述计算机程序时,所述程序代码执行如上所述的任一种访问网络文件存储的方法。
本实施例还提供一种电子系统,包括:
计算节点和网络文件存储;
所述计算节点中设置有用于访问所述网络文件存储的第二挂载点;
所述计算节点中运行有多个函数实例,各函数实例中设置有第一挂载点,所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
所述函数实例从实例缓存中获取数据失败时,通过所述第一挂载点访问所述计算节点的节点缓存。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
Claims (13)
1.一种访问网络文件存储的方法,其特征在于,包括:
运行函数实例时,在所述函数实例的实例缓存中获取数据;
若从所述实例缓存中获取数据失败,则根据所述函数实例中的第一挂载点在计算节点的节点缓存中获取数据;所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
若从所述节点缓存中获取数据失败,则根据所述计算节点的第二挂载点从所述网络文件存储获取数据;所述第二挂载点是将所述网络文件存储挂载到所述计算节点上得到的。
2.根据权利要求1所述的方法,其特征在于,所述运行所述函数实例之前,包括:
接收用于创建函数实例的请求,若确定所述函数实例需要访问网络文件存储,则在计算节点中建立用于访问网络文件存储的网络通道,使用所述网络通道挂载网络文件存储目录,得到所述第二挂载点;
启动守护进程得到与所述网络文件存储对应的共享文件存储,并创建函数实例;
在所述函数实例中挂载所述共享文件存储,得到所述第一挂载点。
3.根据权利要求2所述的方法,其特征在于,还包括:
接收用于释放所述函数实例的请求,关闭所述函数实例和所述函数实例的守护进程;
若确定所述计算节点中不存在其他需要访问所述网络文件存储的函数实例,则卸载所述计算节点中的第二挂载点;
若确定所述计算节点与所述网络文件存储之间的所述网络通道没有被使用,则释放所述网络通道。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述函数实例中的第一挂载点在所述计算节点的节点缓存中获取数据,包括:
通过所述第一挂载点调用所述计算节点的所述守护进程,所述守护进程用于调用所述计算节点的系统;
利用所述计算节点的系统在所述节点缓存中获取所述数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述计算节点的第二挂载点从所述网络文件存储获取数据,包括:
生成用于从所述网络文件存储中获取所述数据的访问请求;
对多个所述访问请求进行聚合处理,得到第一聚合请求,并在满足访问条件时通过所述第二挂载点向所述网络文件存储发送所述第一聚合请求,所述第一聚合请求用于指示所述网络文件存储反馈数据;
接收所述网络文件存储发送的所述数据。
6.根据权利要求5所述的方法,其特征在于,所述对多个所述访问请求进行聚合处理,得到第一聚合请求,包括:
对所述访问请求中用于访问同一个文件的多个读请求进行聚合,得到所述第一聚合请求。
7.根据权利要求1-3、6任一项所述的方法,其特征在于,还包括:
若从所述节点缓存中获取所述数据,则将所述数据存储在所述实例缓存中;
若从所述网络文件存储中获取所述数据,则将所述数据存储在所述节点缓存和所述实例缓存中。
8.根据权利要求1-3、6任一项所述的方法,其特征在于,还包括:
接收用于向所述网络文件存储写入数据的写请求;
根据所述写请求在节点缓存中写入待处理数据;
根据各待处理数据生成第二聚合请求,并向所述网络文件存储发送所述第二聚合请求,所述第二聚合请求用于向所述网络文件存储写入所述待处理数据。
9.一种访问网络文件存储的装置,其特征在于,包括:
实例缓存获取单元,用于运行函数实例时,在所述函数实例的实例缓存中获取数据;
节点缓存获取单元,用于若从所述实例缓存中获取数据失败,则根据所述函数实例中的第一挂载点在计算节点的节点缓存中获取数据;所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
网络存储获取单元,用于若从所述节点缓存中获取数据失败,则根据所述计算节点的第二挂载点从所述网络文件存储获取数据;所述第二挂载点是将所述网络文件存储挂载到所述计算节点上得到的。
10.一种电子设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如权利要求1-8任一种所述的方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如权利要求1-8任一种所述的方法。
12.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
13.一种电子系统,其特征在于,包括:计算节点和网络文件存储;
所述计算节点中设置有用于访问所述网络文件存储的第二挂载点;
所述计算节点中运行有多个函数实例,各函数实例中设置有第一挂载点,所述第一挂载点是将所述计算节点中与网络文件存储所对应的共享文件存储挂载到所述函数实例上得到的;
所述函数实例从实例缓存中获取数据失败时,通过所述第一挂载点访问所述计算节点的节点缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210489816.XA CN114900485A (zh) | 2022-05-06 | 2022-05-06 | 访问网络文件存储的方法、电子设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210489816.XA CN114900485A (zh) | 2022-05-06 | 2022-05-06 | 访问网络文件存储的方法、电子设备及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114900485A true CN114900485A (zh) | 2022-08-12 |
Family
ID=82719001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210489816.XA Pending CN114900485A (zh) | 2022-05-06 | 2022-05-06 | 访问网络文件存储的方法、电子设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114900485A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090240783A1 (en) * | 2008-03-19 | 2009-09-24 | Oracle International Corporation | Direct network file system |
US20100250508A1 (en) * | 2009-03-31 | 2010-09-30 | Commvault Systems, Inc. | Systems and methods for data migration in a clustered file system |
CN102609280A (zh) * | 2012-01-17 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种网络部署操作系统的方法及装置 |
WO2015151113A1 (en) * | 2014-04-02 | 2015-10-08 | Hewlett-Packard Development Company, L.P. | Direct access to network file system exported share |
CN110149375A (zh) * | 2019-04-30 | 2019-08-20 | 广州微算互联信息技术有限公司 | 网络存储云手机间的数据共享方法、系统及存储介质 |
CN111124277A (zh) * | 2019-11-21 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种深度学习数据集缓存方法、系统、终端及存储介质 |
CN111158851A (zh) * | 2019-12-10 | 2020-05-15 | 航天物联网技术有限公司 | 一种虚拟机快速部署方法 |
CN112532763A (zh) * | 2020-11-26 | 2021-03-19 | 新华三大数据技术有限公司 | 一种容器运行数据同步方法及装置 |
CN112887384A (zh) * | 2021-01-19 | 2021-06-01 | 青岛越超传媒有限公司 | 一种基于云计算的数据存储传输媒介及稳定传输方法 |
CN113127430A (zh) * | 2019-12-30 | 2021-07-16 | 北京懿医云科技有限公司 | 镜像信息处理方法、装置、计算机可读介质及电子设备 |
CN214202379U (zh) * | 2020-11-20 | 2021-09-14 | 网宿科技股份有限公司 | 一种分布式共享文件系统 |
-
2022
- 2022-05-06 CN CN202210489816.XA patent/CN114900485A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090240783A1 (en) * | 2008-03-19 | 2009-09-24 | Oracle International Corporation | Direct network file system |
US20100250508A1 (en) * | 2009-03-31 | 2010-09-30 | Commvault Systems, Inc. | Systems and methods for data migration in a clustered file system |
CN102609280A (zh) * | 2012-01-17 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种网络部署操作系统的方法及装置 |
WO2015151113A1 (en) * | 2014-04-02 | 2015-10-08 | Hewlett-Packard Development Company, L.P. | Direct access to network file system exported share |
CN110149375A (zh) * | 2019-04-30 | 2019-08-20 | 广州微算互联信息技术有限公司 | 网络存储云手机间的数据共享方法、系统及存储介质 |
CN111124277A (zh) * | 2019-11-21 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种深度学习数据集缓存方法、系统、终端及存储介质 |
CN111158851A (zh) * | 2019-12-10 | 2020-05-15 | 航天物联网技术有限公司 | 一种虚拟机快速部署方法 |
CN113127430A (zh) * | 2019-12-30 | 2021-07-16 | 北京懿医云科技有限公司 | 镜像信息处理方法、装置、计算机可读介质及电子设备 |
CN214202379U (zh) * | 2020-11-20 | 2021-09-14 | 网宿科技股份有限公司 | 一种分布式共享文件系统 |
CN112532763A (zh) * | 2020-11-26 | 2021-03-19 | 新华三大数据技术有限公司 | 一种容器运行数据同步方法及装置 |
CN112887384A (zh) * | 2021-01-19 | 2021-06-01 | 青岛越超传媒有限公司 | 一种基于云计算的数据存储传输媒介及稳定传输方法 |
Non-Patent Citations (5)
Title |
---|
FENGBINGCHUN: "Docker容器中挂载NFS共享目录", Retrieved from the Internet <URL:https://blog.csdn.net/fengbingchun/article/details/111030162> * |
任永坚 等: "云计算系统中的块级别网络磁盘缓存技术研究", 《小型微型计算机系统》 * |
张晨: "基于容器访问模式的Docker缓存策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 March 2021 (2021-03-15) * |
徐政钧: "无服务器云计算平台中函数启动加速器的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
毛发苍苍: "vue生命周期mounted和activated使用、踩坑", Retrieved from the Internet <URL:blog.csdn.net/weixin_45629623/article/details/107542066> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200104378A1 (en) | Mapreduce implementation in an on-demand network code execution system and stream data processing system | |
US7979509B1 (en) | Clustered network acceleration devices having shared cache | |
US7676554B1 (en) | Network acceleration device having persistent in-memory cache | |
US8078574B1 (en) | Network acceleration device cache supporting multiple historical versions of content | |
CN113010818B (zh) | 访问限流方法、装置、电子设备及存储介质 | |
CN111459418B (zh) | 一种基于rdma的键值存储系统传输方法 | |
US20170153909A1 (en) | Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine | |
WO2021139264A1 (zh) | 对象存储控制方法、装置、计算机设备及存储介质 | |
CN110865989A (zh) | 一种大规模计算集群的业务处理方法 | |
CN114201421A (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
CN114371811A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
GB2503477A (en) | Managing persistent messages between a message producer and a remote message consumer using references pointing to messages | |
WO2017032152A1 (zh) | 将数据写入存储设备的方法及存储设备 | |
JP2013218505A (ja) | クライアントとサーバ間の通信を中継する通信装置及び通信システム | |
US7213245B2 (en) | Software on demand system | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN115242813A (zh) | 一种文件访问方法、网卡以及计算设备 | |
US20230281141A1 (en) | Method for order-preserving execution of write request and network device | |
CN109240995B (zh) | 一种操作字时延的统计方法和装置 | |
US7827194B2 (en) | Access to shared disk device on storage area network | |
CN114900485A (zh) | 访问网络文件存储的方法、电子设备及系统 | |
CN111221642A (zh) | 一种数据处理方法、装置、存储介质及终端 | |
CN115686663A (zh) | 在线文件预览方法、装置及计算机设备 | |
CN117642724A (zh) | 使用无服务器计算系统的流式分析 | |
CN114089912A (zh) | 基于消息中间件的数据处理方法及装置、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |