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

文档序号:16324588发布日期:2018-12-19 05:51阅读:397来源:国知局
一种数据落盘的方法、装置和计算机可读存储介质与流程

本发明涉及数据处理技术领域,特别是涉及一种数据落盘的方法、装置和计算机可读存储介质。

背景技术

传统存储方式中为了提高客户端的读写性能,系统设计时均会引入缓存的概念,即划分出内存中的一块区域用于容纳下发的读写请求数据,尤其是针对写操作。

但是,传统的写缓存机制仅针对普遍情况设计,当遇到对数据安全性要求较高,需要较为频繁地主动发起强制落盘的场景时,由于缓存的存在,会造成下刷请求返回较慢,导致前端写入阻塞现象明显。其中,强制落盘是指将缓存中某个或某些较为重要的特定文件转移至磁盘中存储。

为提升文件的安全性,系统对特定文件执行强制落盘操作时,会暂时停止对写操作的处理。如果缓存中特定文件的数据量较大时,则在执行强制落盘时需要花费较多的时间,导致写操作发生阻塞,影响系统的写性能。

可见,如何在数据安全性要求较高的情况下,提升系统的写性能,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种数据落盘的方法、装置和计算机可读存储介质,可以在数据安全性要求较高的情况下,提升系统的写性能。

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

从缓存中获取待处理数据片段;

判断所有所述待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;

若是,则将各所述目标数据片段转移至磁盘中存储。

可选的,所述从缓存中获取待处理数据片段包括:

遍历缓存中所有正在写入的文件,以获取所述文件中所有未落盘的数据片段,并将所述数据片段作为待处理数据片段。

可选的,在所述将各所述目标数据片段转移至磁盘中存储之前还包括:

判断所有所述目标数据片段中是否存在归属于同一个目标文件的待落盘数据片段;

若否,则执行所述将各所述目标数据片段转移至磁盘中存储的步骤;

若是,则判断归属于同一个目标文件的待落盘数据片段的个数是否超过预设个数;

若是,则从所述待落盘数据片段中选取预设个数的待落盘数据片段存储至所述磁盘中;

若否,则执行所述将各所述目标数据片段转移至磁盘中存储的步骤。

可选的,在所述将各所述目标数据片段转移至磁盘中存储之后还包括:

记录系统执行强制落盘时花费的落盘时间;

判断所述落盘时间是否小于预设时间值;

若否,则依据所述落盘时间和所述预设时间值,调整所述预设阈值的取值。

本发明实施例还提供了一种数据落盘装置,包括获取单元、判断单元和转移单元;

所述获取单元,用于从缓存中获取待处理数据片段;

所述判断单元,用于判断所有所述待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;若是,则触发所述转移单元;

所述转移单元,用于将各所述目标数据片段转移至磁盘中存储。

可选的,所述获取单元具体用于遍历缓存中所有正在写入的文件,以获取所述文件中所有未落盘的数据片段,并将所述数据片段作为待处理数据片段。

可选的,还包括第一判断单元、第二判断单元和选取单元;

所述第一判断单元,用于判断所有所述目标数据片段中是否存在归属于同一个目标文件的待落盘数据片段;若否,则触发所述转移单元;若是,则触发所述第二判断单元;

所述第二判断单元,用于判断归属于同一个目标文件的待落盘数据片段的个数是否超过预设个数;若是,则触发所述选取单元;若否,则触发所述转移单元;

所述选取单元,用于从所述待落盘数据片段中选取预设个数的待落盘数据片段存储至所述磁盘中。

可选的,还包括记录单元和调整单元;

所述记录单元,用于记录系统执行强制落盘时花费的落盘时间;

所述判断单元还用于判断所述落盘时间是否小于预设时间值;若否,则触发所述调整单元;

所述调整单元,用于依据所述落盘时间和所述预设时间值,调整所述预设阈值的取值。

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

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

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

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

由上述技术方案可以看出,从缓存中获取待处理数据片段;判断所有待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;当存在数据量大于或等于预设阈值的目标数据片段时,则可以将这些目标数据片段转移至磁盘中存储。由于这些目标数据片段的数据量相对较大,将其从缓存中转移至磁盘存储时,可以有效降低缓存中的数据量,以减少系统执行强制落盘时花费的时间,从而有效降低写操作阻塞情况的发生,提升了系统的写性能。

