掌桥专利:专业的专利平台
掌桥专利
首页

一种条带化数据的包处理方法、服务端、设备及介质

文献发布时间:2024-04-18 19:58:21


一种条带化数据的包处理方法、服务端、设备及介质

技术领域

本发明涉及条带化数据处理技术领域,具体涉及一种条带化数据的包处理方法、服务端、设备及介质。

背景技术

随着科学技术的发展,分布式存储技术不断提高。

当前,在分布式存储的纠删场景中,服务端可以将客户端想要存储的连续数据划分成多个数据量大小相同数据块,并根据该多个数据块生成一个或多个的校验块,将该多个数据块和校验块一并进行存储。其中,多个数据块和校验块构成条带化数据。

具体的,服务端可以接收客户端用于对条带化数据执行写操作的请求包,并根据该请求包对条带化数据执行相应的写操作。

但是,对条带化数据执行写操作过程中,会存在对条带化数据的写中读,导致硬盘运行效率低,影响写性能。

发明内容

有鉴于此,本发明提供了一种条带化数据的包处理方法、服务端、设备及介质,以解决对条带化数据执行写操作过程中,会存在对条带化数据的写中读,导致硬盘运行效率低,影响写性能的问题。

第一方面,本发明提供了一种条带化数据的包处理方法,应用于服务端;所述服务端包括第一队列和第二队列,所述第一队列和所述第二队列均包括至少一个来自客户端的请求包,各所述请求包均用于对所述服务端中存储的条带化数据进行写操作;所述方法包括:

从所述第一队列中获取第一请求包;

在确定所述第一请求包为非条带对齐请求包的情况下,根据所述第一请求包遍历所述第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包;其中,筛选出的第一个目标请求包与所述第一请求包相匹配;

将所述第一请求包与所述第一个目标请求包合并,生成第一组合包;

判断所述第一组合包是否为条带对齐请求包,若是,则结束筛选操作,并根据所述第一组合包,对所述条带化数据执行相应的写操作。

在一种可选的实施方式中,在所述判断所述第一组合包是否为条带对齐请求包之后,所述方法还包括:

若所述第一组合包非条带对齐请求包,则继续筛选与所述第一组合包相匹配的所述目标请求包,并与所述第一组合包合并,生成第二组合包,继续判断所述第二组合包是否为条带对齐请求包,直至最新得到的组合包为条带对齐请求包,或者遍历完所述第二队列中的每个非条带对齐请求包为止;

根据所述最新得到的组合包或遍历完所述第二队列后的组合包,对所述条带化数据执行相应的写操作。

在一种可选的实施方式中,所述第一请求包中包括第一待写数据、第一偏移量和第一数据长度;所述根据所述第一请求包遍历所述第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包,包括:

将在所述第二队列中遍历到的非条带对齐请求包确定为第二请求包;所述第二请求包中包括第二待写数据、第二偏移量和第二数据长度;

根据所述第一偏移量和所述第二偏移量,以及根据所述第一数据长度和所述第二数据长度中的至少一个,判断所述第二请求包是否与所述第一请求包相匹配;

若是,则将所述第二请求包确定为与所述第一请求包相匹配的所述目标请求包;

若否,则继续在所述第二队列中遍历下一个非条带对齐写请求包,直至确定出与所述第一请求包相匹配的所述目标请求包。

在一种可选的实施方式中,所述根据所述第一偏移量和所述第二偏移量,以及根据所述第一数据长度和所述第二数据长度中的至少一个,判断所述第二请求包是否与所述第一请求包相匹配,包括:

在确定第一推算偏移量等于所述第二偏移量,或者第二推算偏移量等于所述第一偏移量的情况下,确定所述第二请求包与所述第一请求包相匹配;其中,所述第一推算偏移量为所述第一偏移量与所述第一数据长度之和,所述第二推算偏移量为所述第二偏移量与所述第二数据长度之和;

在确定所述第一推算偏移量不等于所述第二偏移量,且所述第二推算偏移量不等于所述第一偏移量的情况下,确定所述第二请求包与所述第一请求包不匹配。

在一种可选的实施方式中,当所述第二请求包为所述第一个目标请求包时,所述将所述第一请求包与所述第一个目标请求包合并,生成第一组合包,包括:

将所述第一待写数据合并至所述第二请求包中的所述第二待写数据,生成第三请求包;

根据所述第一数据长度和所述第二数据长度,以及根据所述第一偏移量和所述第二偏移量中的一个,生成合并偏移量和合并数据长度;

将所述第三请求包中的偏移量由所述第二偏移量调整为所述合并偏移量,并将所述第三请求包中的数据长度由所述第二数据长度调整为所述合并数据长度,生成所述第一组合包。

在一种可选的实施方式中,所述判断所述第一组合包是否为条带对齐请求包,包括:

