响应写请求的方法和装置与流程

文档序号:18515969发布日期:2019-08-24 09:27阅读:157来源:国知局
响应写请求的方法和装置与流程

本发明实施例涉及存储领域,尤其涉及响应写请求的方法和装置、第一节点、分布式对象存储系统。



背景技术:

在分布式对象存储系统(Distributed Object-Based Storage System)中,为了保证数据可靠性,分布式对象存储系统的节点会先将携带该数据的写请求固化到本地磁盘上,固化的方式是:将接收到的写请求写入磁盘上的编辑日志(edit log)。后续再响应该编辑日志中的写请求,具体是根据该写请求的数据增加、删除、或者修改内存中的数据。

由于向内存写数据是很快的,因此在节点响应写请求的整个过程中,主要的时间消耗在将写请求写入磁盘上的编辑日志。写编辑日志的性能直接决定了分布式对象存储系统的性能。通常,磁盘的每秒进行读写操作的次数(Input/Output Operations Per Second,IOPS)是固定的。

来源于客户端的读请求和写请求均是随机的,因此节点在预设时间段内接收的写请求通常是不连续的。由于响应读请求和写请求的操作是互斥的,不能同时执行;这样,需要通过多次使用磁盘I/O才能完成将该预设时间内的写请求写入编辑日志,节点的读写性能较低,从而整个分布式对象存储系统的读写性能较低。



技术实现要素:

有鉴于此,本发明实施例提供了一种响应写请求的方法和装置、第一节点、分布式对象存储系统,提高将写请求写入编辑日志的效率。

第一方面,本申请提供一种响应写请求的方法,应用于分布式对象存储系统,所述分布式对象存储系统包括多个节点,所述多个节点包括至少一个第一节点和至少一个第二节点。

第一节点用于汇集来源于客户端的写请求,和统一分发写请求给第二节点响应。所述第二节点用于响应该写请求,包括将所述第一写请求写入本节点的编辑日志。

在本方法中,所述第一节点接收多个写请求,将所述多个写请求连续排列;所述多个写请求连续排列后,所述第一节点将第一写请求向所有所述第二节点发送,所述第一写请求为连续排列的所述多个写请求中属于预设时间段内的所有写请求。

本申请中,由于预设时间段内的所有写请求是连续排列的,连续排列的写请求中间没有间隔读请求,因此,第二节点可以连续将该第一写请求包含的多有写请求写入编辑日志。从而第二节点仅使用需一次磁盘I/O便能完成将该预设时间内的写请求写入编辑日志,提高了第二节点响应预设时间段内的写请求的响应效率,从而提高了第二节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

一个可能设计,第一节点用于响应所述多个写请求中的至少一个写请求,响应的方式包括将该至少一个写请求写入第一节点的编辑日志;第一节点不用于响应所述多个写请求中除了该至少一个写请求以外的其它写请求。

可见,第一节点响应该预设时间段内的至少一个写请求,也是连续响应的,具体包括连续地将该预设时间段内的至少一个写请求写入编辑日志;从而第一节点仅使用需一次磁盘I/O便能完成将该预设时间内的该至少一个写请求写入编辑日志,提高了第一节点响应预设时间段内的该至少一个写请求的响应效率,从而提高了第二节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

举例说明,若所述第一节点属于响应所述第一写请求的一个节点,则所述第一节点将所述第一写请求写入本节点的编辑日志。

一个可能设计,来源于客户端的写请求,分为两类;一类是客户端直接向第一节点发送的写请求;另一类是客户端向分布式对象存储系统中除了该第一节点以外的其它节点发送的写请求。

应知,分布式对象存储系统的客户端的数量可以是多个。对应地,第一节点接收来源于该多个客户端的写清求的方式包括:

所述第一节点接收多个客户端中的任一客户端发送的第二写请求;和/或,

所述第一节点接收第三节点转发的第三写请求,所述第三节点为所述多个节点中除所述第一节点以外的任一节点,所述第三写请求由所述多个客户端中的任一客户端向所述第三节点发送。

所述第二写请求与所述第三写请求为不同写请求。

可选地,所有第二节点均属于第三节点。

一种可能设计,第三节点具有写请求队列;第三节点将所述多个客户端向所述第三节点发送的所述第三写请求添加到所述第三节点的写请求队列,将所述第三节点的写请求队列中的所述第三写请求向所述第一节点发送。这样,第三节点可以连续地从写请求队列获取到需要向第一节点发送的写请求,从而提高了转发写请求的效率;从而也避免转发写请求时,若多个写请求中间间隔有读请求,还需要响应该读请求后才能继续获取待转发的写请求。

一种可能设计,第三节点具有读请求队列。该第三节点接收客户端的读请求后,将该读请求添加到该第三节点的读请求队列中。这样,第三节点可以连续从读请求队列获取到读请求,进而连续响应读请求队列中的读请求,提高了响应读请求的效率。

一种可能设计,第一节点具有写请求队列。所述第一节点按照所述多个写请求各自的接收时间的先后顺序,将所述多个写请求依次添加到所述第一节点的写请求队列,所述第一节点的写请求队列用于缓存写请求,所述接收时间具体是指所述第一节点接收到写请求的时间。

一种可能设计,第一节点具有写请求队列和读请求队列。第一节点将接收的写请求添加入写请求队列中,将接收的读请求添加入读请求队列中。第一节点将写请求添加到写请求队列的实现方式参见上述可能设计。

