一种分布式存储请求的下发方法、装置、设备及存储介质与流程

文档序号:13387310阅读:239来源:国知局
一种分布式存储请求的下发方法、装置、设备及存储介质与流程

本发明实施例涉及分布式存储技术领域,特别是涉及一种分布式存储请求的下发方法、装置、设备及计算机可读存储介质。



背景技术:

对于拥有大规模后端存储磁盘的分布式存储而言,前端下发的请求最终都会被分解多个成针对每个存储磁盘的、独立的子请求,并将多个子请求逐个下发至相应的存储磁盘,对于一个后端存储磁盘而言,由于非读写类操作请求的下发效率较低,使后端存储磁盘对非读写类操作请求的响应效率降低,由于后端存储磁盘被长期占用,导致后端存储磁盘不能及时接受并处理一些正常读写类请求,从而造成前端业务延迟,严重时会造成数据丢失,使整个系统的性能和安全性降低。

因此,如何提供一种解决上述技术问题的分布式存储请求的下发方法、装置、设备及计算机可读存储介质成为本领域的技术人员目前需要解决的问题。



技术实现要素:

本发明实施例的目的是提供一种分布式存储请求的下发方法、装置、设备及计算机可读存储介质,在使用过程中提高了非读写类操作请求的下发效率,减小了前端延迟,并在一定程度上提高了读写类请求响应效率及集群的处理能力,使整个系统的性能和安全性提高。

为解决上述技术问题,本发明实施例提供了一种分布式存储请求的下发方法,包括:

s11:判断前端下发的操作请求是否为非读写类操作请求,如果是,则进入s12;

s12:依据所述操作请求中的文件id号将所述操作请求进行分类,得到与相应的文件对应的单文件请求;

s13:将所述单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;

s14:通过散列算法将各个所述子操作请求分别定位至相应的存储磁盘上;

s15:将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

可选的,所述将定位至同一个存储磁盘的所有子操作请求进行打包,并将打包后的各个子操作请求下发至相应的存储磁盘的过程包括:

s151:将定位至同一个存储磁盘的各个子操作请求按照预设数量分成多组,并将每一组子操作请求进行打包处理,得到各个待下发请求包;

s152:按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘。

可选的,所述按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘的过程包括:

s1521:将当前的待下发请求包下发至相应的存储磁盘,并开始计时;

s1522:判断是否接收到所述存储磁盘返回的回调信息,如果是,则进入s1523;

s1523:判断计时时间是否达到预设时间间隔,如果是,将下一个待下发请求包作为当前的待发送请求包,并返回s1521,以对下一个待发送请求包执行下发操作;

s1524:重复s1521-s1523,直至所有的待下发请求包下发完毕。

可选的,所述散列算法为crush算法。

可选的,所述非读写类操作请求包括删除类操作请求和截断类操作请求。

本发明实施例相应的提供了一种分布式存储请求的下发装置,包括:

判断模块,用于判断前端下发的操作请求是否为非读写类操作请求,如果是,则触发分类模块;

所述分类模块,用于依据所述操作请求中的文件id号将所述操作请求进行分类,得到与相应的文件对应的单文件请求;

切分模块,用于将所述单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;

定位模块,用于通过散列算法将各个所述子操作请求分别定位至相应的存储磁盘上;

下发模块,用于将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

可选的,所述下发模块包括:

打包单元,用于将定位至同一个存储磁盘的各个子操作请求按照预设数量分成多组,并将每一组子操作请求进行打包处理,得到各个待下发请求包;

下发单元,用于按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘。

本发明实施例还提供了一种分布式存储请求的下发设备,包括:

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

处理器,用于执行所述计算机程序时实现如上述所述分布式存储请求的下发方法方法的步骤。

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

本发明实施例提供了一种分布式存储请求的下发方法、装置、设备及计算机可读存储介质,包括判断前端下发的操作请求是否为非读写类操作请求,如果是,则依据操作请求中的文件id号将操作请求进行分类,得到与相应的文件对应的单文件请求;将单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;通过散列算法将各个子操作请求分别定位至相应的存储磁盘上;将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

本发明实施例将前端发送的非读写类操作请求进行分类后对某个文件对应的单文件请求进行切分,并采用散列算法将切分后的各个子操作请求定位到各个相应的存储磁盘上,将每个存储磁盘所对应的各个子操作请求打包后统一下发至该存储磁盘,从而提高了非读写类操作请求的下发效率,减小了前端延迟,并在一定程度上提高了读写类请求响应效率及集群的处理能力,使整个系统的性能和安全性提高。

