一种分布式存储系统处理操作请求的方法及装置与流程

文档序号:17286796发布日期:2019-04-03 03:37阅读:198来源:国知局
一种分布式存储系统处理操作请求的方法及装置与流程

本发明涉及存储领域,特别涉及一种分布式存储系统处理操作请求的方法、装置、客户端及一种分布式存储系统。



背景技术:

分布式存储系统是大量普通pc服务器通过网络互连,作为一个整体对外提供存储服务的系统。

分布式存储系统包括用于发起对数据的操作请求客户端,还包括用于存储数据的对象存储设备,对象存储设备即基于对象存储技术的设备(object-basedstoragedevice),简称osd。

目前,分布式存储系统处理操作请求的过程如图1所示,对象存储设备分为主osd和从osd,当客户端发出操作请求时,需要先向主osd发送操作请求,然后主osd经过计算确定执行操作请求的多个从osd,再向这多个从osd发送子操作请求,只有当从osd返回结果给主osd后,主osd才会向客户端报告处理完成的消息。

可见,传统的分布式操作系统处理操作请求的方法需要主osd进行分配计算,对主osd计算能力的依赖性较大,操作请求处理效率较低。



技术实现要素:

本发明的目的是提供一种分布式存储系统处理操作请求的方法、装置、客户端及一种分布式存储系统,用以解决传统的分布式操作系统处理操作请求的方法需要主osd进行分配计算,对主osd计算能力的依赖性较大,操作请求处理效率较低的问题。

为解决上述技术问题,本发明提供了一种分布式存储系统处理操作请求的方法,应用于客户端,包括:

接收操作请求;

将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备;

通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求。

可选的,所述将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备,包括:

当所述操作请求为写请求时,确定待写入的目标数据;

对所述目标数据进行纠删码计算,得到包括原始数据块和校验数据块的多个数据块;

生成各个所述数据块的子写请求,并确定分别用于处理各个所述子写请求的对象存储设备。

可选的,所述将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备,包括:

当所述操作请求为读请求时,确定待读取的目标数据;

根据预设筛选条件,从所述目标数据的数据块中筛选出预设数量的数据块;

生成所述预设数量的数据块中各个所述数据块的子读请求,并确定分别用于处理各个所述子读请求的对象存储设备。

可选的,所述将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备,包括:

调用预设osdc模块,将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备。

可选的,在所述通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求之后,还包括:

接收各个所述对象存储设备对所述子操作请求的处理结果。

相应的,本发明还提供了一种分布式存储系统处理操作请求的装置,应用于客户端,包括:

接收模块:用于接收操作请求;

分解模块:用于将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备;

发送模块:用于通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求。

可选的,所述分解模块包括:

目标数据确定单元:用于当所述操作请求为写请求时,确定待写入的目标数据;

纠删码计算单元:用于对所述目标数据进行纠删码计算,得到包括原始数据块和校验数据块的多个数据块;

子写请求生成单元:用于生成各个所述数据块的子写请求,并确定分别用于处理各个所述子写请求的对象存储设备。

可选的,所述分解模块具体用于:

调用预设osdc模块,将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备。

此外,本发明还提供了一种客户端,包括:

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

处理器:用于执行所述计算机程序,以实现如上所述的一种分布式存储系统处理操作请求的方法的步骤。

最后,本发明还提供了一种分布式存储系统,所述分布式存储系统包括多个对象存储设备,还包括如上所述的一种客户端。

本发明所提供的一种分布式存储系统处理操作请求的方法,应用于客户端,能够接收操作请求,然后将操作请求分解为多个子操作请求,并确定分别用于处理各个子操作请求的对象存储设备,最后通过网络向各个对象存储设备发送对应的子操作请求,以便对象存储设备处理所述子操作请求。可见,该方法实现了在客户端执行对操作请求的分解,并对分解得到的子操作请求进行分配的目的,避免了将操作请求发送给主osd再由主osd进行分配的过程,减小了对主osd的依赖,提高了处理操作请求的效率。

此外,本发明还提供了一种分布式存储系统处理操作请求的装置、一种客户端及一种分布式存储系统,其作用与上述方法相对应,这里不再赘述。

附图说明

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

图1为目前分布式存储系统处理操作请求的过程示意图;

图2为本发明所提供的一种分布式存储系统处理操作请求的方法实施例一的实现流程图;