对于读请求,所述第一节点接收多个客户端发送的读请求,将所述读请求添加入所述第一节点的读请求队列,响应所述第一节点的读请求队列中的读请求。这样,第一节点可以连续从读请求队列获取到读请求,进而连续响应读请求队列中的读请求,提高了响应读请求的效率。

第二方面,本申请提供一种响应写请求的装置,该装置包括执行第一方面或第一方面的任意可能设计提供的响应写请求的方法的功能单元;本申请对功能单元的划分不做限定,例如可以按照响应写请求的方法的流程步骤对应划分功能单元。

第三方面,本申请提供一种响应写请求的方法,应用于分布式对象存储系统,所述分布式对象存储系统包括多个节点。其中,第一节点为所述多个节点中的任一节点;第二节点为所述多个节点中除了所述第一节点以外的任一节点。

在本方法中,所述第一节点接收第一写请求和第二写请求,所述第一写请求为客户端向所述第一节点发送的写请求,所述第二写请求为所有第二节点向所述第一节点发送的写请求;所述第一节点将所述第一写请求和所述第二写请求连续排列,得到连续排列的多个写请求;所述第一节点将预设时间段内的所述连续排列的多个写请求写入第一节点的编辑日志;若所述第一节点接收到所述预设时间段内的所述第一写请求,则所述第一节点将预设时间段内的所述第一写请求向所有第三节点发送,所述第三节点用于将所述第一写请求写入本节点的编辑日志,所述所有第三节点中的每个所述第三节点为所述所有第二节点中的节点。

本申请中,由于预设时间段内的所有写请求是连续排列的,连续排列的多个写请求中间没有间隔读请求,因此,第一节点可以连续将该多有写请求写入编辑日志。从而第一节点仅使用需一次磁盘I/O便能完成将该预设时间内的多个写请求写入编辑日志,提高了第一节点响应预设时间段内的写请求的响应效率,从而提高了第一节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

第三节点也响应从第一节点接收的该第一写请求。

应知,每个第二节点(包括第三节点)响应写请求的实现方式与第一节点响应写请求的实现方式同原理,在此不再赘述。以一个第三节点为例,该个第三节点接收客户端的写请求,和接收其它节点(包括第一节点)的写请求,将接收的所有写请求连续排列,并将预设时间段内的连续排列的多个写请求写入该个第二节点的编辑日志。

可见,分布式系统中的所述多个节点中,每个节点的响应写请求的原理均与第一节点响应写请求的原理相同;即,每个节点直接响应从客户端接收的写请求,并将该写请求向用于响应该写请求的其它节点转发,以便其它节点响应该请求。另外,每个节点还接收需要其响应的其它节点转发的写请求,将接收的该转发的写请求与从客户端直接接收的写请求连续排列后依次响应。因此,每个节点均是连续响应预设时间段内的写请求,提高了每个节点响应写请求的响应效率,从而提高了每个节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

一种可能设计,第一节点具有写请求队列,该写请求队列用于缓存写请求。所述第一节点根据所述第一写请求的接收时间和所述第二写请求的接收时间,按照接收时间的先后顺序将所述第一写请求和所述第二写请求依次添加到所述第一节点的写请求队列。这样,第一节点可以连续地从写请求队列获取到需要响应的写请求,提高了响应写请求的效率。

一种可能设计,第一节点具有读请求队列。所述第一节点接收客户端发送的读请求,将所述读请求添加入所述第一节点的读请求队列,响应所述第一节点的读请求队列中的读请求。这样,第一节点可以连续从读请求队列获取到读请求,进而连续响应读请求队列中的读请求,提高了响应读请求的效率。

第四方面,本申请提供一种响应写请求的装置,该装置包括执行第三方面或第三方面的任意可能设计提供的响应写请求的方法的功能单元;本申请对功能单元的划分不做限定,例如可以按照响应写请求的方法的流程步骤对应划分功能单元。

第五方面,本申请提供一种第一节点。分布式对象存储系统包括该第一节点。该第一节点包括至少一个处理器、存储器和通信接口。所述至少一个处理器、所述存储器和所述通信接口均通过总线连接;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述第一节点通过所述通信接口与分布式对象存储系统中的其它节点进行数据交互来执行上述第一方面或者第一方面的各种可能设计提供的响应写请求的方法,或者使得所述第一节点通过所述通信接口与分布式对象存储系统中的其它节点进行数据交互来实现第二方面中的响应写请求的装置,或者使得所述第一节点执行上述第三方面或者第三方面的各种可能设计提供的响应写请求的方法,使得所述第一节点通过所述通信接口与分布式对象存储系统中的其它节点进行数据交互来实现第四方面中的响应写请求的装置。

第六方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当分布式对象存储系统中的第一节点的至少一个处理器执行该计算机执行指令时,该第一节点执行上述第一方面或者第一方面的各种可能设计提供的响应写请求的方法,或者该第一节点执行上述第三方面或者第三方面的各种可能设计提供的响应写请求的方法。

第七方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中。分布式对象存储系统中的第一节点的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得该第一节点实施上述第一方面或者第一方面的各种可能设计提供的响应写请求的方法,或者第一节点执行上述第三方面或者第三方面的各种可能设计提供的响应写请求的方法。

附图说明