若所述合并偏移量和所述合并数据长度均能整除预设的最小存储单元值,则确定所述第一组合包为条带对齐请求包;

若所述合并偏移量和所述合并数据长度均不能整除所述最小存储单元值,则确定所述第一组合包非条带对齐请求包。

在一种可选的实施方式中,所述第二队列中的各所述请求包均来自所述第一队列;在所述从所述第一队列中获取第一请求包之前,所述方法还包括:

从所述第一队列中获取第四请求包;

若所述第四请求包为条带对齐请求包,则将所述第四请求包推送至所述第二队列中;

若所述第四请求包为非条带对齐请求包,且所述第二队列中未存在相匹配的请求包,则将所述第四请求包推送至所述第二队列中。

在一种可选的实施方式中,在所述从所述第一队列中获取第一请求包之后,所述方法还包括:

确定第一时刻,所述第一时刻为所述第一请求包到达所述第一队列的时刻;

在所述生成第一组合包后,确定第二时刻;所述第二时刻为所述第一个目标请求包到达所述第一队列的时刻;

从所述第一时刻和所述第二时刻中确定出在先时刻;

所述根据所述第一组合包,对所述条带化数据执行相应的写操作,包括:

在距离所述在先时刻的时长超过预设时长阈值时,根据所述第一组合包,对所述条带化数据执行相应的写操作。

在一种可选的实施方式中,在所述根据所述第一组合包,对所述条带化数据执行相应的写操作之后,所述方法还包括:

根据所述第一请求包,生成相应的第一回复reply消息;

根据所述第一个目标请求包,生成相应的第二reply消息;

向所述客户端返回所述第一reply消息和所述第二reply消息。

第二方面,本发明提供了一种服务端,包括:第一队列和第二队列;所述第一队列和所述队列均包括至少一个来自客户端的请求包,各所述请求包均用于对所述服务端中存储的条带化数据进行写操作;所述服务端还包括:第一获取单元、第一筛选单元、第一合并单元、第一判断单元、结束单元和第一执行单元;其中:

所述第一获取单元,用于从所述第一队列中获取第一请求包;

所述第一筛选单元,用于在确定所述第一请求包为非条带对齐请求包的情况下,根据所述第一请求包遍历所述第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包;其中,筛选出的第一个目标请求包与所述第一请求包相匹配;

所述第一合并单元,用于将所述第一请求包与所述第一个目标请求包合并,生成第一组合包;

所述第一判断单元,用于判断所述第一组合包是否为条带对齐请求包;若是,则执行所述结束单元;

所述结束单元,用于结束筛选操作;

所述第一执行单元,用于根据所述第一组合包,对所述条带化数据执行相应的写操作。

第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的条带化数据的包处理方法。

第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的条带化数据的包处理方法。

本发明提出的条带化数据的包处理方法、服务端、设备及介质,可以使用第一请求包筛选出相匹配的目标请求包,将第一请求包与目标请求包合并生产第一组合包,并可以在当前组合包为非条带对齐请求包时,在当前组合包的基础上继续在第二队列中尝试筛选和合并相匹配的非条带对齐请求包,并在最新得到的组合包为条带对齐请求包时,根据最新得到的组合包对条带化数据执行相应的写操作,或者在遍历完第二队列后,根据遍历完第二队列后的组合包对条带化数据执行相应的写操作,进一步减少多个非条带对齐请求包导致的写中读次数,甚至避免非条带对齐请求包导致的写中读,进一步提高磁盘运行效率,保障磁盘性能。

附图说明

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

图1是根据本发明实施例的条带化数据的包处理方法的流程示意图之一;

图2是根据本发明实施例的条带化数据的包处理方法的流程示意图之二;

图3是根据本发明实施例的条带化数据的包处理方法的流程示意图之三;

图4是根据本发明实施例的服务端的结构示意图;

图5是根据本发明实施例的计算机设备的结构示意图。

具体实施方式

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

如图1所示,本发明提出第一种条带化数据的包处理方法,应用于服务端。该服务端包括第一队列和第二队列,第一队列和队列均包括至少一个来自客户端的请求包,各请求包均用于对服务端中存储的条带化数据进行写操作。该方法可以包括以下步骤:

S101、从第一队列中获取第一请求包。

需要说明的是,第一队列和第二队列可以用于保存来自客户端在一定时长内的不同请求包。具体的,第一队列和第二队列中的所有请求包可以是互不相同的。

具体的,第一队列和第二队列中均可以包括条带对齐请求包和非条带对齐请求包。

其中,条带对齐请求包为用于对条带化数据进行条带对齐写操作(不存在写中读)的请求包,非条带对齐请求包为用于对条带化数据进行非条带对齐写操作(存在写中读)的请求包。