图3为本发明所提供的一种分布式存储系统处理操作请求的方法实施例一的过程示意图;

图4为本发明所提供的一种分布式存储系统处理操作请求的方法实施例二的实现流程图;

图5为本发明所提供的一种分布式存储系统处理操作请求的方法实施例二中分布式系统的架构示意图;

图6为本发明所提供的一种分布式存储系统处理操作请求的装置实施例的功能框图;

图7为本发明提供的一种客户端实施例的结构示意图;

图8为本发明以供的一种分布式存储系统实施例的结构示意图。

具体实施方式

本发明的核心是提供一种分布式存储系统处理操作请求的方法、装置、一种客户端及一种分布式存储系统,实现了在客户端执行对操作请求的分解,并对分解得到的子操作请求进行分配的目的,避免了将操作请求发送给主osd再由主osd进行分配的过程,减小了对主osd的依赖,提高了处理操作请求的效率。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对本发明提供的一种分布式存储系统处理操作请求的方法实施例一进行介绍,实施例一应用于客户端,参见图2,实施例一包括:

步骤s101:接收操作请求。

需要说明的是,如图3所示,在分布式存储系统中,客户端主要是实现了接口,对外提供访问的功能,上层应用可以通过接口来访问分布式存储系统中存储的数据,即存储在osd中的数据。具体的,上述操作请求可以是写操作请求或读操作请求,上述操作请求可以由用户发出,也可以是在某种预设条件下自动触发上层应用使其发出的,本实施例对此不做限定。

步骤s102:将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备。

值得一提的是,在分布式存储系统中,当写入数据的时候,需要对数据进行划分成多个数据块,然后将各个数据块存储在不同的对象存储设备中。因此,当上述操作请求为写请求的时候,需要将待写入的数据进行划分,并确定划分得到的各个数据块需要写入哪个对象存储设备,显然,当上述操作请求为写请求时,上述子操作请求就包含了某个数据块需要写入哪个对象存储设备的信息。而当上述操作请求为读请求时,需要确定待读取的数据的各个数据块被存储到了哪些对象存储设备,显然此时上述子操作请求包含了从某个对象存储设备读取哪个数据块的信息。

步骤s103:通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求。

由于分布式存储系统的架构特征,客户端一般需要通过网络来访问对象存储设备上的数据,因此上述子操作请求是通过网络传输的。如图3所示,客户端通过网络直接向对象存储设备进行数据传输。

可见,本实施例所提供一种分布式存储系统处理操作请求的方法,应用于客户端,能够接收操作请求,然后将操作请求分解为多个子操作请求,并确定分别用于处理各个子操作请求的对象存储设备,最后通过网络向各个对象存储设备发送对应的子操作请求,以便对象存储设备处理所述子操作请求。可见,该方法实现了在客户端执行对操作请求的分解,并对分解得到的子操作请求进行分配的目的,避免了将操作请求发送给主osd再由主osd进行分配的过程,减小了对主osd的依赖,提高了处理操作请求的效率。

下面开始详细介绍本发明提供的一种分布式存储系统处理操作请求的方法实施例二,实施例二基于实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。

如图4所示,实施例二包括:

步骤s201:接收操作请求。

步骤s202:调用预设osdc模块,将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备。

如上所述,客户端提供了分布式存储系统的对外接口,上层应用可以通过该接口来访问分布式存储系统中的数据。作为一种可选的实施方式,上述分布式存储系统可以为icfs,该系统能够实现块存储、文件存储和对象存储,该系统的主要结构如图5所示,客户端可以通过librados接口来访问存储系统,librados与osdc位于客户端中比较底层的位置,librados提供了pool的创建、删除、对象的创建、删除等基本接口,osdc则用于封装操作,计算对象的地址,发送请求和处理超时。

本实施例基于对上述osdc模块的改进,来实现将操作请求分解为多个子操作请求,并对分解得到的子操作请求进行分配的过程。具体的,首先在osdc模块的objecter.cc/h文件中添加一个do_split_op()函数,实现将操作通过纠删码拆分成几个子操作,然后在replicatedpg.cc文件中根据原来的do_osd_op()函数写一个新的do_osd_split_op()函数,在该函数中对于拆分后子操作进行适配。

步骤s203:通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求。

步骤s204:接收各个所述对象存储设备对所述子操作请求的处理结果。