图1为本发明实施例提供的一种分布式对象存储系统的系统架构示意图;

图2为本发明实施例提供的响应写请求的方法的一种流程示意图;

图3为本发明实施例提供的一种分布式对象存储系统的系统架构示意图;

图4为本发明实施例提供的响应写请求的方法的一种流程示意图;

图5为本发明实施例提供的响应写请求的装置的一种逻辑架构示意图;

图6为本发明实施例提供的响应写请求的装置的一种逻辑架构示意图;

图7为本发明实施例提供的第一节点的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例提供的技术方案进行描述。

方法实施例一适用的分布式对象存储系统

分布式对象存储系统(Distributed Object-Based Storage System)包括L个节点,L为大于或等于2的正整数。图1所示的分布式对象存储系统,具有5个节点,即L等于5。

可以被配置为该节点的设备,可以是服务器、计算机或者其它具有计算能力的设备。另外,本发明实施例对该节点在分布式对象存储系统中的角色,不做限定;例如,该分布式对象存储系统可以是分布式文件系统(Distributed File System,DFS),该节点在DFS中可以是名称节点(name node),或者可以是数据节点(data node)。

本发明实施例中,该节点可以响应输入/输出(Input/Output,I/O)请求,该I/O请求可以是写请求或者读请求。如果I/O请求为写请求,则该节点将该写请求写入该节点的编辑日志(edit log)中;后续在响应该编辑日志中的写请求时,将该写请求指定的数据写入该节点的内存中,以便将该内存中的数据写入本地的存储介质中。如果I/O请求为读请求,则该节点在响应该读请求时从该节点的存储介质中获取该读请求指定的数据。可选地,存储介质可以是磁盘,硬盘或者其它可以存储数据的介质。

L个节点包括M个第一节点,M为大于或等于1的正整数。以图1为例,第一节点101为M个第一节点中的一个第一节点,如果M等于1,则不存在图1中虚线所示的第一节点102,如果M大于1,则存在图1中虚线所示的第一节点102。

从分布式对象存储系统中选择第一节点的方式可以是:从数量较多的同构节点中选择第一节点,或者选择存储容量较大的节点作为第一节点,或者选择IOPS较大的节点作为第一节点,或者使用哈希算法选择第一节点。

本发明实施例中,该第一节点是指可以用于将多个写请求连续排列的节点;其中,连续排列可以是指该多个写请求中间没有间隔任一读请求。

另外,第一节点还将第一写请求向第二节点发送。该第一写请求为连续排列后的该多个写请求中属于预设时间段内的所有写请求。

应知,该预设时间段,是指用户或者程序预先设定的时间区间。可选地,本发明实施例可以从时间轴维度,按照时间先后顺序,划分出连续的多个时间区间;所述多个时间区间中的不同时间区间可以具有相同的时间长度,或者具有不同的时间长度。所述多个时间区间一一对应地为多个预设时间段,一个时间区间对应一个预设时间段。

可选地,预设时间段的时间长度可以调整,例如根据写请求的延迟调整;如果预设时间段的时间长度较长,响应该预设时间段对应的第一写请求的响应延迟相对较长;如果预设时间段的时间长度较短,响应该预设时间段对应的第一写请求的响应延迟相对较短。

L个节点包括N个第二节点,N为大于或等于1的正整数。以图1为例,第二节点103为N个第二节点中的一个第二节点,如果N等于1,则不存在图1中虚线所示的第二节点104,如果N大于1,则存在图1中虚线所示的第二节点104。

在本发明实施例中,对于该第一写请求(即预设时间段内的所有写请求),L个节点中用于响应该第一写请求的所有节点构成响应节点集合;其中,响应节点集合包括N个第二节点。如果该第一节点也用于响应该第一写请求,则该响应节点集合包括该第一节点;如果该第一节点不用于响应该第一写请求,则该响应节点集合不包括该第一节点。

应知,不同预设时间段对应不同第一写请求。用于响应不同第一写请求的响应节点集合可能不同,具体地,用于响应不同第一写请求的响应节点集合所包括的节点可能不同;因此第二节点可能变化,N可能变化,以及第一节点对于不同第一写请求的响应角色也不同,其中,响应角色可以包括响应和不响应两种角色。以图1为例举例说明,第一预设时间段和第二预设时间段为不同预设时间段;用于响应该第一预设时间段对应的第一写请求的4个节点包括第一节点101、第二节点103和第二节点104,因此N等于2;用于响应该第二预设时间段对应的第一写请求的1个节点为节点105,因此N等于1,并且用于响应该第一预设时间段对应的第一写请求的第二节点(第二节点103和第二节点104)不再用于响应该第二预设时间段对应的第一写请求,用于响应该第二预设时间段对应的第一写请求的第二节点为节点105;可见用于不同处理不同第一写请求的第二节点可能为不同节点,用于处理不同第一写请求的第二节点的节点个数也可能变化,以及第一节点对于不同第一写请求可能为不同响应角色。

方法实施例一

参见图2,本实施例提供了一种响应写请求的方法,该方法应用于在图1所示的分布式对象存储系统。为便于描述,下面从单个第一节点和单个第二节点的角度描述该响应写请求的方法的各步骤,例如步骤S201、步骤S202、步骤S203、步骤S204和步骤S205。

步骤S201,第一节点接收多个写请求。