可选的,服务端可以接收客户端在一定时长内发送的、针对同一条带化数据的连续请求包,将其中时间在前的部分请求包放置到第二队列中保存,时间在后的部分请求包放置到第一队列中保存。

可选的,服务端可以在接收到上述连续请求包后,随机的将其中部分请求包放置到第二队列中保存,并将剩下部分请求包放置到第一队列中保存。

可选的,服务端可以在接收到客户端发送的针对某个条带化数据的任一请求包后,将其先行放置到第一队列中,后续在满足一定条件时,再将其从第一队列移动至第二队列中。此时,第一队列中的所有请求包均可以是来自客户端,而第二队列中的所有请求包均可以是来自第一队列。

可选的,第一队列和第二队列中的请求包可以按照接收时刻进行排列,也可以随机进行排列。

具体的,服务端在接收到客户端发送的某个请求包后,可以对该请求包进行解析,确定该请求包是否用于执行写操作,如果是,则可以放置到第一队列或第二队列中,并可以对该请求包标识已解析标志。可以理解的是,服务端可以根据某个请求包是否存在已解析标志,来确定是否将该请求包放置到队列中,避免将该请求包重复放置到队列中。

具体的,服务端可以包括多个磁盘阵列,并设置有相应的多个对象存储设备(Object Storage Device,OSD)服务。服务端可以在接收到客户端的某个请求包后,确定该请求包对应的OSD服务,将该请求包发送至该OSD服务,由该OSD服务根据该请求包执行后续流程。

其中,第一请求包可以为第一队列中的某个请求包。

具体的,本发明可以随机的从第一队列中获取某个请求包,并作为第一请求包。

具体的,本发明可以对第一队列中的每个请求包进行遍历,将遍历到的请求包作为第一请求包。

S102、在确定第一请求包为非条带对齐请求包的情况下,根据第一请求包遍历第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包。其中,筛选出的第一个目标请求包与第一请求包相匹配。

具体的,本发明可以对请求包进行解析,获取请求包中的包数据,根据包数据确定请求包是否为非条带对齐请求包。

具体的,本发明可以在第一请求包为非条带对齐请求包时,根据第一请求包,开始对第二队列中的每个非条带对齐请求包进行遍历。

具体的,本发明可以在对第二队列中的每个非条带对齐请求包进行遍历过程中,逐一筛选出一个或多个目标请求包。可以理解的是,筛选出的目标请求包即属于非条带对齐请求包。

具体的,本发明可以在第二队列中进行遍历时,可以首先筛选出与第一请求包相匹配的目标请求包。

需要说明的是,本发明可以根据两个请求包要写入条带化数据中的数据,在条带化数据中的数据位置上是否属于连续数据,如果是,该两个请求包可以合并即该两个请求包相匹配,如果否,则不能合并即该两个请求包不相匹配。

S103、将第一请求包与第一个目标请求包合并,生成第一组合包。

具体的,本发明可以在遍历到与第一请求包相匹配的目标请求包后,将第一请求包与该目标请求包合并,生成第一组合包,判断第一组合包是否为条带对齐请求包,若是,则可以结束筛选操作和遍历操作。

具体的,本发明可以通过将第一请求包和第一目标请求包的包数据进行合并,来生成第一组合包,并保存在第二队列中。

S104、判断第一组合包是否为条带对齐请求包,若是,则执行步骤S106。

具体的,本发明可以在确定第一组合包为条带对齐请求包的情况下,执行后续步骤。

S105、结束筛选操作。

具体的,本发明可以在确定第一组合包为条带对齐请求包的情况下,结束筛选操作和在第二队列中的遍历操作。

需要说明的是,本发明在确定第一请求包为条带对齐请求包的情况下,可以直接根据第一请求包对条带化数据执行相应的写操作。

S106、根据第一组合包,对条带化数据执行相应的写操作。

具体的,本发明可以结束筛选操作,并根据第一组合包对条带化数据执行相应写操作,对条带化数据进行相应更新。其中,由于第一组合包为条带对齐请求包,因此其对应执行的写操作即为条带对齐写操作。

本发明提出的条带化数据的包处理方法,可以从第一队列中获取第一请求包,在确定第一请求包为非条带对齐请求包的情况下,在第二队列中遍历查找与第一请求包相匹配的非条带对齐请求包即目标请求包,其中,第一请求包和该目标请求包均可用于对同一条带化数据进行非条带对齐写操作,本发明可以将第一请求包与该目标请求包并生成第一组合包,并在确定第一组合包为条带对齐请求包的情况下,根据第一组合包对条带化数据执行相应的条带对齐写操作。本发明可以通过对请求包的获取、筛选和合并等操作,能有效避免使用第一请求包和目标请求包执行写操作过程中发生的写中读,提高磁盘运行效率,保障磁盘性能。

