一种修改写请求处理方法、装置、设备及可读存储介质与流程

文档序号:19942669发布日期:2020-02-14 23:22阅读:155来源:国知局
一种修改写请求处理方法、装置、设备及可读存储介质与流程

本发明涉及分布式存储系统技术领域,特别涉及一种修改写请求处理方法、修改写请求处理装置、修改写请求处理设备及计算机可读存储介质。



背景技术:

随着云计算技术的快速发展,对于分布式存储系统的性能要求越来越高。客户端在对存储系统中某个数据进行修改写操作时,将修改写请求和修改后的数据发送给存储网关,存储网关向存有修改前的数据的存储设备发送删除请求将修改前的数据删除,当存储网关接收到删除确认信息后,在将修改后的数据发送给存储设备进行写入。因此完成一次修改写操作需要发送多个指令,极大地浪费了系统cpu资源、网络资源和磁盘io资源,影响了整个分布式存储系统的性能。

因此,如何解决现有修改写请求处理方法影响了分布式存储系统性能的问题,是本领域技术人员需要解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种修改写请求处理方法、修改写请求处理装置、修改写请求处理设备及计算机可读存储介质,解决了现有修改写请求处理方法影响了分布式存储系统性能的问题。

为解决上述技术问题,本发明提供了一种修改写请求处理方法,包括:

获取客户端发送的修改写请求和对应的修改写数据;

获取所述修改写请求指定的目标数据的属性信息,利用所述属性信息判断所述目标数据的大小是否小于所述修改写数据的大小;

若是,则向存有所述目标数据的目标存储设备发送覆盖写请求和所述修改写数据;

若否,则向所述目标存储设备发送特殊写请求和所述修改写数据;其中,所述特殊写请求包括truncate请求和追加写请求,所述truncate请求中size的值为0。

可选的,在所述获取客户端发送的修改写请求和对应的修改写数据之后,在所述获取所述修改写请求指定的目标数据的属性信息之前,还包括:

判断所述目标数据是否存在;

若否,则向所述客户端发送错误通知;

若是,则执行所述获取所述修改写请求指定的目标数据的属性信息的操作。

可选的,在所述向所述目标存储设备发送特殊写请求和所述修改写数据之后,还包括:

判断是否接收到所述目标存储设备发送的确认写入信息;

若否,则重新向所述目标存储设备发送所述特殊写请求和所述修改写数据。

可选的,在所述判断是否接收到所述目标存储设备发送的确认写入信息之后,还包括:

若是,则向所述客户端发送确认信息。

本发明还提供了一种修改写请求处理装置,包括:

获取模块,用于获取客户端发送的修改写请求和对应的修改写数据;

判断模块,用于获取所述修改写请求指定的目标数据的属性信息,利用所述属性信息判断所述目标数据的大小是否小于所述修改写数据的大小;

第一发送模块,用于向存有所述目标数据的目标存储设备发送覆盖写请求和所述修改写数据;

第二发送模块,用于向所述目标存储设备发送特殊写请求和所述修改写数据;其中,所述特殊写请求包括truncate请求和追加写请求,所述truncate请求中size的值为0。

可选的,还包括:

存在判断模块,用于判断所述目标数据是否存在;

通知模块,用于向所述客户端发送错误通知;

相应的,所述判断模块为确定所述修改写请求指定的目标数据存在时,获取所述修改写请求指定的目标数据的属性信息的模块。

可选的,还包括:

写入判断模块,用于判断是否接收到所述目标存储设备发送的确认写入信息;

重发模块,用于重新向所述目标存储设备发送所述特殊写请求和所述修改写数据。

可选的,还包括:

确认信息发送模块,用于向所述客户端发送确认信息。

本发明还提供了一种修改写请求处理设备,包括存储器和处理器,其中:

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

所述处理器,用于执行所述计算机程序,以实现上述的修改写请求处理方法。

本发明还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的修改写请求处理方法。

本发明提供的修改写请求处理方法,获取客户端发送的修改写请求和对应的修改写数据,利用修改写请求确定目标数据。获取目标数据的属性信息,利用属性信息判断目标数据的大小是否小于修改写数据的大小。若是,则向存有目标数据的目标存储设备发送覆盖写请求和修改写数据。若否,则向目标存储设备发送特殊写请求和修改写数据;其中,特殊写请求包括truncate请求和追加写请求,truncate请求中size的值为0。

可见,该方法通过判断目标数据和修改写数据之间的大小关系决定向目标存储设备发送的请求,当目标数据大于修改写数据时,发送truncate请求和追加写请求组成的特殊请求;当目标数据不大于修改写数据时,发送覆盖写请求。通过目标数据和修改写数据之间的大小关系选择发送的请求,可以减少请求发送的次数,进而节省系统cpu资源、网络资源和磁盘io资源,同时由于请求发送次数减少,还可以减少前端io的延时,提高了分布式存储系统的性能。