具体地,用于访问分布式对象存储系统的客户端可以有一个或多个。所述多个写请求中的所有写请求都来源于客户端;可选地,所述多个写请求中的不同写请求可能来源于同一客户端,或者所述多个写请求中的不同写请求可能来源于不同客户端。

第一节点接收写请求的方式有三种。

第一种接收方式,第一节点仅接收所有客户端发送的写请求。具体地,所有客户端的写请求都仅向M个第一节点中的任一第一节点发送。

第二种接收方式,第一节点仅接收L个节点中除了M个第一节点以外的所有节点转发的来源于客户端的写请求。具体地,所有客户端的写请求都仅向L个节点中除了M个第一节点以外的节点发送;其中,客户端的一个写请求,仅向L个节点中除了M个第一节点以外的一个节点发送。L个节点中除了M个第一节点以外的所有节点,都不处理从客户端接收的写请求,直接将各自接收的写请求统一向M个第一节点中的任一第一节点发送。

第三种接收方式,第一节点接收客户端的写请求,还接收L个节点中除了M个第一节点以外的所有节点转发的来源于客户端的其它写请求。具体地,所有客户端将写请求直接发送至M个第一节点中的任一第一节点,或者将写请求向L个节点中除了M个第一节点以外的节点发送;L个节点中除了M个第一节点以外的所有节点,都不处理从客户端接收的写请求,直接将各自接收的写请求统一向M个第一节点中的任一第一节点发送。这样,第一节点接收的所有写请求,可能包括客户端直接发送的,还可能包括L个节点中除了M个第一节点以外的节点转发的来源于客户端的写请求。

步骤S202,第一节点将该多个写请求连续排列。

具体地,该多个写请求中的每个写请求,各自具有接收时间;每个写请求的接收时间是指第一节点接收到该写请求的时间。具体地,如果第一节点接收到客户端的写请求,则该接收时间具体为接收到客户端的该写请求的时间;如果第一节点接收到其它节点(L个节点中除了M个第一节点以外的节点)转发的写请求,则该接收时间具体为接收到其它节点转发的该写请求的时间。

由于第一节点接收写请求有先后顺序,所以该多个写请求中的每个写请求被第一节点接收的时间都不同。为保证数据的正确性,客户端先接收的写请求需要先处理;因此,第一节点在执行步骤S202时可以是按照该多个写请求各自的接收时间的时间先后顺序,将该多个写请求连续排列。

可选地,所述第一节点具有写请求队列,该写请求队列用于缓存写请求。具体地,第一节点在执行步骤S202时可以是按照该多个写请求各自的接收时间的时间先后顺序,依次将该多个写请求添加到该写请求队列中,实现在写请求队列中的该多个写请求是连续排列的。可选地,写请求队列配置有先进先出原则;该先进先出原则具体是指:对于相邻的两个写请求而言,先添加入该写请求队列的写请求会被先取出,相对地,后添加入该写请求队列的写请求需要等待先添加的写请求被取出后才能被取出。

具体地,第一节点在步骤S202中将该多个写请求连续排列后,在一个预设时间段结束时,如果有属于该个预设时间段内的写请求,则从连续排列的多个写请求中取出该预设时间段内的所有写请求,该预设时间段内的所有写请求构成一个第一写请求。可见,该第一写请求包含连续排列的该多个写请求中属于该预设时间段内的所有写请求。另外,在该个预设时间段结束时,执行步骤S203。

应知,在该个预设时间段结束时,如果没有属于该个预设时间段内的写请求,则不会生成该个预设时间对应的第一写请求,从而不会执行步骤S203来发送该第一写请求。

步骤S203,第一节点将第一写请求向所有第二节点发送。

对于第一写请求而言,L个节点中用于响应该第一写请求的所有节点构成响应节点集合。应知,不同该第一写请求对应的响应节点集合可能不同;具体地,如果不同该第一写请求对应的响应节点集合不同,则在不同响应节点集合中一个响应节点集合包括的至少一个节点不属于另一个响应节点集合。

其中,响应节点集合包括N个第二节点。如果该第一节点也用于响应该第一写请求,则该响应节点集合包括该第一节点;如果该第一节点不用于响应该第一写请求,则该响应节点集合不包括该第一节点

所述第二节点用于将所述第一写请求写入本节点的编辑日志(edit log)。

以此类推,随着时间推移,每在一个预设时间段结束时,如果有属于该个预设时间段内的写请求,会取出该个预设时间段内的所有写请求来构成一个第一写请求,并执行一次步骤S203将该个预设时间段对应的该个第一写请求向第二节点发送。应知,不同预设时间段对应不同第一写请求,用于处理不同第一写请求的节点可能为不同的节点,因此用于处理不同第一写请求的第二节点可能变化。

步骤S204,第二节点将第一写请求写入本节点的编辑日志。

本实施例中,用于响应该第一写请求的响应节点集合,该响应节点集合包括第二节点。

第二节点响应该第一写请求;具体地,第二节点响应该第一写请求中的每个写请求,响应的具体方式包括:将该第一写请求中的每个写请求写入该第二节点的编辑日志。

本发明实施例中,由于预设时间段内的所有写请求是连续排列的,连续排列的写请求中间没有间隔读请求,因此,第二节点可以连续将该第一写请求包含的多有写请求写入编辑日志。从而第二节点仅使用需一次磁盘I/O便能完成将该预设时间内的写请求写入编辑日志,提高了第二节点响应预设时间段内的写请求的响应效率,从而提高了第二节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

