一种读取数据的方法、装置和计算机可读存储介质与流程

文档序号:16209235发布日期:2018-12-08 07:31阅读:116来源:国知局
一种读取数据的方法、装置和计算机可读存储介质与流程

本发明涉及分布式文件系统技术领域,特别是涉及一种读取数据的方法、装置和计算机可读存储介质。

背景技术

分布式文件系统在分布式存储中应用广泛,而其性能决定了对应的分布式产品在高性能场景的竞争力。而现有的分布式文件系统的读写性能相对较低,尤其是读性能。

在分布式文件系统中,读操作分为两个过程:一个是预读,一个是实读。实读是指读取应用程序真实请求的数据。预读是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在内存中,这样下一次读请求到来时直接从缓存中读取即可。数据以页的形式存储,对于同一目录下的数据,假设当前实读请求需要读取第1-5页的数据,那下一次实读请求读取第5页之后的数据的可能性非常高,为了提升读取效率,可以将第5页之后的一部分数据进行预读,例如可以将第6页至第100页的数据预先读取到缓存中。

在具体实现中,应用程序发起读请求,当该读请求满足设定的预读条件时,文件系统的前端线程会执行一系列的预读量计算、内存申请、标记置位、内存管理等读取预读数据前的准备工作,可以将这些准备工作看作是预读操作中的一部分操作。当这些准备工作完成后,前端线程才可以进行实读,并同时利用一个异步进程读取相应的预读数据。虽然读取预读数据的过程和执行实读操作的过程属于异步操作,但是在执行实读之前,前端线程需要执行一系列的计算处理等准备工作,而该准备工作花费的时间较长,从而导致分布式文件系统的读性能较低。

可见,如何提升数据的读性能,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种读取数据的方法、装置和计算机可读存储介质,可以提升数据的读性能。

为解决上述技术问题,本发明实施例提供一种读取数据的方法,包括:

获取读请求;

判断所述读请求是否满足预先设定的预读条件;

若是,则将与所述读请求相对应的预读请求放入预先设定的异步线程以处理所述预读请求所对应的预读操作,同时执行所述读请求所对应的实读操作;其中所述预读操作读取的数据是与所述实读操作读取的数据相邻的后续数据。

可选的,所述执行所述读请求所对应的实读操作包括:

判断缓存中是否存在与所述读请求相对应的目标数据;

若是,则从所述缓存中读取所述目标数据;

若否,则依据所述读请求中携带的存储位置信息,从相应的磁盘中获取所述目标数据。

可选的,所述异步线程处理所述预读请求所对应的预读操作包括:

所述异步线程依据所述预读请求中携带的存储位置信息,从相应的磁盘中获取预读数据,并将所述预读数据存储于所述缓存中。

可选的,在所述将所述预读数据存储于所述缓存中之后还包括:

对所述预读数据设置有效时间;

当所述预读数据在所述缓存中的存储时间达到所述有效时间时,则将所述预读数据从所述缓存中删除。

本发明实施例还提供了一种读取数据的装置,包括获取单元、判断单元和执行单元;

所述获取单元,用于获取读请求;

所述判断单元,用于判断所述读请求是否满足预先设定的预读条件;若是,则触发所述执行单元;

所述执行单元,用于将与所述读请求相对应的预读请求放入预先设定的异步线程以处理所述预读请求所对应的预读操作,同时执行所述读请求所对应的实读操作;其中所述预读操作读取的数据是与所述实读操作读取的数据相邻的后续数据。

可选的,所述执行单元包括判断子单元、读取子单元和处理子单元;

所述判断子单元,用于判断缓存中是否存在与所述读请求相对应的目标数据;若是,则触发所述读取子单元;若否,则触发所述处理子单元;

所述读取子单元,用于从所述缓存中读取所述目标数据;

所述处理子单元,用于依据所述读请求中携带的存储位置信息,从相应的磁盘中获取所述目标数据。

可选的,针对于所述异步线程处理所述预读请求所对应的预读操作,所述装置还包括预读取单元;

所述预读取单元,用于依据所述预读请求中携带的存储位置信息,从相应的磁盘中获取预读数据,并将所述预读数据存储于所述缓存中。