如上所述,操作请求包括写请求和读请求,根据操作请求是读请求还是写请求,步骤s202的执行过程略有不同。因此,在步骤s201和步骤s202之间可以增加一个步骤:判断操作请求为读请求还是写请求,然后根据两种情况分别进入相对应的处理流程,下面对这两种处理路程进行描述:

当操作请求为写请求时,具体处理流程为:

步骤s301:根据写请求,确定待写入的目标数据。

步骤s302:对所述目标数据进行纠删码计算,得到包括原始数据块和校验数据块的多个数据块。

上述纠删码计算,指的是将一条数据切分成n等分,通过对这n等分数据编码,得到m等相等大小的校验数据块,这n+m份数据存储在不同的节点上,拿到n+m个数据块中任意n个数据块,均可通过重构算法得到原始的数据,以达到容错的目的。一般情况下,n取10,m取3。

步骤s303:生成各个所述数据块的子写请求,并确定分别用于处理各个所述子写请求的对象存储设备。

当操作请求为读请求时,具体处理流程为:

步骤s401:根据读请求,确定待读取的目标数据。

步骤s402:根据预设筛选条件,从所述目标数据的数据块中筛选出预设数量的数据块。

如上所述,拿到n+m个数据块中任意n个数据块,即能够得到完整的原始数据,因此,作为一种优选的实施方式,可以设置一个n到n+m之间的预设数量,以减少需要访问的对象存储设备的数量。

步骤s403:生成所述预设数量的数据块中各个所述数据块的子读请求,并确定分别用于处理各个所述子读请求的对象存储设备。

综上,本实施例提供的一种分布式存储系统处理操作请求的方法,通过对osdc模块进行改进,实现了在客户端对操作请求进行分解和分配的目的,避免了发给主osd再由主osd进行分配的过程,提高了处理效率。

下面对本发明实施例提供的一种分布式存储系统处理操作请求的装置实施例进行介绍,下文描述的一种分布式存储系统处理操作请求的装置与上文描述的一种分布式存储系统处理操作请求的方法可相互对应参照。

参见图6,该装置实施例包括:

接收模块601:用于接收操作请求;

分解模块602:用于将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备;

发送模块603:用于通过网络向各个所述对象存储设备发送对应的子操作请求,以便所述对象存储设备处理所述子操作请求。

作为一种可选的实施方式,所述分解模块602包括:

目标数据确定单元6021:用于当所述操作请求为写请求时,确定待写入的目标数据;

纠删码计算单元6022:用于对所述目标数据进行纠删码计算,得到包括原始数据块和校验数据块的多个数据块;

子写请求生成单元6023:用于生成各个所述数据块的子写请求,并确定分别用于处理各个所述子写请求的对象存储设备。

作为一种可选的实施方式,所述分解模块602具体用于:

调用预设osdc模块,将所述操作请求分解为多个子操作请求,并确定分别用于处理各个所述子操作请求的对象存储设备。

本实施例的一种分布式存储系统处理操作请求的装置用于实现前述的一种分布式存储系统处理操作请求的方法,因此该装置中的具体实施方式可见前文中的一种分布式存储系统处理操作请求的方法的实施例部分,例如,接收模块601、分解模块602、发送模块603,分别用于实现上述一种分布式存储系统处理操作请求的方法中步骤s101,s102,s103。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

另外,由于本实施例的一种分布式存储系统处理操作请求的装置用于实现前述的一种分布式存储系统处理操作请求的方法,因此其作用与上述方法的作用相对应,这里不再赘述。

此外,本发明还提供了一种客户端实施例,如图7所示,该客户端包括:

存储器701:用于存储计算机程序;

处理器702:用于执行所述计算机程序,以实现如上所述的一种分布式存储系统处理操作请求的方法的步骤。

最后,本发明提供了一种分布式存储系统,如图8所示,所述分布式存储系统包括多个对象存储设备801,还包括如上所述的一种客户端802。

本实施例的一种客户端及一种分布式存储系统用于实现前述的一种分布式存储系统处理操作请求的方法,因此该客户端、分布式存储系统的具体实施方式可见前文中的一种分布式存储系统处理操作请求的方法的实施例部分,且该客户端、分布式存储系统的作用与上述方法相对应,这里不再展开介绍。

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

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

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

以上对本发明所提供的一种分布式存储系统处理操作请求的方法、装置、客户端及分布式存储系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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