可选地,第二节点可以将该编辑日志存储至第二节点的本地存储介质中。后续,第二节点可以响应该编辑日志中的写请求,响应的具体方式包括:先将该写请求指定的数据写入第二节点的内存,再将内存中的该数据写入本地存储介质中。

步骤S205,第一节点将第一写请求写入本节点的编辑日志。

具体地,如果该第一节点属于用于响应该第一写请求的响应节点集合中的一个节点,该第一节点响应该第一写请求。该第一节点响应该第一写请求与第二节点响应该第一写请求的响应方式一样,在此不再赘述。例如该第一节点响应该第一写请求,包括将该第一写请求写入第一节点的编辑日志。

本发明实施例中,第一节点响应该预设时间段内的至少一个写请求,也是连续响应的,具体包括连续地将该预设时间段内的至少一个写请求写入编辑日志;从而第一节点仅使用需一次磁盘I/O便能完成将该预设时间内的该至少一个写请求写入编辑日志,提高了第一节点响应预设时间段内的该至少一个写请求的响应效率,从而提高了第二节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

应知,在实现响应写请求的方法时,如果第一节点的数量为多个,每个第一节点的工作原理相同,因此不再赘述每个第一节点的工作原理,每个第一节点的工作原理参加上述对第一节点的工作原理的相关描述;另外,如果第二节点的数量为多个,每个第二节点的工作原理相同,因此不再赘述每个第二节点的工作原理,每个第二节点的工作原理参加上述对第二节点的工作原理的相关描述。

从M个第一节点的角度来看,M个第一节点在步骤S201中采用第一种接收方式或者第二种接收方式或者第三种接收方式接收写请求后,M个第一节点各自汇集各自接收到的写请求,各自执行步骤202按照时间顺序依次生成第一写请求,每个第一节点在每个预设时间段对应生成一个第一写请求;M个第一节点各自执行步骤S203向第二节点发送各自生成的第一写请求;应知,不用第一写请求可能是向不同第二节点发送。

一种可选实施方式,M个第一节点在步骤S201中采用第一种接收方式接收写请求,具体仅接收所有客户端的写请求,并且不接收其它节点的写请求。

后续,M个第一节点不响应所有写请求,即不将写请求写入本节点的编辑日志中;M个第一节点均将写请求发送至第二节点来响应,具体是以发送第一写请求(包含预设时间段的所有写请求)的方式发送。

一种可选实施方式,M个第一节点在步骤S201中采用第二种接收方式接收写请求,具体仅接收L个节点中除了M个第一节点以外的所有节点转发的来源于客户端的写请求;本可选实施方式中,所有客户端仅向L个节点中除了M个第一节点以外的节点发送写请求,不直接向M个第一节点发送写请求。

后续,M个第一节点不响应所有写请求,即不将写请求写入本节点的编辑日志中;M个第一节点均将写请求发送至第二节点来响应,具体是以发送第一写请求(包含预设时间段的所有写请求)的方式发送。

一种可选实施方式,M个第一节点在步骤S201中采用第三种接收方式接收写请求,具体仅接收所有客户端的写请求,并且接收其它节点的写请求;其中,其它节点在接收到客户端的写请求时,也仅将该写请求向M个第一节点转发,不直接响应该写请求。

一种可选实施方式,M个第一节点在步骤S201中采用第二种接收方式或者第三种接收方式接收写请求;具体地,第三节点接收任一客户端的写请求,该第三节点为L个节点中除了M个第一节点以外的任一节点。

第三节点具有写请求队列。以单个第三节点为例,该第三节点接收客户端的写请求后,将该写请求添加到该第三节点的写请求队列中。这样,第三节点可以连续地从写请求队列获取到需要向第一节点发送的写请求,从而提高了转发写请求的效率;从而也避免转发写请求时,若多个写请求中间间隔有读请求,还需要响应该读请求后才能继续获取待转发的写请求。

可选地,第三节点将该写请求添加到该写请求队列的具体实现方式可以是,第三节点按照所述第三节点接收该多个写请求各自的接收时间的时间先后顺序,依次将该多个写请求添加到该写请求队列中。

可选地,第三节点将该写请求添加到该写请求队列的具体实现方式可以是,第三节点每接收到一个写请求,便将该个写请求添加到该写请求队列中;即,第三节点按照接收写请求的接收时间依次将多个写请求添加到该写请求队列中。

本可选实施方式中,第三节点不直接响应该写请求队列中的写请求(即从客户端接收的写请求),而是将该写请求队列中的写请求向第一节点发送。

一种可选实施方式,第一节点具有写请求队列和读请求队列。第一节点将接收的写请求添加入写请求队列中,添加的可选实现方式参见上述。另外,第一节点将接收的读请求添加入读请求队列中,响应该读请求队列中的读请求,具体的响应方式可以是第一节点根据该读请求队列中的读请求,从第一节点的存储介质中读取数据;这样,第一节点可以连续从读请求队列获取到读请求,进而连续响应读请求队列中的读请求,提高了响应读请求的效率。