基于图1,如图2所示,本发明提出第二种条带化数据的包处理方法,该方法在执行步骤S104之后,所得到的判断结果为若否时,还可以包括:

S201、继续筛选与第一组合包相匹配的目标请求包。

具体的,若第一组合包非条带对齐请求包,则继续筛选与第一组合包相匹配的目标请求包。

S202、将第一组合包与相匹配的目标请求包合并,生成第二组合包。

具体的,本发明可以在确定第一组合包非条带对齐请求包时,继续在第二队列中从当前已遍历到的位置往后遍历,筛选与第一组合包相匹配的目标请求包,并与第一组合包合并,生成第二组合包。

S203、继续判断第二组合包是否为条带对齐请求包,直至最新得到的组合包为条带对齐请求包,或者遍历完第二队列中的每个非条带对齐请求包为止。

具体的,本发明可以判断第二组合包是否为条带对齐请求包,若是,则可以结束筛选操作。若否,则可以继续在第二队列中从当前已遍历到的位置往后遍历,筛选与第二组合包相匹配的目标请求包,并与第二组合包合并,生成第三组合包……直至最新得到的组合包为条带对齐请求包,或者遍历完第二队列中的每个请求包为止。

其中,如果当前合并生成的组合包为条带对齐请求包,则本发明可以即时结束遍历操作和筛选操作,禁止再在第二队列中筛选与当前的组合包相匹配的目标请求包。比如,如果第二组合包为条带对齐请求包,则可以即时结束遍历操作和筛选操作,禁止再在第二队列中筛选与第二组合包相匹配的目标请求包。

其中,本发明如果在第二队列中遍历到最后一个请求包时,此时无论该请求包是否与当前的组合包相匹配,本发明可以确定已完成遍历操作,结束遍历操作和筛选操作。当然,如果该最后一个请求包与当前的组合包相匹配,则本发明依然会将该最后一个请求包与当前的组合包合并,生成相应的组合包并作为最终的组合包。

S204、根据最新得到的组合包或遍历完第二队列后的组合包,对条带化数据执行相应的写操作。

具体的,本发明可以在最新得到的组合包为条带对齐请求包时,根据最新得到的组合包对条带化数据执行相应的写操作。或者,本发明可以在遍历完第二队列中每个请求包之后,根据遍历完第二队列后的组合包,对条带化数据执行相应的写操作。

本发明提出的条带化数据的包处理方法,可以使用第一请求包筛选出相匹配的目标请求包,将第一请求包与目标请求包合并生产第一组合包,并可以在当前组合包为非条带对齐请求包时,在当前组合包的基础上继续在第二队列中尝试筛选和合并相匹配的非条带对齐请求包,并在最新得到的组合包为条带对齐请求包时,根据最新得到的组合包对条带化数据执行相应的写操作,或者在遍历完第二队列后,根据遍历完第二队列后的组合包对条带化数据执行相应的写操作,进一步减少多个非条带对齐请求包导致的写中读次数,甚至避免非条带对齐请求包导致的写中读,进一步提高磁盘运行效率,保障磁盘性能。

基于图1所示,本发明提出第三种条带化数据的包处理方法。在该方法中,第一请求包中包括第一待写数据、第一偏移量和第一数据长度。此时,上述根据第一请求包遍历第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包,包括:

将在第二队列中遍历到的非条带对齐请求包确定为第二请求包。第二请求包中包括第二待写数据、第二偏移量和第二数据长度。

根据第一偏移量和第二偏移量,以及根据第一数据长度和第二数据长度中的至少一个,判断第二请求包是否与第一请求包相匹配。

若是,则将第二请求包确定为与第一请求包相匹配的目标请求包。

若否,则继续在第二队列中遍历下一个非条带对齐写请求包,直至确定出与第一请求包相匹配的目标请求包。

具体的,本发明可以从第一请求包中获取第一待写数据、第一偏移量和第一数据长度,从第二请求包中获取第二待写数据、第二偏移量和第二数据长度,之后根据第一偏移量和第二偏移量,以及根据第一数据长度和第二数据长度中的至少一个,判断第二请求包是否与第一请求包相匹配。

其中,本发明在确定第二请求包与第一请求包相匹配时,可以将第二请求包确定为与第一请求包相匹配的目标请求包。

其中,本发明在确定第二请求包不与第一请求包相匹配时,可以从第二队列中当前已遍历到的位置开始,继续向后面的非条带对齐请求包进行遍历,并继续判断遍历到的非条带对齐请求包是否与第一请求包相匹配,直至确定出与第一请求包相匹配的目标请求包。

