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

分布式文件系统元数据缓存方法、装置、终端及存储介质与流程

2021-11-24 21:13:00 来源:中国专利 TAG:


1.本发明涉及分布式文件系统元数据缓存领域,具体涉及一种分布式文件系统元数据缓存方法、装置、终端及存储介质。


背景技术:

2.大数据时代非结构化的数据成爆炸式快速的增长,海量数据以文件格式保存、管理、使用,造成文件数量很庞大。元数据是描述数据的数据,指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等。
3.对于分布式文件系统(对象存储)小文件场景,提升元数据缓存的利用率,能够减少客户端与元数据服务器的通信次数、与底层磁盘的io次数,从而降低网络压力、减少磁盘压力。实际场景中,由于用户的检索操作,例如目录索引,会造成大量的无用元数据缓存占用,使得元数据缓存的命中率非常低;另一方面在小文件高性能读写场景,由于对业务性能要求比较高,往往需要全缓存单位时间内的全部元数据缓存,这样也包含由于检索操作创建的无用元数据缓存,从而造成存储系统内存占用非常高。


技术实现要素:

4.为解决上述问题,本发明提供一种分布式文件系统元数据缓存方法、装置、终端及存储介质,设计三级缓存机制,进行挑选缓存,将将要被使用的元数据放置在一二级缓存队列,使用率低的元数据放置在三级缓存队列,淘汰时从三级缓存队列的缓存时间最久的元数据进行淘汰,保证元数据的命中率,减少内存占用。
5.第一方面,本发明的技术方案提供一种分布式文件系统元数据缓存方法,包括以下步骤:配置三级缓存;当有新的元数据缓存时,将该新的元数据插入一级缓存队列;当一级缓存队列内的缓存量大于其缓存量阈值时,取出一级缓存队列内缓存时间最久的元数据直到一级缓存队列内的缓存量小于其缓存量阈值,取出的元数据作为待移动元数据;待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列;当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值;当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
6.进一步地,待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列,具体包括:判断待移动元数据对应的文件是否被读写使用过或单独检索过;
若是,则将待移动元数据移动到二级缓存队列;否则移动到三级缓存队列。
7.进一步地,当有新的元数据缓存时,将该新的元数据插入一级缓存队列,具体包括:当有新的元数据缓存时,将该新的元数据插入一级缓存队列头部。
8.进一步地,当有新的元数据缓存时,将该新的元数据插入一级缓存队列,具体还包括:当有新的元数据缓存时,判断该新的元数据是否已缓存在一级缓存队列、二级缓存队列或三级缓存队列内;若是,则将已缓存的元数据取出插入到一级缓存队列头部。
9.进一步地,当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值,具体为:当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内尾部的元数据移动到三级缓存队列头部直到二级缓存队列的缓存量小于其缓存量阈值;当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值,具体为:当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内尾部元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
10.进一步地,该方法还包括根据以下公式计算各级缓存队列的缓存量阈值:k=k1 k2;n=k1 k3;m=k1*g1 (k1 k2)*g2;其中,k为分布式文件系统节点单位时间内最大文件读写访问量,n为场景中单目录最大文件量,m为分布式文件系统节点内存量,g1为一级缓存队列大小,g2为二级缓存队列大小,k1为一级缓存队列缓存量阈值,k2为二级缓存队列缓存量阈值,k3为三级缓存队列缓存量阈值。
11.第二方面,本发明的技术方案提供一种分布式文件系统元数据缓存装置,包括,缓存配置模块:配置三级缓存;新元数据插入模块:当有新的元数据缓存时,将该新的元数据插入一级缓存队列;一级缓存队列淘汰模块:当一级缓存队列内的缓存量大于其缓存量阈值时,取出一级缓存队列内缓存时间最久的元数据直到一级缓存队列内的缓存量小于其缓存量阈值,取出的元数据作为待移动元数据;待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列;二级缓存队列淘汰模块:当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值;三级缓存队列淘汰模块:当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
12.进一步地,该包括缓存量阈值配置模块;
所述缓存量阈值配置模块根据以下公式计算各级缓存队列的缓存量阈值:k=k1 k2;n=k1 k3;m=k1*g1 (k1 k2)*g2;其中,k为分布式文件系统节点单位时间内最大文件读写访问量,n为场景中单目录最大文件量,m为分布式文件系统节点内存量,g1为一级缓存队列大小,g2为二级缓存队列大小,k1为一级缓存队列缓存量阈值,k2为二级缓存队列缓存量阈值,k3为三级缓存队列缓存量阈值。
13.第三方面,本发明的技术方案提供一种终端,包括:处理器;用于存储处理器的执行指令的存储器;其中,所述处理器被配置为执行上述任一项所述的方法。
14.第四方面,本发明的技术方案提供一种存储有计算机程序的计算机可读存储介质,该程序被处理器执行时实现如上述任一项所述的方法。
15.本发明提供的一种分布式文件系统元数据缓存方法、装置、终端及存储介质,相对于现有技术,具有以下有益效果:设计三级缓存机制,进行挑选缓存,将将要被使用的元数据放置在一、二级缓存队列,使用率低的元数据放置在三级缓存队列,淘汰时从三级缓存队列的缓存时间最久的元数据进行淘汰,从而保留将要被使用的元数据,保证元数据的命中率,减少内存占用,缩短元数据访问io路径,降低网络通信压力,磁盘访问io压力,并设置合理的缓存量阈值,在内存可控的基础上有效实现元数据缓存性能的最优化。
附图说明
16.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例一提供的一种分布式文件系统元数据缓存方法流程示意图;图2为本发明实施例二提供的一种分布式文件系统元数据缓存装置结构示意框图;图3为本发明实施例三提供的一种终端的结构示意图。
具体实施方式
18.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
19.实施例一对于分布式文件系统(对象存储)小文件场景,提升元数据缓存的利用率,能够减少客户端与元数据服务器的通信次数、与底层磁盘的io次数,从而降低网络压力、减少磁盘
压力。实际场景中,由于用户的检索操作,例如目录索引,会造成大量的无用元数据缓存占用,使得元数据缓存的命中率非常低;另一方面在小文件高性能读写场景,由于对业务性能要求比较高,往往需要全缓存单位时间内的全部元数据缓存,这样也包含由于检索操作创建的无用元数据缓存,从而造成存储系统内存占用非常高。
20.因此,本实施例一提供一种分布式文件系统元数据缓存方法,设计三级缓存机制,进行挑选缓存,将将要被使用的元数据放置在一二级缓存队列,使用率低的元数据放置在三级缓存队列,淘汰时从三级缓存队列的缓存时间最久的元数据进行淘汰,保证元数据的命中率,减少内存占用。
21.如图1所示为本实施例一提供的一种分布式文件系统元数据缓存方法流程示意图,包括以下步骤。
22.s1,配置三级缓存。
23.即设置三级缓存机制,配置一级缓存队列、二级缓存队列和三级缓存队列。
24.s2,当有新的元数据缓存时,将该新的元数据插入一级缓存队列。
25.即将最新的元数据缓存到一级缓存队列,在三级缓存机制中,一级缓存队列所存储的元数据为已缓存时间较短的元数据。
26.s3,当一级缓存队列内的缓存量大于其缓存量阈值时,取出一级缓存队列内缓存时间最久的元数据直到一级缓存队列内的缓存量小于其缓存量阈值,取出的元数据作为待移动元数据。
27.即将一级缓存队列内的元数据按缓存时间(指从插入一级缓存队列开始计算,已经被缓存的时间)从长到短进行排序,从缓存时间最长的开始,取出超出缓存量阈值的那部分元数据,使一级缓存队列内的缓存量小于其缓存量阈值。
28.s4,待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列。
29.一级缓存队列中元数据超出阈值时,将超出的一部分向二、三级缓存队列进行淘汰。为提高元数据使用命中率,提高缓存性能,配合三级缓存队列的淘汰机制,本实施例在向二、三级缓存队列淘汰时先检测元数据是否将要被服务器读取,将要被读取的放到二级缓存队列,其他的放到三级缓存队列。
30.s5,当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值。
31.s6,当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
32.从二级缓存队列向三级缓存队列淘汰时,以及三级缓存队列对元数据进行淘汰时,均是按缓存时间从长到短进行淘汰,避免影响元数据的使用命中率。
33.本方法进行挑选缓存,在缓存条目一定的前提下保障缓存的都是将要被使用的,提高缓存利用率,可有效减低内存占用。例如10万文件量的基础上对5万文件进行读写,本方法5万的内存量就能实现读写过程中元数据全缓存,而现有流程要保障元数据命中率需要10万的内存量才能实现。
34.本实施例提供的一种分布式文件系统元数据缓存方法,设计三级缓存机制,进行挑选缓存,将将要被使用的元数据放置在一二级缓存队列,使用率低的元数据放置在三级
缓存队列,淘汰时从三级缓存队列的缓存时间最久的元数据进行淘汰,从而保留将要被使用的元数据,保证元数据的命中率,减少内存占用,缩短元数据访问io路径,降低网络通信压力,磁盘访问io压力,并设置合理的缓存量阈值,在内存可控的基础上有效实现元数据缓存性能的最优化。
35.在一些具体实施例中,判断元数据是否将要被读取可通过判断元数据对应的文件是否被读写使用过或单独检索过实现,如果对应文件被读写使用过或单独索引过则说明元数据将要被读取。具体地,在步骤s4待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列,具体包括:步骤一,判断待移动元数据对应的文件是否被读写使用过或单独检索过;步骤二,若是,则将待移动元数据移动到二级缓存队列;否则移动到三级缓存队列。
36.需要说明的是,若对应的文件被读写使用过或单独检索过,在元数据中有相应标识,检测标识状态判断对应文件是否被读写使用过或单独检索过。
37.本实施例中根据缓存时间长度进行淘汰,为便于元数据淘汰,在一些具体实施例中,进入缓存队列的数据插入队列头部,淘汰时再从尾部开始淘汰。
38.具体地,步骤s2当有新的元数据缓存时,将该新的元数据插入一级缓存队列,具体为:当有新的元数据缓存时,将该新的元数据插入一级缓存队列头部。
39.相应地,步骤s4待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列,具体为:待移动元数据中将要被读取的元数据插入到二级缓存队列头部,其他元数据插入到三级缓存队列。
40.在步骤s5中当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值,具体是将二级缓存队列内尾部的元数据移动到三级缓存队列头部直到二级缓存队列的缓存量小于其缓存量阈值。
41.在步骤s6中当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值,具体是将三级缓存队列内尾部元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
42.在一些具体实施例中,将要被缓存的元数据可能已存储在缓存队列中,因此在步骤s2中当有新的元数据缓存时,首先判断是否已缓存的对应的元数据,若有则将其提取到一级缓存队列头部,否则直接插入一级缓存队列头部。具体包括以下步骤:步骤一,当有新的元数据缓存时,判断该新的元数据是否已缓存在一级缓存队列、二级缓存队列或三级缓存队列内;步骤二,若是,则将已缓存的元数据取出插入到一级缓存队列头部。
43.为提高元数据缓存利用率,本实施例对各个缓存队列的缓存量阈值根据节点文件读写访问量和节点内存量进行配置。
44.首先,根据实际业务分析统计分布式文件系统节点单位时间内最大文件读写访问量k(单位为个,即访问的条目个数)。
45.为了实现性能最优设置一级缓存队列缓存量阈值k1和二级缓存队列缓存量阈值k2(单位为个)满足:k=k1 k2。
46.三级缓存队列为越界缓冲层,根据节点内存情况合理安排。三级缓存队列利用率很低,正常不用设置太大,但应满足:n=k1 k3;否则,目录检索的有效元数据可能立马丢失,需要重新加载造成io浪费。其中,n为场景中单目录最大文件量。
47.根据分布式文件系统节点的内存量m(单位为kb)限制,各个缓存队列的缓存量阈值满足:m=k1*g1 (k1 k2)*g2;其中g1为一级缓存队列大小,g2为二级缓存队列大小(单位为kb)。
48.整理方程组:k=k1 k2;n=k1 k3;m=k1*g1 (k1 k2)*g2。
49.其中k、n、m、g1和g2均为定量,可计算得到k1、k2和k3,即各个缓存队列的缓存量阈值。
50.实施例二本实施例提供一种分布式文件系统元数据缓存装置,用于实现前述的分布式文件系统元数据缓存方法。
51.如图2所示为本实施例二提供的一种分布式文件系统元数据缓存装置结构示意框图,包括以下功能模块。
52.缓存配置模块101:配置三级缓存。
53.新元数据插入模块102:当有新的元数据缓存时,将该新的元数据插入一级缓存队列。
54.一级缓存队列淘汰模块103:当一级缓存队列内的缓存量大于其缓存量阈值时,取出一级缓存队列内缓存时间最久的元数据直到一级缓存队列内的缓存量小于其缓存量阈值,取出的元数据作为待移动元数据;待移动元数据中将要被读取的元数据移动到二级缓存队列,其他元数据移动到三级缓存队列。
55.二级缓存队列淘汰模块104:当二级缓存队列内的缓存量大于其缓存量阈值时,将二级缓存队列内缓存时间最久的元数据移动到三级缓存队列直到二级缓存队列的缓存量小于其缓存量阈值。
56.三级缓存队列淘汰模块105:当三级缓存队列内的缓存量大于其缓存量阈值时,将三级缓存队列内缓存时间最久的元数据淘汰直到三级缓存队列的缓存量小于其缓存量阈值。
57.在一些具体实施例中,为提高元数据缓存利用率,本实施例对各个缓存队列的缓存量阈值根据节点文件读写访问量和节点内存量进行配置,具体地该装置还包括缓存量阈值配置模块106。
58.缓存量阈值配置模块106根据以下公式计算各级缓存队列的缓存量阈值:k=k1 k2;n=k1 k3;m=k1*g1 (k1 k2)*g2;其中,k为分布式文件系统节点单位时间内最大文件读写访问量,n为场景中单目录最大文件量,m为分布式文件系统节点内存量,g1为一级缓存队列大小,g2为二级缓存队列大小,k1为一级缓存队列缓存量阈值,k2为二级缓存队列缓存量阈值,k3为三级缓存队列缓存量阈值。
59.本实施例的分布式文件系统元数据缓存装置用于实现前述的分布式文件系统元数据缓存方法,因此该装置中的具体实施方式可见前文中的分布式文件系统元数据缓存方法的实施例部分,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
60.另外,由于本实施例的分布式文件系统元数据缓存装置用于实现前述的分布式文件系统元数据缓存方法,因此其作用与上述方法的作用相对应,这里不再赘述。
61.实施例三图3为本发明实施例提供的一种终端装置300的结构示意图,该终端装置300可以用于执行本发明实施例提供的分布式文件系统元数据缓存方法。
62.其中,该终端装置300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
63.其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。
64.处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integrated circuit,简称ic) 组成,例如可以由单颗封装的ic 所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(central processing unit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
65.通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
66.实施例四本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read

only memory,简称:rom)或随机存储记忆体(英文:
random access memory,简称:ram)等。
67.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
68.本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
69.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
70.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
71.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
72.以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
再多了解一些

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

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

相关文献