本可选实施方式中,第一节点可以将写请求和读请求在写请求队列和读请求队列分别缓存,在处理写请求队列中的写请求时是连续处理写请求(处理的方式可以是生成第一写请求),同理在响应读请求队列中的读请求时是连续响应读请求。相对于现有技术将写请求和读请求随机排列的情况,本可选实施方式可以提高写请求的处理效率,提高读请求的响应效率;并且,连续处理的读请求的量越大,写请求的处理效率越高,连续处理的写请求的量越大,读请求的响应效率越高。

一种可选实施方式,L个节点中的每个节点,均具有写请求队列和读请求队列。每个节点的写请求队列的工作原理相同,具体参见上面对写请求队列(例如第一节点的写请求队列或者第三节点的写请求队列)的相关描述。每个节点的读请求队列的工作原理相同,具体参见上面对第一节点的读请求队列的相关描述。

方法实施例二适用的分布式对象存储系统

分布式对象存储系统包括L个节点,L为大于或等于2的正整数。图3所示的分布式对象存储系统,具有5个节点,即L等于5。

方法实施例二适用的分布式对象存储系统,与方法实施例一适用的分布式对象存储系统类似。例如,方法实施例二适用的分布式对象存储系统中的节点,与方法实施例一适用的分布式对象存储系统中的节点,在分布式系统的实现方式和工作方式均类似。

不同的是,在方法实施例二适用的分布式对象存储系统中,L个节点中的任一节点,均可以接收客户端发送的写请求,还可以接收L个节点中出该任一节点以外的其它节点转发的来源于客户端的其它写请求;其中,该其它写请求是客户端向该其它节点发送并且不会直接向该任一节点发送的。另外,该其它节点在接收到客户端发送的该其它写请求时,会响应该其它写请求,并且还将该其它写请求向用于响应该其它写请求的节点(包括该任一节点)发送。

另外,L个节点中的该任一节点,响应从客户端直接接收的写请求,并将该写请求向用于响应该写请求的所有节点中除了该任一节点的其它节点发送。

方法实施例二

参见图4,本实施例提供了一种响应写请求的方法,该方法应用于在图3所示的分布式对象存储系统。为便于描述,下面从第一节点的角度描述该响应写请求的方法的各步骤,例如步骤S401、步骤S402和步骤S403。

该第一节点为L个节点中的任一节点。第二节点为L个节点中除了该个第一节点以外的任一节点。

步骤S401,第一节点接收客户端发送的第一写请求,和接收第二节点转发的第二写请求。

其中,该第一写请求为客户端直接向该第一节点发送的写请求。因此,该第一写请求不会经过第二节点转发。

该第二写请求为所有第二节点转发的来源于客户端的写请求。本实施例中,客户端向第二节点发送第二写请求,第二节点将该第二写请求向用于响应该第二写请求的所有节点(包括第一节点)发送;另外,第二节点还响应该第二写请求,响应的方式可以包括将该第二写请求写入该第二节点的编辑日志中。

应知,如果写请求只需要一个节点响应,则该写请求会被客户端直接发送至用于响应该写请求的该个节点,即该写请求属于第一写请求;因此在只需要一个节点响应写请求的场景,不存在第二写请求。

步骤S402,第一节点将第一写请求和第二写请求连续排列,得到连续排列的多个写请求。

连续排列的定义参见方法实施例一适用的分布式对象存储系统中对连续排列的定义。

第一节点在步骤S402中实现连续排列的实现方式,与上述在方法实施例一的步骤S202中实现连续排列的实现方式类似,具体参见上面对步骤S202实现连续排列的具体描述,在此不再赘述。

可选地,所述第一节点根据所述第一写请求的接收时间和所述第二写请求的接收时间,按照接收时间的先后顺序将所述第一写请求和所述第二写请求连续排列。其中,所述第一写请求的接收时间是指所述第一节点接收所述第一写请求的时间。所述第二写请求的接收时间是指所述第一节点接收所述第二写请求的时间。

所述第一节点按照接收时间的先后顺序将写请求连续排列的实现方式,具体参见上述在方法实施例一中的相应描述,在此不再赘述。

可选地,所述第一节点根据所述第一写请求的接收时间和所述第二写请求的接收时间,按照接收时间的先后顺序将所述第一写请求和所述第二写请求依次添加到所述第一节点的写请求队列,所述第一节点的写请求队列用于缓存写请求。

所述第一节点按照接收时间的先后顺序将写请求依次添加到写请求队列来实现连续排列的实现方式,具体参见上述在方法实施例一中的相应描述,在此不再赘述。

步骤S403,第一节点将预设时间段内的所述连续排列的多个写请求写入第一节点的编辑日志。

该预设时间段的定义和该预设时间段的划分方法,参见方法实施例一和方法实施例一适用的分布式对象存储系统中的相应描述,在此不再赘述。

在本实施例中,该预设时间段内的多个写请求,可能包括第一写请求,也可能包括第二写请求。第一节点将写请求该预设时间段内的连续排列的多个写请求写入第一节点的编辑日志的实现方式,与方法实施例一中将第一写请求写入编辑日志的实现方式类似,在此不再赘述,具体参见方法实施例一中对将第一写请求写入编辑日志的实现方式的相关描述。

本实施例中,由于预设时间段内的所有写请求是连续排列的,连续排列的多个写请求中间没有间隔读请求,因此,第一节点可以连续将该多有写请求写入编辑日志。从而第一节点仅使用需一次磁盘I/O便能完成将该预设时间内的多个写请求写入编辑日志,提高了第一节点响应预设时间段内的写请求的响应效率,从而提高了第一节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