可选的,还包括设置单元和删除单元;

所述设置单元,用于对所述预读数据设置有效时间;

所述删除单元,用于当所述预读数据在所述缓存中的存储时间达到所述有效时间时,则将所述预读数据从所述缓存中删除。

本发明实施例还提供了一种读取数据的装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述读取数据的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述读取数据的方法的步骤。

由上述技术方案可以看出,文件系统的前端线程获取读请求;判断读请求是否满足预先设定的预读条件;当读请求满足预先设定的预读条件时,则可以将与该读请求相对应的预读请求放入预先设定的异步线程,以便于该异步线程可以处理预读请求所对应的预读操作,与此同时前端线程可以执行读请求所对应的实读操作;其中,预读操作读取的数据是与实读操作读取的数据相邻的后续数据。通过将预读请求放入到异步线程中,可以实现预读操作和实读操作的并行处理,缩短了从获取读请求到执行实读操作的时间,提升了分布式文件系统的读性能。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种读取数据的方法的流程图;

图2为本发明实施例提供的一种读取数据的装置的结构示意图;

图3为本发明实施例提供的一种读取数据的装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种读取数据的方法。

图1为本发明实施例提供的一种读取数据的方法的流程图,该方法包括:

s101:获取读请求。

当用户需要读取数据时,可以通过客户端向分布式文件系统发送读请求。

s102:判断读请求是否满足预先设定的预读条件。

数据一般存储在磁盘中,为了提高数据读取的速率,可以对数据进行预读,将后续读请求可能读取的数据,通过预读操作进行预先读取,将读取出的数据存储在缓存中。从缓存中读取数据的速率要比从磁盘中读取数据的速率快,通过预读数据可以提升后续读请求的处理效率。

预读数据的数据量的取值可以依据实际需求进行设定,在此不做限定。为了提高缓存的命中率,可以将预读数据的数据量设定的高一些,例如,可以将预读数据的数据量设定为200m。

在具体实现中,预读条件可以依据预读数据的数据量设定。以预读数据的数据量设定为200m为例,在分布式文件系统底层内存管理的单元是页(page),一个page是4kb大小,在具体实现中,可以每隔200m设定一个标识符(flag),这样当读请求所对应的实读操作读到flag标记的page页时,则说明读请求满足预先设定的预读条件,此时可以执行s103。

s103:将与读请求相对应的预读请求放入预先设定的异步线程以处理预读请求所对应的预读操作,同时执行读请求所对应的实读操作;其中预读操作读取的数据是与实读操作读取的数据相邻的后续数据。

在本发明实施例中,预先设定了异步线程,可以将预读请求所对应的预读操作交由异步线程处理,这样前端线程便可以处理读请求所对应的实读操作。

在具体实现中,异步线程可以采用工作队列或者是线程池的形式。

异步线程和前端线程属于异步并行操作,通过增加异步线程,可以将原本由前端线程执行的预读数据前的准备工作交由异步线程处理,从而缩短了前端线程从接收到读请求到执行该读请求所对应的时间,提升了数据读取的效率,提高了分布式文件系统的读性能。

下面将对分布式文件系统中前端线程的实读操作以及异步线程执行的预读操作的具体过程展开介绍。

以前端线程执行实读操作为例,前端线程首先判断缓存中是否存在与读请求相对应的目标数据。

当缓存中存在与读请求相对应的目标数据,则可以直接从缓存中读取目标数据。当缓存中不存在与读请求相对应的目标数据,则可以依据读请求中携带的存储位置信息,从相应的磁盘中获取目标数据。

在具体实现中,可以在读请求中携带目标数据的标识信息和存储位置信息。

其中,标识信息可以是便于系统区分不同数据的信息,例如,标识信息可以是数据的名称,或者是数据的标识符等。标识符可以采用数字的形式,在存储数据时进行设定。存储位置信息可以用于表示目标数据的存储位置。

举例说明,当缓存中不存在目标数据时,前端线程可以将携带有存储位置信息的读请求发送给向分布式文件系统的后端线程。其中,后端线程负责对分布式文件系统中的数据进行查询和读取。后端线程可以依据该存储位置信息,获知目标数据存储的具体位置,以便于从相应的磁盘上读取目标数据,并将读取到的目标数据反馈给前端线程。