可选的,在本发明提出的其他方法中,上述根据第一偏移量和第二偏移量,以及根据第一数据长度和第二数据长度中的至少一个,判断第二请求包是否与第一请求包相匹配,包括:

在确定第一推算偏移量等于第二偏移量,或者第二推算偏移量等于第一偏移量的情况下,确定第二请求包与第一请求包相匹配。其中,第一推算偏移量为第一偏移量与第一数据长度之和,第二推算偏移量为第二偏移量与第二数据长度之和。

在确定第一推算偏移量不等于第二偏移量,且第二推算偏移量不等于第一偏移量的情况下,确定第二请求包与第一请求包不匹配。

具体的,在第一推算偏移量等于第二偏移量,或者第二推算偏移量等于第一偏移量时,本发明可以确定第一待写数据和第二待写数据在条带化数据中的所处位置是连续的,此时本发明可以确定第二请求包与第一请求包可合并,从而确定第二请求包与第一请求包相匹配。

具体的,在第一推算偏移量不等于第二偏移量,且第二推算偏移量不等于第一偏移量的情况下,本发明可以确定第一待写数据和第二待写数据在条带化数据中的所处位置是不连续的,此时本发明可以确定第二请求包与第一请求包不能合并,从而确定第二请求包与第一请求包不匹配。

可选的,第一队列和第二队列中的请求包可以是按照偏移量由小到大进行排序的。

可选的,在本发明提出的其他方法中,当第二请求包为第一个目标请求包时,将第一请求包与第一个目标请求包合并,生成第一组合包,包括:

将第一待写数据合并至第二请求包中的第二待写数据,生成第三请求包。

根据第一数据长度和第二数据长度,以及根据第一偏移量和第二偏移量中的一个,生成合并偏移量和合并数据长度。

将第三请求包中的偏移量由第二偏移量调整为合并偏移量,并将第三请求包中的数据长度由第二数据长度调整为合并数据长度,生成第一组合包。

可选的,上述步骤S104可以包括:

若合并偏移量和合并数据长度均能整除预设的最小存储单元值,则确定第一组合包为条带对齐请求包。

若合并偏移量和合并数据长度均不能整除最小存储单元值,则确定第一组合包非条带对齐请求包。

其中,最小存储单元值为上述条带化数据中数据块的数据量值。

本发明提出的条带化数据的包处理方法,可以有效判断两个请求包是否相匹配,从而有效实现对目标请求包的筛选。

基于图1,本发明提出第四种条带化数据的包处理方法。在该方法中,第二队列中的各请求包均来自第一队列。此时,在上述步骤S101之前,该方法还可以包括:

从第一队列中获取第四请求包。

若第四请求包为条带对齐请求包,则将第四请求包推送至第二队列中。

若第四请求包为非条带对齐请求包,且第二队列中未存在相匹配的请求包,则将第四请求包推送至第二队列中。

需要说明的是,本发明在接收到来自客户端的任一上述请求包时,均可以将其先行放置到第一队列中,之后在满足预设条件(比如第一队列中的请求包数量达到某个阈值,或者接收时长超过某个阈值)时,从第一队列中获取一个请求包,确定该请求包是否为条带对齐请求包,若是,则可以将该请求包放置到第二队列中。

如果该请求包不是条带对齐请求包,则本发明可以在第二队列中遍历查找是否存在相匹配的请求包,若没有查找到,则可以将其放置到第二队列中。若查找到,则可以将其与查找到的请求包合并,生成组合包,确定该组合包是否为条带对齐请求包,若是,则可以根据该组合包执行相应的写操作,若否,则可以在第二队列中继续从已遍历到的位置往后遍历,直至最新合并的组合包为条带对齐请求包,根据最新合并的组合包执行相应的写操作,或者,在遍历完第二队列中的所有请求包后,根据遍历完后的组合包执行相应的写操作。

可选的,本发明在最新得到的组合包为条带对齐请求包时,也可以将其保存在第二队列中。

可选的,本发明在得到遍历完后的组合包时,也可以将其保存在第二队列中。

可选的,在本发明提出的其他方法中,在上述步骤S101之后,还包括:

对第一队列进行闭锁。

在对非条带化数据执行相应的写操作之后,对第一队列进行解锁。

需要说明的是,本发明在对第一队列进行闭锁后,则无法再从第一队列中获取请求包,可以避免同时根据第一队列中的多个请求包在第二队列中遍历和筛选请求包,从而可以有效避免同时根据多个请求包进行遍历、筛选或者合并等操作所导致的程序出错。

具体的,本发明可以在根据第一请求包执行相应的遍历操作、筛选操作和合并操作和写操作结束之后,对第一队列进行解锁,继续从第一队列中获取请求包并作为新的第一请求包,执行图1所示流程。

本发明提出的条带化数据的包处理方法,可以通过对第一队列执行闭锁,有效避免遍历、筛选或者合并等操作的出错。