如果第一写请求只需要一个节点(即第一节点)响应,则第一节点响应该第一写请求后,不会将该第一写请求发送至L个节点中的其它节点(即第二节点)。

如果用于响应该第一写请求的节点包括多个节点,则本实施例执行步骤S404。

步骤S404,若所述第一节点接收到所述预设时间段内的所述第一写请求,则所述第一节点将预设时间段内的所述第一写请求向所有第三节点发送。

本实施例中,用于响应该第一写请求的所有节点包括第一节点和第三节点,所述第三节点为用于响应该第一写请求的所有节点中除了第一节点以外的任一节点。可见,每个第三节点均属于第二节点,即所有第三节点中的每个第三节点为所有第二节点中的节点。

第三节点响应该第一写请求的方式可以包括将所述第一写请求写入本节点的编辑日志。

本实施例中,第二节点(包括第三节点)响应写请求的实现方式与第一节点响应写请求的实现方式同原理,在此不再赘述。以一个第二节点为例,该个第二节点接收客户端的写请求,以及接收其它节点(包括第一节点和其它第二节点)的写请求;该个第二节点将接收的所有写请求连续排列,并将预设时间段内的连续排列的多个写请求写入该个第二节点的编辑日志;如果该个第二节点接收到客户端发送的属于该预设时间段内的写请求,则该个第二节点将客户端发送的属于该预设时间段内的写请求向第四节点发送,第四节点是指用于响应客户端发送的属于该预设时间段内的写请求的所有节点中除了该个第二节点的任一节点。

可见,分布式系统中的L个节点中,每个节点的响应写请求的原理均与第一节点响应写请求的原理相同;即,每个节点直接响应从客户端接收的写请求,并将该写请求向用于响应该写请求的其它节点转发,以便其它节点响应该请求。另外,每个节点还接收需要其响应的其它节点转发的写请求,将接收的该转发的写请求与从客户端直接接收的写请求连续排列后依次响应。因此,每个节点均是连续响应预设时间段内的写请求,提高了每个节点响应写请求的响应效率,从而提高了每个节点的读写性能,进而提高了整个分布式对象存储系统的读写性能。

一种可选实施方式,L个节点中的每个节点(第一节点或者第二节点),均具有写请求队列和读请求队列。每个节点的写请求队列的工作原理相同,具体参见方法实施例一和方法实施例二对写请求队列的相关描述。每个节点的读请求队列的工作原理相同,具体参见方法实施例一中对读请求队列的相关描述。

软件实现的装置实施例一

本发明实施例提供一种响应写请求的装置。

该装置应用于方法实施例一适用的分布式对象存储系统,所述分布式对象存储系统包括多个节点(上述方法实施例一示意为L个节点),所述多个节点包括至少一个第一节点和至少一个第二节点。

所述装置部署在所述第一节点;具体的部署方式是:在所述第一节点上部署所述装置包括的用于执行上述方法实施例一提供的响应写请求的方法的各功能单元。应知,本发明实施例对各功能单元的划分方式在此不做限定。

下面提供一种与上述方法实施例一提供的响应写请求的方法对应的功能单元作为举例,参见图5,所述装置500包括接收单元501、排列单元502和发送单元503。

接收单元501,用于接收多个写请求;

排列单元502,用于将所述多个写请求连续排列;

发送单元503,用于在所述多个写请求连续排列后,将第一写请求向所有所述第二节点发送,所述第二节点用于将所述第一写请求写入本节点的编辑日志,所述第一写请求为连续排列的所述多个写请求中属于预设时间段内的所有写请求。

可选地,所述排列单元502,用于将所述多个写请求连续排列,包括:

所述排列单元502,用于按照所述多个写请求各自的接收时间的先后顺序,将所述多个写请求依次添加到所述第一节点的写请求队列,所述第一节点的写请求队列用于缓存写请求。

可选地,所述装置还包括:响应单元504,用于若所述第一节点属于响应所述第一写请求的一个节点,则将所述第一写请求写入本节点的编辑日志。

可选地,所述接收单元501,用于接收多个写请求,包括:

所述接收单元501,用于接收多个客户端中的任一客户端发送的第二写请求;和/或,用于接收第三节点转发的第三写请求,所述第三节点为所述多个节点中除所述第一节点以外的任一节点,所述第三写请求由所述多个客户端中的任一客户端向所述第三节点发送;

其中,所述第二写请求与所述第三写请求为不同写请求。

可选地,所述第三节点具有写请求队列;所述第三节点用于将所述多个客户端向所述第三节点发送的所述第三写请求添加到所述第三节点的写请求队列,以及将所述第三节点的写请求队列中的所述第三写请求向所述第一节点发送。

可选地,所述接收单元501,还用于接收多个客户端发送的读请求;

所述排列单元502,用于将所述读请求添加入所述第一节点的读请求队列;

所述装置包括:响应单元504,用于响应所述第一节点的读请求队列中的读请求。

软件实现的装置实施例二

本发明实施例提供一种响应写请求的装置。

该装置应用于方法实施例二适用的分布式对象存储系统,所述分布式对象存储系统包括多个节点(上述方法实施例一示意为L个节点),第一节点为所述多个节点中的任一节点。