附图说明

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

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

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

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

具体实施方式

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

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

接下来,详细介绍本发明实施例所提供的一种数据落盘方法。图1为本发明实施例提供的一种数据落盘方法的流程图,该方法包括:

s101:从缓存中获取待处理数据片段。

当客户端接收到新的写操作时,会将无法处理的待写入文件存储至缓存中。

在实际应用中,往往会将一个文件划分成多个数据片段进行处理,相应的,缓存中存储的文件是以数据片段的形式存在。

缓存中的数据片段主要分为正在落盘的数据片段和未落盘的数据片段。落盘是指将数据片段从缓存中转移至磁盘中存储。在本发明实施例中,可以将未落盘的数据片段称作是待处理数据片段或者是脏数据片段。

在本发明实施例中,可以在系统后台设置异步刷新线程,利用该线程实现对缓存中数据的落盘操作,从而有效的控制缓存中数据的数据量,以降低前端线程执行强制落盘的时间。

获取待处理数据片段的方式可以有多种,一种方式可以是按照周期时间从缓存中读取待处理数据片段;另一种方式可以是遍历缓存中所有正在写入的文件,以获取文件中所有未落盘的数据片段,并将数据片段作为待处理数据片段。

s102:判断所有待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段。

预设阈值可以是数据量的预设个数。预设阈值的具体取值可以依据实际需求进行设定,在此不做限定。

当某个待处理数据片段的数据量小于预设阈值时,则说明该待处理数据片段的数据量较小。将该待处理数据片段继续在缓存中保留时,对后续前端线程执行强制落盘操作时带来影响的较小,因此,可以将该待处理数据片段继续保留在缓存中。

当某个待处理数据片段的数据量大于或等于预设阈值时,则说明该待处理数据片段的数据量较大。将该待处理数据片段继续在缓存中保留时,可能会对后续前端线程执行强制落盘操作时带来较大的影响,导致强制落盘操作的处理时间较长。故此,在本发明实施例中,可以将数据量大于或等于预设阈值的待处理数据片段作为目标数据片段。当存在目标数据片段时,则执行s103。

s103:将各目标数据片段转移至磁盘中存储。

通过将目标数据片段转移至磁盘中存储,实现了对缓存中目标数据片段的落盘操作,可以有效的控制缓存中数据的数据总量。

由上述技术方案可以看出,从缓存中获取待处理数据片段;判断所有待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;当存在数据量大于或等于预设阈值的目标数据片段时,则可以将这些目标数据片段转移至磁盘中存储。由于这些目标数据片段的数据量相对较大,将其从缓存中转移至磁盘存储时,可以有效降低缓存中的数据量,以减少系统执行强制落盘时花费的时间,从而有效降低写操作阻塞情况的发生,提升了系统的写性能。

缓存中的每个数据片段都有其所属的文件,由于前端线程在执行强制落盘操作时,只对缓存中某个或某些特定文件进行落盘处理。而异步刷新线程并不知道哪些文件属于特定文件,为了保证在执行数据落盘操作时可以及时处理到这些特定文件的数据片段,在具体实现中,可以对每个文件中的执行落盘的数据片段个数进行限定,由此加快对每个文件的处理速率,从而使得异步刷新线程可以在相对较短的时间内完成对所有文件的处理。

具体的,在将各目标数据片段转移至磁盘中存储之前,可以先判断所有目标数据片段中是否存在归属于同一个目标文件的待落盘数据片段。

待落盘数据片段即为数据量大于或等于预设阈值的目标数据片段。

当不存在归属于同一个目标文件的待落盘数据片段时,则可以执行将各目标数据片段转移至磁盘中存储的步骤。

当存在归属于同一个目标文件的待落盘数据片段时,则可以进一步判断归属于同一个目标文件的待落盘数据片段的个数是否超过预设个数。

其中,预设个数可以是同一个目标文件下待落盘数据片段的个数的最大取值。