基于图1,本发明提出第五种条带化数据的包处理方法,该方法在上述步骤S101之后,还可以包括:

确定第一时刻,第一时刻为第一请求包到达第一队列的时刻。

在生成第一组合包后,确定第二时刻。第二时刻为第一个目标请求包到达第一队列的时刻。

从第一时刻和第二时刻中确定出在先时刻。

此时,步骤S107可以包括:

在距离在先时刻的时长超过预设时长阈值时,根据第一组合包,对条带化数据执行相应的写操作。

具体的,本发明可以在得到第一组合包且在确定第一组合包为条带对齐请求包的情况下,可以先将第一组合包保存在第二队列中,在距离上述在先时刻的时长超过预设时长阈值时,再根据第一组合包执行相应的写操作。

具体的,本发明可以在将任一请求包放置到第一队列时,均记录其接收时刻。之后,本发明在从第一队列中获取第一请求包,根据第一请求包在第二队列中执行遍历、筛选和合并操作,得到最新合并的组合包或遍历完后的组合包后,可以将该组合包保存在第二队列中,将该组合包中最早接收的请求包的接收时刻确定为在先时刻,当该在线时刻过去的时长大于预设时长阈值时,本发明再根据该组合包执行相应的写操作。

其中,如果从第一队列中获取的第一请求包,在第二队列中不存在相匹配的请求包,也可以先行将第一请求包放置到第二队列中,等待第一队列中其他请求包的合并尝试。在第一请求包未被合并且距离其接收时刻的时长超过预设时长阈值时,本发明可以根据第一请求包执行相应的写操作。或者,当合并有第一请求包的组合包的在先时刻过去一定时长后,本发明可以根据该组合包执行相应的写操作。

可选的,本发明也可以先行遍历第一队列中的每个请求包,遍历到的每个请求包均作为第一请求包,执行图2所示流程,并在图2所示的执行写操作流程之前,将最新得到的组合包或遍历完后的组合包保存在第二队列中。其中,如果第一请求包为条带对齐请求包,也可以保存在第二队列中。本发明可以在遍历完第一队列中的每个请求包后,开始对第二队列中的每个请求包进行遍历,确定遍历到的每个请求包的等待时长(遍历到的时刻减去接收时刻得到的时长)是否超过预设时长阈值,若是,则可以根据遍历到的请求包执行相应的写操作。

其中,本发明可以在遍历完第二队列中的请求包后,等待一定时长如1毫秒之后,再开始对第一队列中的各请求包进行遍历,执行图1所示流程。

本发明提出的条带化数据的包处理方法,可以将来自第一队列的请求包或者合并生成的组合包保存在第二队列中,等待来自第一队列的请求包的尝试合并,以提高第二队列中非条带对齐请求包的合并率,进一步减少非条带对齐请求包导致的写中读次数。

基于图1,本发明提出第六种条带化数据的包处理方法,该方法在步骤S107之后,还可以包括:

根据第一请求包,生成相应的第一回复reply消息。

根据上述第一个目标请求包,生成相应的第二reply消息。

向客户端返回第一reply消息和第二reply消息。

具体的,本发明可以在将第一请求包和目标请求包合并之前,在第一请求包和目标请求包中均设置合并标识符,并在第一请求包和目标请求包合并时,在生成的第一组合包中保留两者的合并标识符。之后,本发明在根据第一组合包执行相应的写操作时,可以从中提取出两个合并标识符,并根据该两个合并标识符生成两个回复消息,向客户端返回该两个回复消息。

其中,本发明在设置合并标识符时,可以分别从第一请求包和目标请求包中提取出偏移量和数据长度,将第一请求包的偏移量、数据长度和合并标识符进行关联并保存在预先设置的第三队列中,以及将目标请求包的偏移量、长度和合并标识符进行关联并保存在该第三队列中。之后,本发明在根据第一组合包执行写操作时,可以从第一组合包中获取第一请求包和目标请求包的合并标识,并从第三队列中查找出相应的偏移量和数据长度,根据偏移量和数据长度生成相应的回复消息,并返回至客户端。

本发明提出的条带化数据的包处理方法,可以针对客户端的请求包,向客户端返回相应数量和包含相应信息的消息。

如图3所示,为更好的说明本发明实施例提出的上述方法,本发明结合应用场景,提出第七种条带化数据的包处理方法。该方法可以包括以下步骤:

S301、接收来自客户端的一个请求包op并作为第一op。

S302、确定第一op所属的主OSD,并推送至主OSD。

S303、主OSD在确定第一op的消息类型为写请求,且第一op不包括已解析标志的情况下,将第一op推送到第一队列中,记录第一op在第一队列中的入队时刻,并在第一op中设置已解析标志。