所述装置部署在所述第一节点;具体的部署方式是:在所述第一节点上部署所述装置包括的用于执行上述方法实施例二提供的响应写请求的方法的各功能单元。应知,本可选方式对各功能单元的划分方式在此不做限定。

下面提供一种与上述方法实施例二提供的响应写请求的方法对应的功能单元作为举例,参见图6,所述装置600包括接收单元601、排列单元602、响应单元603和发送单元604。

接收单元601,用于接收第一写请求和第二写请求,所述第一写请求为客户端向所述第一节点发送的写请求,所述第二写请求为所有第二节点向所述第一节点发送的写请求,所述第二节点为所述多个节点中除了所述第一节点以外的任一节点;

排列单元602,用于将所述第一写请求和所述第二写请求连续排列,得到连续排列的多个写请求;

响应单元603,用于将预设时间段内的所述连续排列的多个写请求写入第一节点的编辑日志;

发送单元604,用于若所述第一节点接收到所述预设时间段内的所述第一写请求,则所述第一节点将预设时间段内的所述第一写请求向所有第三节点发送,所述第三节点用于将所述第一写请求写入本节点的编辑日志,所述所有第三节点中的每个所述第三节点为所述所有第二节点中的一个节点。

可选地,所述排列单元602,用于将所述第一写请求和所述第二写请求连续排列,包括:

所述排列单元602,用于根据所述第一写请求的接收时间和所述第二写请求的接收时间,按照接收时间的先后顺序将所述第一写请求和所述第二写请求依次添加到所述第一节点的写请求队列,所述第一节点的写请求队列用于缓存写请求。

可选地,所述接收单元601,用于接收客户端发送的读请求;

所述排列单元602,用于将所述读请求添加入所述第一节点的读请求队列;

所述响应单元603,用于响应所述第一节点的读请求队列中的读请求。

可选地,所述第二节点用于将本节点的所述第一写请求写入本节点的编辑日志。

第一节点的硬件实施例

分布式对象存储系统部署在多个节点上。具体执行方法实施例一或方法实施例二提供的响应写请求的方法的硬件主体是该多个节点中的任一第一节点;或者,部署上述装置实施例一或装置实施例二提供的响应写请求的装置的硬件主体可以是该第一节点。该第一节点在图7中示意为第一节点700。

参见图7,第一节点700包括至少一个处理器701、存储器702和通信接口703;所述至少一个处理器701、所述存储器702和所述通信接口703均通过总线704连接;

所述存储器702,用于存储计算机执行指令;

所述至少一个处理器701,用于执行所述存储器702存储的计算机执行指令,使得所述第一节点700通过所述通信接口703与分布式对象存储系统中的其它节点进行数据交互来执行上述方法实施例提供的响应写请求的方法,或者使得所述第一节点700通过所述通信接口703与分布式对象存储系统中的其它节点进行数据交互来实现响应写请求的装置的部分或者全部功能。

至少一个处理器701,可以包括不同类型的处理器701,或者包括相同类型的处理器701;处理器701可以是以下的任一种:中央处理器(Central Processing Unit,简称CPU)、ARM处理器、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、专用处理器等具有计算处理能力的器件。一种可选实施方式,所述至少一个处理器701还可以集成为众核处理器。

存储器702可以是以下的任一种或任一种组合:随机存取存储器(Random Access Memory,简称RAM)、只读存储器(read only memory,简称ROM)、非易失性存储器(non-volatile memory,简称NVM)、固态硬盘(Solid State Drives,简称SSD)、机械硬盘、磁盘、磁盘整列等存储介质。

通信接口703用于第一节点700与其它设备(例如分布式对象存储系统中的其它节点)进行数据交互。通信接口703可以是以下的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。

该总线704可以包括地址总线、数据总线、控制总线等,为便于表示,图7用一条粗线表示该总线。总线704可以是以下的任一种或任一种组合:工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外设组件互连标准(Peripheral Component Interconnect,简称PCI)总线、扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等有线数据传输的器件。

分布式对象存储系统的实施例

本实施例提供一种分布式对象存储系统,该分布式对象存储系统可以是方法实施例一所适用的分布式对象存储系统,如图1所示。可选地,该分布式对象存储系统中的第一节点执行方法实施例一提供的响应写请求的方法。可选地,在该分布式对象存储系统中的第一节点上部署有装置实施例一提供的响应写请求的装置。

本实施例提供一种分布式对象存储系统,该分布式对象存储系统可以是方法实施例二所适用的分布式对象存储系统,如图2所示。可选地,该分布式对象存储系统中的第一节点执行方法实施例二提供的响应写请求的方法。可选地,在该分布式对象存储系统中的第一节点上部署有装置实施例二提供的响应写请求的装置。

应当理解,上述“第一节点”中的“第一”,上述“第二节点”中的“第二”,上述“第三节点”中的“第三”,上述“第四节点”中的“第四”,仅用于相互区分;类似地,上述“第一写请求”中的“第一”,上述“第二写请求”中的“第二”,上述“第三写请求”中的“第三”,上述“第四写请求”中的“第四”,也仅用于相互区分。即,“第一”、“第二”,“第三”和“第四”并不代表特指,也不代表它们之间存在顺序关系。在不脱离本发明实施例保护范围的情况下,可以对互换名称或者改名称。例如,“第一节点”、“第二节点”互换名称,或者将“第一节点”改称为“第五节点”和将“第二节点”改称为“第六节点”。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

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