此外,本发明还提供了一种修改写请求处理装置、修改写请求处理设备及计算机可读存储介质,同样具有上述有益效果。

附图说明

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

图1为本发明实施例提供的一种修改写请求处理方法流程图;

图2为本发明实施例提供的一种修改写请求处理装置的结构示意图;

图3为本发明实施例提供的一种修改写请求处理设备的结构示意图。

具体实施方式

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

请参考图1,图1为本发明实施例提供的一种修改写请求处理方法流程图。

该方法包括:

s101:获取客户端发送的修改写请求和对应的修改写数据。

在本发明实施例中,修改写请求用于指定被执行修改写的目标数据,目标数据可以为以对象形式存储的数据。具体的,目标数据可以为目标对象,本发明实施例提供的修改写请求处理方法可以由分布式对象存储系统中的对象存储网关(radosgateway,rgw)执行。修改写请求和修改写数据均由客户端发送,客户端可以将二者分开发送,或者修改写数据可以位于修改写请求中,例如位于修改写请求的末端,修改写请求和修改写数据封装为一个客户端请求,客户端发送时可以一次将修改写请求和修改写数据同时发送。修改写数据用于替换目标数据,完成修改写操作。

s102:获取修改写请求指定的目标数据的属性信息,利用属性信息判断目标数据的大小是否小于修改写数据的大小。

修改写请求执行的目标数据即为被执行修改写操作的数据。在获取修改写请求和修改写数据后,获取目标数据的属性信息以判断目标数据和修改写数据的大小关系。属性信息的获取方法本实施例不做限定,例如可以先确定目标数据的存储位置,即存有目标数据的目标存储设备,目标存储设备可以为osd(objectstoragedevice,对象存储设备)。向目标存储设备发送获取目标对象属性信息的请求,目标存储设备在获取该请求后向对象存储网关发送属性信息。

当获取到目标数据的属性信息后,对属性信息进行解析,得到目标数据的大小。修改写数据的大小信息可以由对象存储网关统计得到;或者可以封装在修改写请求中,通过解析修改写请求得到。利用目标数的大小和修改写数据的大小进行比对,判断目标数据的大小是否小于修改写数据的大小。当目标数据的大小小于修改写数据的大小时,进入s103步骤;当目标数据的大小不小于修改写数据的大小时,进入s104步骤。

s103:向存有目标数据的目标存储设备发送覆盖写请求和修改写数据。

现有技术在执行修改写操作时需要先发送删除指令删除目标数据,当接收到目标存储设备执行完删除操作后发送的删除成功信息后,再向目标存储设备发送写入请求和修改写数据,以完成修改写操作。

当目标数据的大小小于修改写数据的大小时,则无需删除目标数据,直接对目标数据进行覆盖写,即可完成对目标数据的修改写操作。具体的,向存有目标数据的目标存储设备发送覆盖写请求和修改写数据,覆盖写请求用于命令目标存储设备对指定的目标数据进行覆盖写操作。将覆盖写操作和修改写数据发送给目标存储设备,目标存储设备在接收到覆盖写操作和修改写数据后,利用修改写数据覆盖目标数据,完成修改写操作。因此当目标数据的大小小于修改写数据的大小时,仅发送一次覆盖写请求即可完成修改写操作,减少了请求或指令的发送次数。

s104:向目标存储设备发送特殊写请求和修改写数据;其中,特殊写请求包括truncate请求和追加写请求,truncate请求中size的值为0。

当目标数据的大小不小于修改写数据的大小时,修改写数据无法对目标数据进行覆盖写操作。此时,向目标存储设备发送特殊写请求和修改写数据。特殊写请求为一个包括truncate请求和追加写请求的请求,truncate请求用于将目标数据从头部开始截断至size大小,且执行完毕后无需返回确认信息即可执行下一请求。为了实现修改写的效果,需要将目标数据完全截断后进行追加写,因此将truncate请求中size的值设置为0,可以实现将目标数据删除的效果。在执行完truncate请求后,目标数据被完全截断删除,再执行追加写请求,将修改写数据写入,完成对目标数据的修改写操作。由于truncate操作在执行完毕后无需返回确认信息,因此可以将truncate请求和追加写请求封装为一个特殊写请求,在目标数据的大小不小于修改写数据的大小时,仅发送一次特殊写请求即可完成修改写操作,减少了请求或指令的发送次数。

应用本发明实施例提供的修改写请求处理方法,通过判断目标数据和修改写数据之间的大小关系决定向目标存储设备发送的请求,当目标数据大于修改写数据时,发送truncate请求和追加写请求组成的特殊写请求;当目标数据不大于修改写数据时,发送覆盖写请求。通过目标数据和修改写数据之间的大小关系选择发送的请求,可以减少请求发送的次数,进而节省系统cpu资源、网络资源和磁盘io资源,同时由于请求发送次数减少,还可以减少前端io的延时,提高了分布式存储系统的性能。