S304、在合并线程中,从第一队列中获取一个op并作为第二op,若第二op为条带对齐请求包,则将第二op推送到第二队列中保存。

S305、若第二op为非条带对齐请求包,则在第二队列中遍历每个请求包,尝试筛选出与第二op相匹配的非条带对齐请求包,若未筛选到,则将第二op推送到第二队列中保存。

S306、若筛选到,则将第二op与相匹配的op合并,生成第一组合op,判断第一组合op是否为条带对齐请求包,若是,则结束筛选操作,在第二队列中保存第一组合op。

S307、若第一组合op为非条带对齐请求包,则在第二队列中从已遍历到的位置继续遍历,查找与第一组合op相匹配的op。

S308、若查找到,则将第一组合op与相匹配的op合并,生成第二组合op,判断第二组合op是否为条带对齐请求包,直至最新得到的组合op为条带对齐请求包,或者遍历完第二队列中的每个请求包为止,在第二队列中保存最新得到的组合包或遍历完第二队列后的组合op。

S309、遍历第一队列中的每个op,任一op均可作为上述第二op执行相应的筛选、判断、合并和保存等操作。

S310、对第二队列中的每个op进行遍历,确定出入队时长超过预设时长阈值的op和属于条带对齐请求包的op,根据入队时长超过预设时长阈值的op和属于条带对齐请求包的op,执行相应的写操作。

可选的,在该方法中,还可以包括:

S311、在筛选出相匹配的op时,分别在要合并的两个op中设置合并标识符,并分别获取该两个op的偏移量和数据长度,将合并标识符、偏移量和数据长度建立关联并发送到预设的第三队列中保存。

S312、在根据某个op执行写操作时,若该op包括合并标识符,则从该op中提取出所有的合并标识符,分别根据各合并标识符从第三队列中确定出相应的偏移量和数据长度,根据确定出的偏移量和数据长度生成相应的reply消息。

S313、在根据包括合并标识符的op执行写操作后,向客户端返回相应的reply消息。

本发明提出的条带化数据的包处理方法,可以有效减少对条带化数据的写中读次数,甚至避免写中读的发生,提高磁盘运行效率,保障磁盘性能。

与图1所示方法相对应,如图4所示,本发明提出一种服务端,包括:第一队列和第二队列。第一队列和队列均包括至少一个来自客户端的请求包,各请求包均用于对服务端中存储的条带化数据进行写操作。服务端还包括:第一获取单元401、第一筛选单元402、第一合并单元403、第一判断单元404、结束单元405和第一执行单元406。其中:

第一获取单元401,用于从第一队列中获取第一请求包。

第一筛选单元402,用于在确定第一请求包为非条带对齐请求包的情况下,根据第一请求包遍历第二队列中的每个非条带对齐请求包,筛选出一个或多个目标请求包。其中,筛选出的第一个目标请求包与第一请求包相匹配。

第一合并单元403,用于将第一请求包与第一个目标请求包合并,生成第一组合包。

第一判断单元404,用于判断第一组合包是否为条带对齐请求包。若是,则执行结束单元405。

结束单元405,用于结束筛选操作。

第一执行单元406,用于根据第一组合包,对条带化数据执行相应的写操作。

可选的,服务端还包括:第二筛选单元、第二合并单元、第二判断单元和第二执行单元。其中:

第二筛选单元,用于若第一组合包非条带对齐请求包,则继续筛选与第一组合包相匹配的目标请求包。

第二合并单元,用于将继续筛选出的目标请求包与第一组合包合并,生成第二组合包。

第二判断单元,用于继续判断第二组合包是否为条带对齐请求包,直至最新得到的组合包为条带对齐请求包,或者遍历完第二队列中的每个非条带对齐请求包为止。

第二执行单元,用于根据最新得到的组合包或遍历完第二队列后的组合包,对条带化数据执行相应的写操作。

可选的,第一请求包中包括第一待写数据、第一偏移量和第一数据长度。第一筛选单元402,包括:第一确定单元、第三判断单元、第二确定单元和第三确定单元。

第一确定单元,用于将在第二队列中遍历到的非条带对齐请求包确定为第二请求包。第二请求包中包括第二待写数据、第二偏移量和第二数据长度。

第三判断单元,用于根据第一偏移量和第二偏移量,以及根据第一数据长度和第二数据长度中的至少一个,判断第二请求包是否与第一请求包相匹配,若是,则触发第二确定单元。若否,则触发第三确定单元。

第二确定单元,用于将第二请求包确定为与第一请求包相匹配的目标请求包。

第三确定单元,用于继续在第二队列中遍历下一个非条带对齐写请求包,直至确定出与第一请求包相匹配的目标请求包。

可选的,第三判断单元,包括:第四确定单元和第五确定单元。

