本发明涉及数据读取技术领域,更具体地说,涉及一种元数据读取方法、装置、设备及可读存储介质。
背景技术
在分布式文件系统中,数据文件的访问遵循局部性原理。即:如果一个文件正在被访问,那么它在近期很可能会被再次访问或者将来要访问的文件的地址与当前被访问文件的地址在空间上是相邻的,即遵循空间局部性。一般地,如果一个文件被访问的比较频繁,那它周围的文件或者目录也会经常被访问。对于元数据,也同样存在着空间局部性原理,所以为了减少元数据访问的延时,可以根据历史访问记录预读元数据至客户端缓存,以提高元数据的读取速率。
目前,现有技术一般通过预读当前访问目录的关联部分来提高元数据的读取速率。但是,由于文件系统中元数据的目录容量一般比较大,如果直接以访问频率高的元数据所在的父目录作为预读的对象,可能会由于要预读的数据量较大,而影响文件系统的业务处理性能,也会导致预读到的元数据中的大部分元数据都是无用的元数据,真正有用的元数据仅占其中的一小部分;并且,客户端缓存的容量有限,无法存储较多的数据。因此现有技术的预读方式不仅会影响文件系统的性能,而且其读取的效率和准确性也有待提高。
因此,如何提高元数据的读取效率和准确性,是本领域技术人员需要解决的问题。
技术实现要素:
本发明的目的在于提供一种元数据读取方法、装置、设备及可读存储介质,以提高元数据的读取效率和准确性。
为实现上述目的,本发明实施例提供了如下技术方案:
一种元数据读取方法,包括:
接收目标客户端发送的元数据读取请求;
判断所述请求对应的元数据目录项是否符合预读取规则;
若是,则确定所述请求对应的元数据目录项所在的目录分片,并将所述目录分片包括的多个元数据目录项缓存至所述目标客户端;
其中,所述目录分片依据元数据目录项的访问热度划分而得。
其中,所述判断所述请求对应的元数据目录项是否符合预读取规则,包括:
判断所述请求对应的元数据目录项是否被划分至所述目录分片。
其中,所述确定所述请求对应的元数据目录项所在的目录分片,包括:
根据所述请求对应的元数据目录项所属的访问热度值,确定所述请求对应的元数据目录项所在的目录分片。
其中,所述元数据目录项与所述目标分片的对应关系由所述元数据目录名通过hash计算映射而得。
其中,所述接收目标客户端发送的元数据读取请求之后,还包括:
判断所述请求对应的元数据目录项是否存在;
若是,则查找所述请求对应的元数据目录项的时间戳队列,并在所述时间戳队列中添加时间访问点;
若否,则创建所述请求对应的元数据目录项,并为所述请求对应的元数据目录项添加时间戳队列。
其中,所述创建所述请求对应的元数据目录项,包括:
当需要新建元数据目录项或者需要从元数据服务器中读取元数据目录项时,创建所述请求对应的元数据目录项。
一种元数据读取装置,包括:
接收模块,用于接收目标客户端发送的元数据读取请求;
判断模块,用于判断所述请求对应的元数据目录项是否符合预读取规则;
执行模块,用于当所述请求对应的元数据目录项符合预读取规则时,确定所述请求对应的元数据目录项所在的目录分片,并将所述目录分片包括的多个元数据目录项缓存至所述目标客户端;
其中,所述目录分片依据元数据目录项的访问热度划分而得。
其中,所述判断模块具体用于:
判断所述请求对应的元数据目录项是否被划分至所述目录分片。
一种元数据读取设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任意一项所述的元数据读取方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的元数据读取方法的步骤。
通过以上方案可知,本发明实施例提供的一种元数据读取方法,包括:接收目标客户端发送的元数据读取请求;判断所述请求对应的元数据目录项是否符合预读取规则;若是,则确定所述请求对应的元数据目录项所在的目录分片,并将所述目录分片包括的多个元数据目录项缓存至所述目标客户端;其中,所述目录分片依据元数据目录项的访问热度划分而得。
可见,所述方法在接收到目标客户端发送的元数据的读取请求时,首先判断该请求对应的元数据目录项是否符合预读取规则,当该请求对应的元数据目录项符合预读取规则,表明该请求对应的元数据目录项所在的目录分片包括的其他元数据目录项也符合预读取规则。因为目录分片依据元数据目录项的访问热度划分而得,所以一个目录分片包括的多个元数据目录项的访问热度是类似或相同的。
因此,在确定该请求对应的元数据目录项符合预读取规则时,可以将该请求对应的元数据目录项所在的目录分片下的所有元数据目录项缓存至目标客户端,其中定然包括该请求对应的元数据目录项。如此目标客户端便读取到了该请求对应的元数据目录项,以及与该元数据目录项有关联的其他元数据目录项,从而在元数据的正常读取过程中,预读取到了与之相关的其他元数据,因此提高了元数据的读取效率;并且,以目录分片关联访问热度类似或相同的元数据目录项,提高了元数据预读取的准确性,从而可提升文件系统性能。
相应地,本发明实施例提供的一种元数据读取装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种元数据读取方法流程图;
图2为本发明实施例公开的另一种元数据读取方法流程图;
图3为本发明实施例公开的一种元数据读取装置示意图;
图4为本发明实施例公开的一种元数据读取设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种元数据读取方法、装置、设备及可读存储介质,以提高元数据的读取效率和准确性。
参见图1,本发明实施例提供的一种元数据读取方法,包括:
s101、接收目标客户端发送的元数据读取请求,并执行s102;
s102、判断请求对应的元数据目录项是否符合预读取规则;若是,则执行s103;若否,则执行s104;
s103、确定请求对应的元数据目录项所在的目录分片,并将目录分片包括的多个元数据目录项缓存至目标客户端;
其中,目录分片依据元数据目录项的访问热度划分而得。
具体的,本实施例以目录分片将元数据目录项进行关联。其中,同一目录分片下的元数据目录项具有相同或类似的访问热度。需要说明的是,目录分片是用于在负载不均衡时进行子树迁移的基本单元,目录分片的原理是通过对一个目录下的各个目录项进行负载热度统计,并根据统计热度值把一个目录在逻辑上分为几个目录,使用这些逻辑目录来管理原来目录下所有目录项。其中,每个目录分片下的元数据目录项的数量可根据实际情况进行灵活调整,故本发明在此不作具体限定。
其中,所述将目录分片包括的多个元数据目录项缓存至目标客户端,即为元数据的预读取。预读取是根据客户端对于元数据的访问记录,统计出访问频率较高的元数据,并提前缓存一些与当前访问的元数据相关的、且将来可能被访问到的元数据,此时遵循元数据的空间局部性。
需要说明的是,若在分布式文件系统中,无论是客户端缓存还是元数据服务器缓存,其缓存管理的都是元数据目录项,元数据目录项处于目录和索引节点之间,其中存储的是元数据信息,所以通过元数据目录项可以很方便的找到元数据信息,因此可以通过元数据目录项预读取元数据信息。
基于此,可首先对元数据目录项进行统计,并根据元数据目录项的统计结果,划分对应的目录分片。当接收到元数据的读取请求时,首先判断该请求对应的元数据目录项是否符合预读取规则,若是,则确定满足预读取规则的元数据目录项,进而找到满足预读取规则的元数据目录项所在的目录分片,再把该目录分片下的所有元数据目录项预取到客户端的缓存中。
s104、将请求对应的元数据目录项缓存至目标客户端。
可见,本实施例提供了一种元数据读取方法,所述方法在接收到目标客户端发送的元数据的读取请求时,首先判断该请求对应的元数据目录项是否符合预读取规则,当该请求对应的元数据目录项符合预读取规则,表明该请求对应的元数据目录项所在的目录分片包括的其他元数据目录项也符合预读取规则。因为目录分片依据元数据目录项的访问热度划分而得,所以一个目录分片包括的多个元数据目录项的访问热度是类似或相同的。
因此,在确定该请求对应的元数据目录项符合预读取规则时,可以将该请求对应的元数据目录项所在的目录分片下的所有元数据目录项缓存至目标客户端,其中定然包括该请求对应的元数据目录项。如此目标客户端便读取到了该请求对应的元数据目录项,以及与该元数据目录项有关联的其他元数据目录项,从而在元数据的正常读取过程中,预读取到了与之相关的其他元数据,因此提高了元数据的读取效率;并且,以目录分片关联访问热度类似或相同的元数据目录项,提高了元数据预读取的准确性,从而可提升文件系统性能。
本发明实施例公开了另一种元数据读取方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
参见图2,本发明实施例提供的另一种元数据读取方法,包括:
s201、接收目标客户端发送的元数据读取请求,并执行s202;
s202、判断请求对应的元数据目录项是否被划分至目录分片;若是,则执行s203;若否,则执行s204;
在本实施例中,预读取规则以元数据目录项有无被划分目录分片为判断依据。当接收到的请求对应的元数据目录项未被划分至目录分片,即表明该请求对应的元数据目录项没有关联其他的元数据目录项;当接收到的请求对应的元数据目录项被划分至目录分片,即表明该请求对应的元数据目录项关联了其他的元数据目录项。
s203、确定请求对应的元数据目录项所在的目录分片,并将目录分片包括的多个元数据目录项缓存至目标客户端;
其中,目录分片依据元数据目录项的访问热度划分而得。
s204、将请求对应的元数据目录项缓存至目标客户端。
可见,本实施例提供了另一种元数据读取方法,所述方法在接收到目标客户端发送的元数据的读取请求时,首先判断该请求对应的元数据目录项是否符合预读取规则,当该请求对应的元数据目录项符合预读取规则,表明该请求对应的元数据目录项所在的目录分片包括的其他元数据目录项也符合预读取规则。因为目录分片依据元数据目录项的访问热度划分而得,所以一个目录分片包括的多个元数据目录项的访问热度是类似或相同的。
因此,在确定该请求对应的元数据目录项符合预读取规则时,可以将该请求对应的元数据目录项所在的目录分片下的所有元数据目录项缓存至目标客户端,其中定然包括该请求对应的元数据目录项。如此目标客户端便读取到了该请求对应的元数据目录项,以及与该元数据目录项有关联的其他元数据目录项,从而在元数据的正常读取过程中,预读取到了与之相关的其他元数据,因此提高了元数据的读取效率;并且,以目录分片关联访问热度类似或相同的元数据目录项,提高了元数据预读取的准确性,从而可提升文件系统性能。
基于上述任意实施例,需要说明的是,所述确定所述请求对应的元数据目录项所在的目录分片,包括:
根据所述请求对应的元数据目录项所属的访问热度值,确定所述请求对应的元数据目录项所在的目录分片。
其中,所述元数据目录项与所述目标分片的对应关系由所述元数据目录名通过hash计算映射而得。
基于上述任意实施例,需要说明的是,所述接收目标客户端发送的元数据读取请求之后,还包括:
判断所述请求对应的元数据目录项是否存在;
若是,则查找所述请求对应的元数据目录项的时间戳队列,并在所述时间戳队列中添加时间访问点;
若否,则创建所述请求对应的元数据目录项,并为所述请求对应的元数据目录项添加时间戳队列。
其中,所述创建所述请求对应的元数据目录项,包括:
当需要新建元数据目录项或者需要从元数据服务器中读取元数据目录项时,创建所述请求对应的元数据目录项。
具体的,当接收到的请求对应的元数据目录项不存在时,可创建所述请求对应的元数据目录项,并为所述请求对应的元数据目录项添加时间戳队列,以便将来再次收到该请求时,在其对应的元数据目录项中添加时间访问点。其中,若接收到元数据目录项的创建请求时,直接创建元数据目录项;当在缓存未命中元数据目录项时,也创建元数据目录项。
下面对本发明实施例提供的一种元数据读取装置进行介绍,下文描述的一种元数据读取装置与上文描述的一种元数据读取方法可以相互参照。
参见图3,本发明实施例提供的一种元数据读取装置,包括:
接收模块301,用于接收目标客户端发送的元数据读取请求;
判断模块302,用于判断所述请求对应的元数据目录项是否符合预读取规则;
执行模块303,用于当所述请求对应的元数据目录项符合预读取规则时,确定所述请求对应的元数据目录项所在的目录分片,并将所述目录分片包括的多个元数据目录项缓存至所述目标客户端;
其中,所述目录分片依据元数据目录项的访问热度划分而得。
其中,所述判断模块具体用于:
判断所述请求对应的元数据目录项是否被划分至所述目录分片。
其中,所述执行模块具体用于:
根据所述请求对应的元数据目录项所属的访问热度值,确定所述请求对应的元数据目录项所在的目录分片。
其中,还包括:
映射模块,用于通过hash计算映射所述元数据目录项与所述目标分片的对应关系。
其中,还包括:创建模块,所述创建模块包括:
判断单元,用于判断所述请求对应的元数据目录项是否存在;
添加单元,用于查找所述请求对应的元数据目录项的时间戳队列,并在所述时间戳队列中添加时间访问点;
创建单元,用于创建所述请求对应的元数据目录项,并为所述请求对应的元数据目录项添加时间戳队列。
其中,所述创建单元具体用于:
当需要新建元数据目录项或者需要从元数据服务器中读取元数据目录项时,创建所述请求对应的元数据目录项。
下面对本发明实施例提供的一种元数据读取设备进行介绍,下文描述的一种元数据读取设备与上文描述的一种元数据读取方法及装置可以相互参照。
参见图4,本发明实施例提供的一种元数据读取设备,包括:
存储器401,用于存储计算机程序;
处理器402,用于执行所述计算机程序时实现上述任意实施例所述的元数据读取方法的步骤。
下面对本发明实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种元数据读取方法、装置及设备可以相互参照。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的元数据读取方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。