附图说明

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

图1为本发明实施例提供的一种分布式存储请求的下发方法的流程示意图;

图2为本发明实施例提供的一种分布式存储请求的下发装置的结构示意图。

具体实施方式

本发明实施例提供了一种分布式存储请求的下发方法、装置、设备及计算机可读存储介质,在使用过程中提高了非读写类操作请求的下发效率,减小了前端延迟,并在一定程度上提高了读写类请求响应效率及集群的处理能力,使整个系统的性能和安全性提高。

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

请参照图1,图1为本发明实施例提供的一种分布式存储请求的下发方法的流程示意图。

该方法包括:

s11:判断前端下发的操作请求是否为非读写类操作请求,如果是,则进入s12;

需要说明的是,前端下发的操作请求包括读写类操作请求和非读写类操作请求,本发明实施例只对非读写类操作请求的下发流程进行优化,当前端下发的操作请求为读写类操作请求时,进入正常的下发流程,以便相应的存储磁盘及时对读写类操作进行响应处理;当前端下发的操作为非读写类操作请求时,则进入本发明实施例中的优化流程。也即,优先处理紧迫性的读写类操作请求,从而较少前端延迟。

s12:依据操作请求中的文件id号将操作请求进行分类,得到与相应的文件对应的单文件请求;

具体的,前端下发的非读写类操作请求中所包括的文件id号可以确定该非读写类操作请求所针对的文件,例如非读写类操作请求为删除类操作,根据相应的文件id号确定为对文件1执行删除操作,故对于前端所下发的各个非读写类操作请求,可以按照各个非操作类请求中所包含的文件id号确定各个非操作类请求所针对的文件,从而确定出各个与相应的文件对应的单文件请求。

s13:将单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;

需要说明的是,在得到各个单文件请求后,将每个单文件请求按照存储底层的对象大小(通常存储磁盘对象大小为4m)进行切分,切分为多个子操作请求。

s14:通过散列算法将各个子操作请求分别定位至相应的存储磁盘上;

具体的,可以通过散列算法(例如crush算法)将针对某一个文件的各个子操作请求分别定为至相应的存储磁盘上,其中,后端存储中包括多个存储磁盘,可以预先对各个存储磁盘进行编号得到一个磁盘组单元,比如,若采用双副本机制,则每个磁盘组单元均拥有两个磁盘编号,可以将该磁盘组单元称为一个存储向量,此时,也即将各个子操作请求分别定为至相应的磁盘向量上。

还需要说明的是,crush算法是一种效率比较高的哈希算法,可以大量较少遍历和查找所消耗的时间,因此本发明实施例中优选的采用crush算法将各个子操作请求分别定为至相应的存储磁盘上,当然,也可以采用其他的散列算法,本发明实施例对此不做特殊的限定。

s15:将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

可以理解的是,定为至同一个存储磁盘的子操作请求可能为多个,此时将定位至同一个存储磁盘的各个子操作请求进行打包处理,统一下发至相应的存储磁盘,提高了下发效率,并且还便于存储磁盘对相应的各个子操作请求进行连续响应处理,提高响应效率。

进一步的,在上述s15中,将定位至同一个存储磁盘的所有子操作请求进行打包,并将打包后的各个子操作请求下发至相应的存储磁盘的过程,具体可以包括s151和s152,具体如下:

s151:将定位至同一个存储磁盘的各个子操作请求按照预设数量分成多组,并将每一组子操作请求进行打包处理,得到各个待下发请求包;

具体的,对定位至同一个存储磁盘的各个子操作请求的数量进行计数,并对各个子操作请求进行分组,从第一个子操作请求起将每预设数量的子操作请求分成一组,最后一组的数量可以小于预设数量。将每一组中的各个子操作请求进行打包处理,得到各个待下发请求包。

其中,预设数量的具体数值可以根据实际情况进行确定,本发明实施例对此不作限定。

s152:按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘。

需要说明的是,在下发各个待下发请求包时进行流量控制,避免请求过于频繁。

具体的,在s152中,按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘的过程,具体可以包括以下步骤:

s1521:将当前的待下发请求包下发至相应的存储磁盘,并开始计时;

具体的,从第一个待下发请求包开始下发,当将第一个待下发请求包下发至相应的存储磁盘时,进行计时,当存储磁盘接收到第一个待下发请求包中的各个子操作请求后进行响应,并且在响应完毕后会返回回调信息至客户端。s1522:判断是否接收到存储磁盘返回的回调信息,如果是,则进入s1523;