第四确定单元,用于在确定第一推算偏移量等于第二偏移量,或者第二推算偏移量等于第一偏移量的情况下,确定第二请求包与第一请求包相匹配。其中,第一推算偏移量为第一偏移量与第一数据长度之和,第二推算偏移量为第二偏移量与第二数据长度之和。

第五确定单元,用于在确定第一推算偏移量不等于第二偏移量,且第二推算偏移量不等于第一偏移量的情况下,确定第二请求包与第一请求包不匹配。

可选的,当第二请求包为第一个目标请求包时,第一合并单元403,包括:第三合并单元、第一生成单元和调整单元。

第三合并单元,用于将第一待写数据合并至第二请求包中的第二待写数据,生成第三请求包。

第一生成单元,用于根据第一数据长度和第二数据长度,以及根据第一偏移量和第二偏移量中的一个,生成合并偏移量和合并数据长度。

调整单元,用于将第三请求包中的偏移量由第二偏移量调整为合并偏移量,并将第三请求包中的数据长度由第二数据长度调整为合并数据长度,生成第一组合包。

可选的,第一判断单元404,包括:第六确定单元和第七确定单元。

第六确定单元,用于若合并偏移量和合并数据长度均能整除预设的最小存储单元值,则确定第一组合包为条带对齐请求包。

第七确定单元,用于若合并偏移量和合并数据长度均不能整除最小存储单元值,则确定第一组合包非条带对齐请求包。

可选的,第二队列中的各请求包均来自第一队列。服务端还包括:第二获取单元、第一推送单元和第二推送单元。

第二获取单元,用于在从第一队列中获取第一请求包之前,从第一队列中获取第四请求包。

第一推送单元,用于若第四请求包为条带对齐请求包,则将第四请求包推送至第二队列中。

第二推送单元,用于若第四请求包为非条带对齐请求包,且第二队列中未存在相匹配的请求包,则将第四请求包推送至第二队列中。

可选的,服务端还包括:闭锁单元和解锁单元。

闭锁单元,用于在从第一队列中获取第一请求包之后,对第一队列进行闭锁。

解锁单元,用于在对非条带化数据执行相应的写操作之后,对第一队列进行解锁。

可选的,服务端还包括:第一时刻确定单元、第二时刻确定单元和第三时刻确定单元,其中:

第一时刻确定单元,用于在从第一队列中获取第一请求包之后,确定第一时刻,第一时刻为第一请求包到达第一队列的时刻。

第二时刻确定单元,用于在生成第一组合包后,确定第二时刻。第二时刻为第一个目标请求包到达第一队列的时刻。

第三时刻确定单元,用于从第一时刻和第二时刻中确定出在先时刻。

第一执行单元406,用于在距离在先时刻的时长超过预设时长阈值时,根据第一组合包,对条带化数据执行相应的写操作。

可选的,服务端还包括:第二生成单元、第三生成单元和返回单元。

第二生成单元,用于根据第一请求包,生成相应的第一回复reply消息。

第三生成单元,用于根据上述第一个目标请求包,生成相应的第二reply消息。

返回单元,用于向客户端返回第一reply消息和第二reply消息。

上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。

本发明提出的服务端,可以使用第一请求包筛选出相匹配的目标请求包,将第一请求包与目标请求包合并生产第一组合包,并可以在当前组合包为非条带对齐请求包时,在当前组合包的基础上继续在第二队列中尝试筛选和合并相匹配的非条带对齐请求包,并在最新得到的组合包为条带对齐请求包时,根据最新得到的组合包对条带化数据执行相应的写操作,或者在遍历完第二队列后,根据遍历完第二队列后的组合包对条带化数据执行相应的写操作,进一步减少多个非条带对齐请求包导致的写中读次数,甚至避免非条带对齐请求包导致的写中读,进一步提高磁盘运行效率,保障磁盘性能。

本实施例中的服务端是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。

本发明实施例还提供一种计算机设备,具有上述图4所示的服务端。

请参阅图5,图5是本发明可选实施例提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器10为例。

处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。

其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。

存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

存储器20可以包括易失性存储器,例如,随机存取存储器。存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘。存储器20还可以包括上述种类的存储器的组合。

该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。

本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等。进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。

虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

相关技术
  • 一种数据处理方法及装置、一种计算设备及存储介质
  • 一种数据处理方法、数据处理装置、计算机设备及可读存储介质
  • 一种服务端测试用例集的生成方法、终端设备及存储介质
  • 一种数据处理方法、装置、设备及存储介质
  • 一种调用链数据的处理方法、装置、设备及存储介质
  • 数据处理方法、服务端设备及计算机可读存储介质
  • 数据处理方法、客户端、服务端、计算设备及存储介质
技术分类

06120116480697