基于上述发明实施例,在获取客户端发送的修改写请求和对应的修改写数据之后,在获取修改写请求指定的目标数据的属性信息之前,还可以包括:

步骤11:判断目标数据是否存在。

在接收到修改写请求后,首先判断目标数据是否存在,即目标数据是否被存储于分布式存储系统之中。当确定目标数据没有被存储于分布式存储系统之中时,可以进入步骤12;当确定目标数据存储于分布式存储系统之中时,可以进入s102步骤。

步骤12:若否,则向客户端发送错误通知。

当目标数据没有被存储于分布式存储系统之中时,确认客户端发送的修改写请求发生错误,无法执行修改写操作。因此向客户端发送错误通知,以便客户端重新发送修改写请求。

应用本发明实施例提供的修改写请求处理方法,通过判断目标数据是否存在,可以防止因客户端发送了错误的修改写请求而导致的后续修改写请求执行错误的问题。

基于上述发明实施例,为了防止修改写请求或修改写数据在发送的过程中丢失,修改写操作未执行而导致的数据不一致问题,在想目标存储设备发送特殊写请求(或覆盖写请求)和修改写数据之后,还可以包括:

步骤21:判断是否接收到目标存储设备发送的确认写入信息。

本发明实施例以发送特殊写请求和修改写数据为例说明具体步骤,当发送覆盖写请求和修改写数据时同样适用本方法。当发送了特殊写请求和修改写数据之后,判断是否接受到目标存储设备发送的确认写入信息。确认写入信息为确认修改写数据已写入目标存储设备的信息,即确认修改写操作完成的信息,其具体内容和形式本实施例不做限定。判断操作可以在发送了特殊写操作和修改写数据后预设时间后执行,预设时间可以根据修改写操作的平均处理时长进行设置,例如在发送后一分钟后执行判断操作;或者可以在发送了特殊写操作和修改写数据后一段时间内连续执行判断操作。当接收到确认写入信息时,进入步骤23;当未接收到确认写入信息时,进入步骤22。

步骤22:重新向目标存储设备发送特殊写请求和修改写数据。

当未接收到确认写入信息时,认为特殊写请求和修改写数据在发送过程中丢失,因此重新向目标存储设备发送特殊写请求和修改写数据。

步骤23:向客户端发送确认信息。

当接收到确认写入信息时,向客户端发送确认信息,以便客户端了解修改写操作已完成,保证数据同步。

进一步的,在步骤21之前,还可以判断是否接收到目标存储设备发送的确认接收信息,当未接收到确认接收信息时,进入步骤22,重发请求和数据,直至接收到确认接收信息。然后等待接收确认写入信息,在接收到确认写入信息时向客户端发送确认信息。

下面对本发明实施例提供的修改写请求处理装置进行介绍,下文描述的修改写请求处理装置与上文描述的修改写请求处理方法可相互对应参照。

请参考图2,图2为本发明实施例提供的一种修改写请求处理装置的结构示意图,包括:

获取模块210,用于获取客户端发送的修改写请求和对应的修改写数据;

判断模块220,用于获取修改写请求指定的目标数据的属性信息,利用属性信息判断目标数据的大小是否小于修改写数据的大小;

第一发送模块230,用于向存有目标数据的目标存储设备发送覆盖写请求和修改写数据;

第二发送模块240,用于向目标存储设备发送特殊写请求和修改写数据;其中,特殊写请求包括truncate请求和追加写请求,truncate请求中size的值为0。

可选的,还包括:

存在判断模块,用于判断目标数据是否存在;

通知模块,用于向客户端发送错误通知;

相应的,判断模块为确定修改写请求指定的目标数据存在时,获取修改写请求指定的目标数据的属性信息的模块。

可选的,还包括:

写入判断模块,用于判断是否接收到目标存储设备发送的确认写入信息;

重发模块,用于重新向目标存储设备发送特殊写请求和修改写数据。

可选的,还包括:

确认信息发送模块,用于向客户端发送确认信息。

下面对本发明实施例提供的修改写请求处理设备进行介绍,下文描述的修改写请求处理设备与上文描述的修改写请求处理方法可相互对应参照。

请参考图3,图3为本发明实施例提供的一种修改写请求处理设备的结构示意图,该修改写请求处理设备包括存储器、处理器,其中:

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

处理器320,用于执行计算机程序,以实现上述的修改写请求处理方法。

下面对本发明实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的修改写请求处理方法可相互对应参照。

本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的修改写请求处理方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

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

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

以上对本发明所提供的一种修改写请求处理方法、修改写请求处理装置、修改写请求处理设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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