以异步线程处理预读请求所对应的预读操作为例,异步线程可以依据预读请求中携带的存储位置信息,从相应的磁盘中获取预读数据,并将预读数据存储于缓存中。

异步线程获取预读数据的过程和前端线程从磁盘中获取目标的过程类似,在此不再赘述。

由上述技术方案可以看出,文件系统的前端线程获取读请求;判断读请求是否满足预先设定的预读条件;当读请求满足预先设定的预读条件时,则可以将与该读请求相对应的预读请求放入预先设定的异步线程,以便于该异步线程可以处理预读请求所对应的预读操作,与此同时前端线程可以执行读请求所对应的实读操作;其中,预读操作读取的数据是与实读操作读取的数据相邻的后续数据。通过将预读请求放入到异步线程中,可以实现预读操作和实读操作的并行处理,缩短了从获取读请求到执行实读操作的时间,提升了分布式文件系统的读性能。

考虑到缓存的存储空间有限,为了保证缓存能够顺利存储数据,可以对缓存中的数据进行清理。数据在缓存中的存储时间越久,其利用价值越低。因此,在本发明实施例中,可以在将预读数据存储于缓存中之后,对预读数据设置有效时间;当预读数据在缓存中的存储时间达到有效时间时,则将预读数据从缓存中删除。

其中,有效时间的取值可以依据实际需求进行设定,举例说明,可以根据历史操作中缓存达到存储上限时的时间进行设定。本发明实施例中,对于有效时间的具体取值不做限定。

通过对存储在缓存中的数据设定有效时间,可以实现对缓存的定时清理,从而保证缓存的持续使用。并且每次清理的都是时间较久的数据,使得缓存有更多的空间容纳更有价值的数据,进一步提供了缓存的利用率。

图2为本发明实施例提供的一种读取数据的装置的结构示意图,装置包括获取单元21、判断单元22和执行单元23;

获取单元21,用于获取读请求;

判断单元22,用于判断读请求是否满足预先设定的预读条件;若是,则触发执行单元;

执行单元23,用于将与读请求相对应的预读请求放入预先设定的异步线程以处理预读请求所对应的预读操作,同时执行读请求所对应的实读操作;其中预读操作读取的数据是与实读操作读取的数据相邻的后续数据。

可选的,执行单元包括判断子单元、读取子单元和处理子单元;

判断子单元,用于判断缓存中是否存在与读请求相对应的目标数据;若是,则触发读取子单元;若否,则触发处理子单元;

读取子单元,用于从缓存中读取目标数据;

处理子单元,用于依据读请求中携带的存储位置信息,从相应的磁盘中获取目标数据。

可选的,针对于异步线程处理预读请求所对应的预读操作,装置还包括预读取单元;

预读取单元,用于依据预读请求中携带的存储位置信息,从相应的磁盘中获取预读数据,并将预读数据存储于缓存中。

可选的,还包括设置单元和删除单元;

设置单元,用于对预读数据设置有效时间;

删除单元,用于当预读数据在缓存中的存储时间达到有效时间时,则将预读数据从缓存中删除。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,文件系统的前端线程获取读请求;判断读请求是否满足预先设定的预读条件;当读请求满足预先设定的预读条件时,则可以将与该读请求相对应的预读请求放入预先设定的异步线程,以便于该异步线程可以处理预读请求所对应的预读操作,与此同时前端线程可以执行读请求所对应的实读操作;其中,预读操作读取的数据是与实读操作读取的数据相邻的后续数据。通过将预读请求放入到异步线程中,可以实现预读操作和实读操作的并行处理,缩短了从获取读请求到执行实读操作的时间,提升了分布式文件系统的读性能。

图3为本发明实施例提供的一种读取数据的装置30的硬件结构示意图,装置30包括:

存储器31,用于存储计算机程序;

处理器32,用于执行计算机程序以实现如上述读取数据的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述读取数据的方法的步骤。

以上对本发明实施例所提供的一种读取数据的方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1