s1523:判断计时时间是否达到预设时间间隔,如果是,将下一个待下发请求包作为当前的待发送请求包,并返回s1521,以对下一个待发送请求包执行下发操作;

s1524:重复s1521-s1523,直至所有的待下发请求包下发完毕。

客户端在接收到相应的存储磁盘返回的回调信息后,判断计时时间是否达到预设时间间隔,在达到预设时间间隔后,将第二个待下发请求包下发至相应的存储磁盘,并以及开始计时,同样存储磁盘在响应完毕第二个待下发请求包中的各个子操作请求后返回回调信息至客户端,客户端在接收到回调信息后,并且在时间达到预设时间间隔后将下一个待下发请求包下发至存储磁盘,如此循环执行,直至所有的待下发请求包下发完毕。

客户端接收到与最后一个待下发请求包对应的回调信息后,说明针对该存储磁盘的所有的各个子操作请求均执行完毕,当对应的单文件请求所对应的各个子操作请求均执行完毕后,执行上层的总回调,确认本次单文件请求操作执行完毕。

需要说明的是,本发明实施例中设置预设时间间隔是为了控制下发频率,避免请求过于频繁影响后端存储磁盘的响应效率,从而影响其他操作请求的响应。预设时间间隔可以为1s,当然,其具体数值可以根据实际情况进行确定,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

可选的,非读写类操作请求包括删除类操作请求和截断类操作请求。

当然,非读写类操作请求不仅限于包括删除类操作请求和截断类操作请求,还可以包括其他非读写类的操作请求,具体不限。

本发明实施例提供了一种分布式存储请求的下发方法,包括判断前端下发的操作请求是否为非读写类操作请求,如果是,则依据操作请求中的文件id号将操作请求进行分类,得到与相应的文件对应的单文件请求;将单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;通过散列算法将各个子操作请求分别定位至相应的存储磁盘上;将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

本发明实施例将前端发送的非读写类操作请求进行分类后对某个文件对应的单文件请求进行切分,并采用散列算法将切分后的各个子操作请求定位到各个相应的存储磁盘上,将每个存储磁盘所对应的各个子操作请求打包后统一下发至该存储磁盘,从而提高了非读写类操作请求的下发效率,减小了前端延迟,并在一定程度上提高了读写类请求响应效率及集群的处理能力,使整个系统的性能和安全性提高。

相应的本发明实施例还公开了一种分布式存储请求的下发装置,具体请参照图2,图2为本发明实施例提供的一种分布式存储请求的下发装置的结构示意图。在上述实施例的基础上:

该装置包括:

判断模块1,用于判断前端下发的操作请求是否为非读写类操作请求,如果是,则触发分类模块2;

分类模块2,用于依据操作请求中的文件id号将操作请求进行分类,得到与相应的文件对应的单文件请求;

切分模块3,用于将单文件请求按照存储底层的对象大小进行切分,得到多个子操作请求;

定位模块4,用于通过散列算法将各个子操作请求分别定位至相应的存储磁盘上;

下发模块5,用于将定位至同一个存储磁盘的所有子操作请求进行打包处理,并将打包处理后的各个子操作请求下发至相应的存储磁盘。

可选的,下发模块5包括:

打包单元,用于将定位至同一个存储磁盘的各个子操作请求按照预设数量分成多组,并将每一组子操作请求进行打包处理,得到各个待下发请求包;

下发单元,用于按照预设流量控制规则将各个待下发请求包下发至相应的存储磁盘。

需要说明的是,本发明实施例将前端发送的非读写类操作请求进行分类后对某个文件对应的单文件请求进行切分,并采用散列算法将切分后的各个子操作请求定位到各个相应的存储磁盘上,将每个存储磁盘所对应的各个子操作请求打包后统一下发至该存储磁盘,从而提高了非读写类操作请求的下发效率,减小了前端延迟,并在一定程度上提高了读写类请求响应效率及集群的处理能力,使整个系统的性能和安全性提高。

另外,对于本发明实施例所涉及到的分布式存储请求的下发方法的具体介绍,请参照上述方法实施例,本申请在此不再赘述。

本发明实施例还公开了一种分布式存储请求的下发设备,包括:

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

处理器,用于执行计算机程序时实现如上述分布式存储请求的下发方法方法的步骤。

本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述分布式存储请求的下发方法方法的步骤。

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

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

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

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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