当归属于同一个目标文件的待落盘数据片段的个数超过预设个数时,则从待落盘数据片段中选取预设个数的待落盘数据片段存储至磁盘中;该目标文件下剩余的待落盘数据片段继续保留在缓存中。

例如,归属于同一个文件的待落盘数据片段有5个,而预设个数为3个,则从这5个待落盘数据片段中选取3个待落盘数据片段从缓存中转移至磁盘中存储。

以一个目标文件为例,选取待落盘数据片段的方式可以是从该目标文件的所有待落盘数据片段中任意选取出预设个数的待落盘数据片段,也可以是将所有待落盘数据片段按照数据量从高到低的方式排序,然后按照数据量高到低的顺序依次选取出预设个数的待落盘数据片段。

当归属于同一个目标文件的待落盘数据片段的个数不超过预设个数时,则执行将各目标数据片段转移至磁盘中存储的步骤。

通过对每个文件中的数据片段的落盘个数进行限定,可以加快对每个文件的处理速度,从而使得异步刷新线程可以在相对较短的时间内完成对所有文件的处理,有效的避免了异步刷新线程还未对特定文件中的数据片段进行落盘处理,而前端线程便开始执行强制落盘的操作。

在本发明实施例中,可以依据系统执行强制落盘所花费的时间,来对预设阈值进行调整。

具体的,在将各目标数据片段转移至磁盘中存储之后,还可以记录系统执行强制落盘时花费的落盘时间;判断落盘时间是否小于预设时间值;当落盘时间不小于预设时间值时,则依据落盘时间和预设时间值,调整预设阈值的取值。

预设时间值可以是落盘时间的上限值,预设时间值的具体取值可以依据系统写操作性能进行设定,只要能够保证系统执行强制落盘操作时,不会造成明显的写入阻塞即可。

当落盘时间不小于预设时间值时,说明系统执行强制落盘时花费的时间太久,其主要一个原因是由于缓存中特定文件的数据量较大,为了进一步限定缓存中特定文件的数据量,则可以将预设阈值的取值调小。

其中,预设阈值的取值可以依据落盘时间和预设时间值的差值进行调整,当落盘时间和预设时间值的差值较大时,则预设阈值的调整幅度大一些;当落盘时间和预设时间值的差值较小时,则预设阈值的调整幅度小一些,可以将预设阈值适当的调低一些。

通过动态的调整预设阈值的取值,可以达到不同的数据下刷控制效果,适应不同的场景需求。

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

获取单元21,用于从缓存中获取待处理数据片段;

判断单元22,用于判断所有待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;若是,则触发转移单元23;

转移单元23,用于将各目标数据片段转移至磁盘中存储。

可选的,获取单元具体用于遍历缓存中所有正在写入的文件,以获取文件中所有未落盘的数据片段,并将数据片段作为待处理数据片段。

可选的,还包括第一判断单元、第二判断单元和选取单元;

第一判断单元,用于判断所有目标数据片段中是否存在归属于同一个目标文件的待落盘数据片段;若否,则触发转移单元;若是,则触发第二判断单元;

第二判断单元,用于判断归属于同一个目标文件的待落盘数据片段的个数是否超过预设个数;若是,则触发选取单元;若否,则触发转移单元;

选取单元,用于从待落盘数据片段中选取预设个数的待落盘数据片段存储至磁盘中。

可选的,还包括记录单元和调整单元;

记录单元,用于记录系统执行强制落盘时花费的落盘时间;

判断单元还用于判断落盘时间是否小于预设时间值;若否,则触发调整单元;

调整单元,用于依据落盘时间和预设时间值,调整预设阈值的取值。

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

由上述技术方案可以看出,从缓存中获取待处理数据片段;判断所有待处理数据片段中是否存在数据量大于或等于预设阈值的目标数据片段;当存在数据量大于或等于预设阈值的目标数据片段时,则可以将这些目标数据片段转移至磁盘中存储。由于这些目标数据片段的数据量相对较大,将其从缓存中转移至磁盘存储时,可以有效降低缓存中的数据量,以减少系统执行强制落盘时花费的时间,从而有效降低写操作阻塞情况的发生,提升了系统的写性能。

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

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

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

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

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

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

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

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