数据存储控制方法、数据存储方法、数据获取方法及装置与流程

文档序号:18969138发布日期:2019-10-28 23:46阅读:196来源:国知局
数据存储控制方法、数据存储方法、数据获取方法及装置与流程

本发明涉及数据存储技术领域,尤其涉及一种数据存储控制方法、数据存储、数据获取方法及装置。



背景技术:

分布式存储系统常采用分布式哈希表(Distributed Hash Table,简称DHT)算法将集群内的存储资源进行划分。整个分布式集群的哈希空间从0~232-1,这个整数空间被等分成N个分区,每个分区包含的哈希值范围相等。每一个数据都以Key标识下发到分布式存储系统进行存储,每个Key经过哈希计算得到一个哈希值,该哈希值会映射到哈希空间的某个分区上。

如图1所示,4个物理节点提供的哈希空间被等分为20个分区,从P0~P19,物理节点与虚拟节点的对应关系如图所示。数据标识key的取值为k1,该k1经过哈希计算后被映射到P0分区。A~T代表的是虚拟节点,每个分区中的数据存储在对应的虚拟节点上。比如,映射到P0分区的数据存储在A节点上,映射到P1分区的数据存储到B节点上。

分布式存储系统中可采用Erasure Code方式进行数据冗余存储,一个Erasure Code组(即EC组)对应着集群中的一个分区。一个EC组内的成员节点中包括主节点和普通节点,主节点可对多个客户端或者系统前后台请求并发进行控制。在写数据流程中,客户端将数据对象发送到主节点,主节点根据系统采用的EC算法将数据对象切分成数据分片,计算校验分片,然后由主节点将产生的数据分片和校验分片发送到EC组内的其他节点进行存储。如图2所示,标识为key=k1的数据ABCDEFGHI映射到P0分区,P0分区对应的EC组中的主节点OSD1将其拆分成3个分片ABC、DEF、GHI,根据EC算法(如里德·所罗门算法)计算出校验分片YXY、QGC,并将这3个数据分片和2个校验分片分别存储于该EC组中的所有成员节点(OSD1~OSD5)中。在读数据流程中,客户端将读数据请求发送至主节点,主节点向EC组内的其他节点获取需要的数据分片,并向客户端返回读取成功的数据。

上述读数据流程中,由主节点对客户端发送的数据进行分片和分发,上述读数据流程中,由主节点向EC组成员获取数据,导致数据流量集中在主节点,主节点开销过大。



技术实现要素:

本发明实施例提供了一种数据存储控制方法及装置。

本发明实施例提供的数据存储控制方法,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,该方法包括:

EC组内的主节点接收客户端发送的数据存储权限请求;

所述主节点根据所述数据存储权限请求,为所述客户端的数据存储权限请求分配操作时序标识,所述操作时序标识被所述客户端用于向所述EC组内的成员节点发送数据存储请求;

所述主节点向所述客户端返回数据存储权限响应,所述响应中携带有分配的操作时序标识。

可选地,所述EC组内的主节点接收客户端发送的数据存储权限请求之后、根据所述数据存储权限请求之前,还包括:针对所述数据存储权限请求所对应的数据标识,所述主节点确定是否有相同数据标识的数据存储操作还未完成;若有,则将当前接收到的所述数据存储权限请求挂起,并在所述还未完成的数据存储操作完成后,解除所述数据存储权限请求解除挂起。

可选地,所述EC组内的主节点接收客户端发送的数据存储权限请求之后、根据所述数据存储权限请求之前,还包括:所述主节点确定所述EC组对应的分区是否可用;若不可用,则所述主节点向所述客户端返回数据存储权限分配失败的响应。

可选地,所述主节点向所述客户端返回数据存储权限响应之后,还包括:所述主节点接收所述客户端发送的数据存储操作完成通知,所述数据存储操作完成通知是所述客户端根据所述操作时序标识向所述EC组内的成员节点发送数据存储请求后,确认所述EC组内的成员节点完成数据存储操作之后发送的。

可选地,所述操作时序标识为操作时序编号,操作时序编号按照分配的先后顺序递增。

本发明实施例提供的主节点设备,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,其特征在于,包括:

第一接收模块,用于接收客户端发送的数据存储权限请求;

分配模块,用于根据所述数据存储权限请求,为所述客户端的数据存储权限请求分配操作时序标识,所述操作时序标识被所述客户端用于向所述EC组内的成员节点发送数据存储请求;

发送模块,用于向所述客户端返回数据存储权限响应,所述响应中携带有分配的操作时序标识。

可选地,所述分配模块还用于:在接收客户端发送的数据存储权限请求之后、针对所述数据存储权限请求所对应的数据标识,确定是否有相同数据标识的数据存储操作还未完成;若有,则将当前接收到的所述数据存储权限请求挂起,并在所述还未完成的数据存储操作完成后,解除所述数据存储权限请求解除挂起。

可选地,所述分配模块还用于:在接收客户端发送的数据存储权限请求之后、根据所述数据存储权限请求之前,确定所述EC组对应的分区是否可用;若不可用,则向所述客户端返回数据存储权限分配失败的响应。

可选地,还包括:第二接收模块,用于在向所述客户端返回数据存储权限响应之后,接收所述客户端发送的数据存储操作完成通知,所述数据存储操作完成通知是所述客户端根据所述操作时序标识向所述EC组内的成员节点发送数据存储请求后,确认所述EC组内的成员节点完成数据存储操作之后发送的。

可选地,还包括数据恢复模块,用于:接收客户端设备发送的数据获取请求,所述数据获取请求中携带有请求获取的数据的标识以及数据恢复指示;根据所述数据恢复指示对所在EC组内的成员节点的进行数据恢复;在数据恢复成功后,获取请求获取的数据;返回数据恢复成功响应,所述数据恢复成功响应中携带有获取到的数据。

可选地,所述操作时序标识为操作时序序列号,操作时序序列号按照分配的先后顺序递增。

本发明实施例提供的用于通信的装置,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,该装置包括:该装置包括:收发器、处理器和存储器;

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

所述处理器,耦合到所述存储器,用于读取所述存储器存储的计算机程序指令,并执行上述数据存储控制方法。

本发明的上述实施例中,EC组内的主节点接收客户端发送的数据存储权限请求后,为所述客户端的数据存储权限请求分配操作时序标识,并向客户端返回数据存储权限响应,所述响应中携带有分配的操作时序标识。由于操作时序标识被客户端用于向EC组内的成员节点发送数据存储请求,从而一方面由主节点同一对数据存储进行管理,另一方面使得客户端可以直接将数据存储于该EC组内的成员节点,与现有技术相比,避免了将数据发送给主节点的过程,从而可以减少主节点的开销。

本发明实施例提供了一种数据存储方法及装置。

本发明实施例提供的数据存储方法,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,该方法包括:

客户端根据接收到的第一数据存储请求,为请求存储的数据确定对应的EC组;

所述客户端向所述EC组内的主节点发送数据存储权限请求,接收所述主节点返回的数据存储权限响应,所述响应中携带有为所述客户端的数据获取权限请求分配的操作时序标识;

所述客户端向所述EC组内的成员节点发送第二数据存储请求,所述数据存储请求中携带有所述操作时序标识以及所述待存储的数据对应的分片。

可选地,所述第二数据存储请求中携带的分片包括数据分片或校验分片;所述客户端向所述EC组内的成员节点发送第二数据存储请求之前,还包括:所述客户端对所述待存储的数据进行分片,并根据所得到的数据分片计算得到校验分片。

可选地,所述客户端为待存储的数据确定对应的EC组,包括:所述客户端根据请求存储的数据的标识,确定与该标识对应的分区,并根据确定出的分区确定对应的EC组。

可选地,所述客户端向所述EC组内的成员节点发送第二数据存储请求之后,还包括:所述客户端接收所述EC组内的成员节点根据第二数据存储请求返回的数据存储操作完成通知;所述客户端接收到所述EC组内的所有成员节点返回的数据存储操作完成通知后,向所述EC组内的主节点发送数据存储操作完成通知。

本发明另一实施例提供的客户端设备,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,包括:

第一确定模块,用于根据接收到的第一数据存储请求,为请求存储的数据确定对应的EC组;

权限获取模块,用于向所述EC组内的主节点发送数据存储权限请求,接收所述主节点返回的数据存储权限响应,所述响应中携带有为所述客户端的数据存储权限请求分配的操作时序标识;

数据存储请求模块,用于向所述EC组内的成员节点发送第二数据存储请求,所述数据存储请求中携带有所述操作时序标识以及所述待存储的数据对应的分片。

可选地,所述第二数据存储请求中携带的分片包括数据分片或校验分片;所述客户端设备还包括:数据处理模块,用于在向所述EC组内的成员节点发送第二数据存储请求之前,对所述待存储的数据进行分片,并根据所得到的数据分片计算得到校验分片。

可选地,所述第一确定模块具体用于:根据请求存储的数据的标识,确定与该标识对应的分区,并根据确定出的分区确定对应的EC组。

可选地,所述数据存储请求模块还用于:向所述EC组内的成员节点发送第二数据存储请求之后,接收所述EC组内的成员节点根据第二数据存储请求返回的数据存储操作完成通知,接收到所述EC组内的所有成员节点返回的数据存储操作完成通知后,向所述EC组内的主节点发送数据存储操作完成通知。

本发明另一实施例提供的用于通信的装置,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,该装置包括:收发器、处理器和存储器;

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

所述处理器,耦合到所述存储器,用于读取所述存储器存储的计算机程序指令,并执行上述数据存储方法。

本发明的上述实施例中,客户端根据接收到的第一数据存储请求,为请求存储的数据确定对应的EC组,向该EC组内的主节点发送数据存储权限请求,接收主节点返回的数据存储权限响应,响应中携带有为所述客户端的数据获取权限请求分配的操作时序标识;客户端向EC组内的成员节点发送第二数据存储请求,数据存储请求中携带有该操作时序标识以及所述待存储的数据对应的分片。可以看出,由于操作时序标识被客户端用于向EC组内的成员节点发送数据存储请求,从而一方面由主节点同一对数据存储进行管理,另一方面使得客户端可以直接将数据存储于该EC组内的成员节点,与现有技术相比,避免了将数据发送给主节点的过程,从而可以减少主节点的开销。

本发明实施例提供了一种数据获取方法及装置。

本发明实施例提供的数据获取方法,包括:

客户端根据接收到的第一数据获取请求,为请求获取的数据确定所在的EC组以及该EC分组内的成员节点;

所述客户端从确定出的EC组内的成员节点获取数据;

所述客户端从所述EC组内的所有成员节点获取操作时序标识,并进行比较,若所述EC组内的成员节点的操作时序标识相同,则返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

可选地,若所述EC组内的成员节点的操作时序标识不相同,则还包括:所述客户端向所述EC组内的主节点发送数据获取请求,所述数据获取请求中携带有请求获取的数据的标识以及数据恢复指示,所述数据恢复请求用于触发所述主节点对所在EC组内的成员节点的进行数据恢复以及在数据恢复成功后返回所请求获取的数据;所述客户端接收主节点返回的数据恢复成功响应,所述数据恢复成功响应中携带有获取到的数据;所述客户端返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

可选地,所述客户端向所述EC组内的主节点发送数据恢复请求,包括:所述客户端根据可恢复的分片的最大数量,以及所述EC组内的成员节点的操作时序标识中,分配时间在后且相同的成员节点的数量,判断是否满足恢复条件;若满足恢复条件,则所述客户端向所述EC组内的主节点发送数据恢复请求;若不满足恢复条件,则所述方法还包括:所述客户端返回与所述第一数据获取请求对应的数据获取请求失败响应。

本发明另一实施例提供的客户端设备,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,包括:其特征在于,包括:

第二确定模块,用于根据接收到的第一数据获取请求,为请求获取的数据确定所在的EC组以及该EC分组内的成员节点;

获取模块,用于从确定出的EC组内的成员节点获取数据,以及从所述EC组内的所有成员节点获取操作时序标识;

响应模块,用于对获取到的所述EC组内的所有成员节点的操作时序标识进行比较,若所述EC组内的成员节点的操作时序标识相同,则返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

可选地,所述响应模块还用于:若所述EC组内的成员节点的操作时序标识不相同,则向所述EC组内的主节点发送数据获取请求,所述数据获取请求中携带有请求获取的数据的标识以及数据恢复指示,所述数据恢复请求用于触发所述主节点对所在EC组内的成员节点的进行数据恢复以及在数据恢复成功后返回所请求获取的数据;以及,接收主节点返回的数据恢复成功响应,所述数据恢复成功响应中携带有获取到的数据;以及,返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

本发明另一实施例提供的用于通信的装置,应用于采用Erasure Code存储机制的分布式存储系统,所述分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点,该装置包括:该装置包括:收发器、处理器和存储器;

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

所述处理器,耦合到所述存储器,用于读取所述存储器存储的计算机程序指令,并执行上述数据获取方法。

本发明的上述实施例中,客户端根据接收到的第一数据获取请求,为请求获取的数据确定所在的EC组以及该EC分组内的成员节点,从确定出的EC组内的成员节点获取数据;所述客户端从EC组内的所有成员节点获取操作时序标识并进行比较,若EC组内的成员节点的操作时序标识相同,则返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。可以看出,客户端可以直接从EC组内的成员节点获取数据,并同时可以根据对操作时序标识的比较,保证数据可用性的要求,与现有技术相比,减少了主节点的开销。

附图说明

图1为现有技术中DHT算法示意图;

图2为现有技术中写数据流程示意图;

图3为本发明实施例提供的数据存储流程示意图;

图4为本发明实施例提供的数据存储流程的一个实例示意图;

图5为本发明实施例提供的数据获取流程示意图;

图6为本发明实施例提供的数据获取流程的一个实例示意图;

图7为本发明实施例提供的主节点设备的结构示意图;

图8、9分别为本发明实施例提供的客户端设备的结构示意图;

图10、图11、图12分别为本发明实施例提供的通信装置的结构示意图。

具体实施方式

本发明实施例提供了一种数据存储和获取方法,可应用于采用Erasure Code存储机制的分布式存储系统,该分布式存储系统的存储空间被划分为多个分区,一个分区对应一个EC组,一个EC组内包含主节点以及普通节点。

本发明实施例中,数据可以不全量地转发给EC组内的主节点,数据分片和分发由客户端进行,EC组内的主节点对数据操作权限进行控制,从而降低主节点带宽消耗。

每个EC组的主节点维护该EC组的操作时序标识。操作时序标识用于标识一次数据存储操作。为了简化技术实现,操作时序标识可采用序列号,即操作时序编号。操作时序编号可按照分配的先后顺序递增。

当EC组内的主节点接收到客户端发送的有修改类操作(比如数据存储操作)从客户端下发时,EC组内的主节点给客户端分配一个操作时序编号,由客户端将该操作时序编号和请求数据下发到该EC组内的各个成员节点。操作时序编号类似于数据版本,可以是一个整形数值,EC组的每个修改类IO(输入/输出)都会使操作时序编号增加,当客户端将请求下发到EC组各成员节点后,EC组的各个成员节点根据请求携带的操作时序编号按顺序执行请求,从而保证该EC组所有成员节点执行的所有修改类操作顺序一致,使得每个EC组成员节点上的数据一致。

例如,当客户端有一个写请求时,客户端首先向EC组内的主节点发送获取时序编号的消息(比如该消息可称为数据存储权限请求),EC组内的主节点根据分区当前状态以及是否有请求冲突判定是否给该请求分配操作时序编号并通知客户端。客户端获取时序编号的同时,根据系统采用的EC算法将数据拆分成需要的数据分片,并计算出校验分片,获得分区操作权限后,客户端分别向EC组内的各成员节点发送数据分片或者校验分片对数据进行持久化。

下面结合附图对本发明实施例进行详细描述。以下实施例均以操作时序标识为操作时序编号为例进行描述。

参见图3,为本发明实施例提供的数据存储流程示意图,该流程描述了客户端有数据需要存储时的存储权限获取过程以及在获取到存储权限之后的数据存储过程。如图所示,该流程可包括如下步骤:

步骤301:客户端针对待存储的数据,确定对应的EC组,并向该EC组内的主节点发送数据存储权限请求。

该步骤中,客户端可在接收到数据存储请求后,为请求存储的数据确定对应的EC组。以监控系统为例,该数据存储请求可来自于视频采集设备(比如摄像头)。该数据存储请求也可基于用户或其他应用的数据存储请求而产生,本发明实施例对此不做限制。

在分布式存储系统中,数据可采用<key,value>的数据结构,其中,key为数据标识,value为该数据的内容。该步骤中,客户端对待存储的数据(value)的标识(key)进行哈希运算,将得到的哈希值映射到分布式存储系统的存储空间中的一个分区,该分区所对应的EC组即为该待存储数据的存储位置。客户端发送的数据存储权限请求中可携带有待存储数据的key或者对该key进行哈希运算得到的哈希值。

步骤302:该主节点接收到客户端发送的数据存储权限请求后,为该客户端的数据存储权限请求分配操作时序编号。

该步骤中,主节点在分配操作时序编号之前,可首先对针对并发的数据存储请求进行互斥,以避免冲突。具体地,主节点可首先判断针对该待存储的数据的标识(比如key或key的哈希值),上一个数据存储请求是否正在进行或等待进行(可根据当前接收到的数据存储请求中携带的待存储数据的key或者该key的哈希值来判断:是否有针对相同key或该key的哈希值的数据存储请求),若是,则将当前接收到的数据存储请求挂起,等待该上一个数据存储请求完成后,针对被挂起的数据存储请求解除挂起,为其分配时序编号(比如在该上一个数据存储请求对应的操作时序编号的基础上加1)。当然,针对相同数据的数据存储请求的互斥处理也可在客户端侧进行。具体实施时,主节点可将针对相同数据标识的数据存储请求按照时间先后顺序进行处理,而针对不同数据标识的数据存储请求则可以并行进行处理。

进一步地,主节点在分配操作时序编号之前,可判断该EC组对应的分区是否可用,若不可用,则主节点向客户端返回数据存储权限分配失败的响应。EC组对应的分区的状态可包括:可用状态,不可用状态,数据同步状态等。分区的状态会根据分区包含的物理节点的状态和系统对外提供的数据一致性策略变化,当分区中存在物理节点故障时,系统将根据数据一致性策略判定分区是否能对外提供服务,以决定分区状态。比如,如果分区中存在物理节点故障且无法恢复时,该分区的状态为不可用。

步骤303:该主节点将分配的操作时序编号携带于数据存储权限响应返回给该客户端。

步骤304:客户端接收到主节点返回的数据存储权限响应后,向该EC组内的成员节点发送第二数据存储请求,其中携带有为该客户端的数据获取权限请求分配的操作时序编号以及待存储的数据所对应的分片。

其中,针对待存储的数据进行分片,并根据所得到的数据分片计算得到校验分片的操作在客户端进行,客户端可在接收到数据存储请求后,进行数据分片的操作。

EC组内的成员节点根据接收到的数据存储请求进行数据存储处理,并可进一步地在完成数据存储操作后,向该客户端返回数据存储操作完成通知。进一步地,客户端在接收到EC组内的所有成员节点返回的数据存储操作完成通知后,向该EC组内的主节点发送数据存储操作完成通知。

以图1和图2所示的分布式存储系统为例,如图4所示,客户端接收第一数据存储请求,其中携带有<key,value>,其中,key=k1,value表示为ABCDEFGHI。客户端将value拆分成3个分片ABC、DEF、GHI,计算出校验分片YXY、QGC,并对该k1进行哈希计算,根据哈希值确定对应的分区为P0。客户端向P0分区对应的EC组中的主节点OSD1发送数据存储权限请求(步骤401),该请求中携带有k1的哈希值。主节点OSD1接收到给数据存储权限请求后,首先进行写操作互斥处理,如果针对k1的哈希值,当前没有其他数据存储权限请求还未处理完成,则为该数据存储权限请求分配操作时序编号,并通过数据存储响应返回给该客户端(步骤402)。

客户端接收到数据存储权限响应后,分别向该EC组内的各成员节点发送数据存储请求,其中携带操作时序编号以及向相应节点发送的数据(步骤403),比如,将数据ABC发送给节点OSD1,将数据DEF发送给OSD2,将数据GHI发送给OSD3,以此类推。可选地,如果分片数量少于EC组内的节点数量,则客户端也需要将操作时序编号发送给EC组内的所有成员节点。

通过以上描述可以看出,由主节点同一对数据存储进行管理,客户端可以直接将数据存储于该EC组内的成员节点,与现有技术相比,避免了将数据发送给主节点的过程,从而可以减少主节点的开销。

参见图5,为本发明实施例提供的数据获取流程示意图,该流程描述了客户端请求获取数据的过程。如图所示,该流程可包括如下步骤:

步骤501:客户端根据接收到的第一数据获取请求,为请求获取的数据确定所在的EC组以及该EC分组内的成员节点。

其中,第一数据获取请求中携带有数据标识key,以及数据存储位置相关信息(比如数据存储的偏移值等)。该步骤中,客户端对第一数据获取请求中携带的数据标识key进行哈希运算,根据运算得到的哈希值确定对应的EC分组,根据第一数据获取请求中携带的数据的存储位置相关信息,确定所请求获取的数据分片在该EC组中所在的节点。例如,所请求获取数据的标识key落在分区P1中,承载分区P1的节点为A、B、C、D、E、F,客户端计算出该key的起始地址加上所请求获取的数据的偏移值落在分区P1的C节点,则确定所请求获取的数据分片所在节点为C节点。

步骤502:客户端从确定出的EC组内的成员节点获取数据。

该步骤中,客户端可发送数据获取请求给该EC组内的成员节点,该请求中携带有请求获取的数据的标识以及位置相关信息。

步骤503:客户端从EC组内的所有成员节点获取操作时序标识,并进行比较,若EC组内的成员节点的操作时序标识相同,则转入步骤504。

该步骤中,客户端可向EC组内的所有成员节点发送操作时序编号获取请求。在具体实施时,对于存储有所请求获取的数据的成员节点,客户端可通过一个请求消息从相应节点获取数据以及获取相应节点上的操作时序编号。EC组内的成员节点接收到获取操作时序编号的请求后,将给节点上当前的时序操作编号返回给该客户端。

客户端将EC组内所有成员节点反映的操作时序编号进行比较,只有当EC组所有成员节点的时序编号一致,才表明这个EC组的数据可用。

步骤504:客户端返回与第一数据获取请求对应的响应,该响应中携带有获取到的数据。

若步骤503中的比较结果为EC组内的成员节点的操作时序编号不一致,则表明该EC组的数据不可用。在一些实施例中,客户端可以丢弃获取到的数据,结束本次数据获取流程,客户端返回数据获取失败的响应;在另一些实施例中,客户端也可以触发该EC组内的主节点进行数据恢复处理。

在一些实施例中,客户端触发主节点进行数据恢复的过程可包括:客户端向EC组内的主节点发送数据获取请求,该请求中携带有对所请求获取的数据进行数据恢复的指示信息,以及所请求获取的数据的标识,还可包括存储位置相关信息。主节点根据该请求,触发该EC组内的成员节点对相应数据进行数据恢复,并在数据恢复成功后向客户端返回所请求获取的数据。客户端接收主节点返回的数据后返回与所述第一数据获取请求对应的响应,该响应中携带有获取到的数据。

在另外一些实施例中,客户端也可以先触发主节点进行数据恢复,在数据恢复成功后,再发起数据获取请求。具体地,客户端触发主节点进行数据恢复的过程可包括:客户端向EC组内的主节点发送数据恢复请求,该请求中携带有所请求恢复的数据的标识,还可包括存储位置相关信息。主节点根据该请求,触发该EC组内的成员节点对相应数据进行数据恢复,并在数据恢复成功后向客户端返回数据恢复成员的响应。客户端接收主节点返回的数据恢复成功的响应后,按照图5中描述的方式发起数据获取请求,以及从相应节点获取数据。

可选地上述数据恢复过程中,客户端可首先判断是否满足恢复条件,若满足恢复条件,则向EC组内的主节点发送数据恢复请求,若不满足恢复条件,则客户端返回与第一数据获取请求对应的数据获取请求失败响应。其中,客户端可根据可恢复的分片的最大数量(该数量与采用的存储机制相关),以及EC组内的成员节点的操作时序标识中,分配时间在后且相同的成员节点的数量,判断是否满足恢复条件。对于K个数据分片加M个校验分片模式的EC机制,至少需要K个分片才能恢复数据。举例来说,以采用RAID5存储机制为例,如果操作时序编号最大且相同的成员个数大于可恢复数据的分片数量(此种情况下可恢复数据的分片数量等于2),则满足数据恢复条件,否则不满足数据恢复条件。

以图1和图2所示的分布式存储系统为例,如图6所示,客户端接收数据获取请求,其中携带有数据标识key以及数据偏移量,其中,key=k1。客户端对该k1进行哈希计算,根据哈希值确定对应的分区为P0,根据分区P0确定对应的EC组,并根据数据偏移量确定所请求获取的数据存储在该EC组中的节点OSD1和节点OSD2。客户端向该EC组中的成员节点OSD1和节点OSD2发送数据获取请求,该请求中携带有k1的哈希值,向该EC组中的节点OSD3至节点OSD5发送获取操作时序编号的请求(步骤601a)。节点OSD1和节点OSD2根据接收到的请求进行数据读处理,并返回读取到的数据以及节点上的操作时序编号,节点OSD3至节点OSD5根据接收到的请求返回节点上的操作时序编号(步骤601b)。客户端接收到各节点返回的操作时序编号后,确认所有节点的操作时序编号一致,则返回数据获取响应,其中携带有获取到的数据,至此本次数据获取过程完成。

通过以上描述可以看出,在数据获取过程中,客户端可以直接从EC组内的成员节点获取数据,并同时可以根据对操作时序标识的比较,保证数据可用性的要求,与现有技术相比,减少了主节点的开销。

通过将本发明的上述实施例与现有技术相比可以看出,现有技术的EC技术方案中,对于K+M的EC模式,客户端向主节点发送数据大小为K,主节点向EC组各成员分发数据分片大小为K+M-1,系统总流量为K+K+M-1。而采用本发明的上述实施例,主节点只在需要进行互斥控制的场景下对请求进行并发控制,数据分片的计算和分发由客户端执行,系统总流量为K+M,即客户端分发数据分片到EC组各节点的流量总和,可以看出在K+M模式下,本发明实施例能够节省K-1的系统带宽。

基于相同的技术构思,本发明实施例还提供了一种主节点设备和客户端设备。

参见图7,为本发明实施例提供的主节点设备的结构示意图,该设备应用于采用Erasure Code存储机制的分布式存储系统,可实现前述实施例描述的流程。如图所示,该设备可包括:第一接收模块701、分配模块702、发送模块703,进一步地,还可包括第二接收模块704以及数据恢复模块705,其中:

第一接收模块701,用于接收客户端发送的数据存储权限请求;

分配模块702,用于根据所述数据存储权限请求,为所述客户端的数据存储权限请求分配操作时序标识,所述操作时序标识被所述客户端用于向所述EC组内的成员节点发送数据存储请求;

发送模块703,用于向所述客户端返回数据存储权限响应,所述响应中携带有分配的操作时序标识。

可选地,分配模块702还可用于:在接收客户端发送的数据存储权限请求之后、针对所述数据存储权限请求所对应的数据标识,确定是否有相同数据标识的数据存储操作还未完成;若有,则将当前接收到的所述数据存储权限请求挂起,并在所述还未完成的数据存储操作完成后,解除所述数据存储权限请求解除挂起。

可选地,分配模块702还可用于:在接收客户端发送的数据存储权限请求之后、根据所述数据存储权限请求之前,确定所述EC组对应的分区是否可用;若不可用,则向所述客户端返回数据存储权限分配失败的响应。

可选地,第二接收模块704,用于在向所述客户端返回数据存储权限响应之后,接收所述客户端发送的数据存储操作完成通知,所述数据存储操作完成通知是所述客户端根据所述操作时序标识向所述EC组内的成员节点发送数据存储请求后,确认所述EC组内的成员节点完成数据存储操作之后发送的。

可选地,数据恢复模块705,用于:接收客户端设备发送的数据获取请求,所述数据获取请求中携带有请求获取的数据的标识以及数据恢复指示;根据所述数据恢复指示对所在EC组内的成员节点的进行数据恢复;在数据恢复成功后,获取请求获取的数据;返回数据恢复成功响应,所述数据恢复成功响应中携带有获取到的数据。

参见图8,为本发明实施例提供的客户端设备的结构示意图,该设备应用于采用Erasure Code存储机制的分布式存储系统,可实现前述实施例描述的数据存储流程。如图所示,该设备可包括:第一确定模块801、权限获取模块802、数据存储请求模块803,进一步地还可包括数据处理模块804,其中:

第一确定模块801,用于根据接收到的第一数据存储请求,为请求存储的数据确定对应的EC组;

权限获取模块802,用于向所述EC组内的主节点发送数据存储权限请求,接收所述主节点返回的数据存储权限响应,所述响应中携带有为所述客户端的数据存储权限请求分配的操作时序标识;

数据存储请求模块803,用于向所述EC组内的成员节点发送第二数据存储请求,所述数据存储请求中携带有所述操作时序标识以及所述待存储的数据对应的分片。

可选地,第二数据存储请求中携带的分片包括数据分片或校验分片。数据处理模块804在向所述EC组内的成员节点发送第二数据存储请求之前,对所述待存储的数据进行分片,并根据所得到的数据分片计算得到校验分片。

可选地,第一确定模块801具体用于:根据请求存储的数据的标识,确定与该标识对应的分区,并根据确定出的分区确定对应的EC组。

可选地,数据存储请求模块803还用于:向所述EC组内的成员节点发送第二数据存储请求之后,接收所述EC组内的成员节点根据第二数据存储请求返回的数据存储操作完成通知,接收到所述EC组内的所有成员节点返回的数据存储操作完成通知后,向所述EC组内的主节点发送数据存储操作完成通知。

参见图9,为本发明实施例提供的客户端设备,该设备应用于采用Erasure Code存储机制的分布式存储系统,可实现前述实施例描述的数据获取流程。如图所示,该设备可包括:第二确定模块901、获取模块902、响应模块903,其中:

第二确定模块901,用于根据接收到的第一数据获取请求,为请求获取的数据确定所在的EC组以及该EC分组内的成员节点;

获取模块902,用于从确定出的EC组内的成员节点获取数据,以及从所述EC组内的所有成员节点获取操作时序标识;

响应模块903,用于对获取到的所述EC组内的所有成员节点的操作时序标识进行比较,若所述EC组内的成员节点的操作时序标识相同,则返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

可选地,响应模块903还用于:若所述EC组内的成员节点的操作时序标识不相同,则向所述EC组内的主节点发送数据获取请求,所述数据获取请求中携带有请求获取的数据的标识以及数据恢复指示,所述数据恢复请求用于触发所述主节点对所在EC组内的成员节点的进行数据恢复以及在数据恢复成功后返回所请求获取的数据;以及,接收主节点返回的数据恢复成功响应,所述数据恢复成功响应中携带有获取到的数据;以及,返回与所述第一数据获取请求对应的响应,所述响应中携带有获取到的数据。

上述图8和图9所示的功能模块也可位于同一客户端设备中,从而使该客户端设备实现本发明上述实施例描述的数据存储以及数据获取流程。

参见图10,为本发明实施例提供的通信装置,可实现前述实施例中主节点的流程。如图10所示,该装置可包括:收发器1001、处理器1002和存储器1003。

处理器1002用于控制该装置的操作,包括通过收发器1001进行数据的传输(包括接收和/或发送);存储器1003可以包括只读存储器和随机存取存储器,用于向处理器1002提供指令和数据。存储器1003的一部分还可以包括非易失行随机存取存储器(NVRAM)。该装置的各个组件通过总线系统耦合在一起,其中总线系统1004除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1004。

本申请实施例揭示的流程可以应用于处理器1002中,或者由处理器1002实现。在实现过程中,该装置实现的流程的各步骤可以通过处理器1002中的硬件的集成逻辑电路或者软件形式的指令完成。处理器1002可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1003,处理器1002读取存储器1003中的信息,结合其硬件完成本发明实施例指示流程的步骤。

具体地,处理器1002可被配置以执行上述实施例所述的主节点侧的流程。处理器1002所执行的上述流程,可参见前述实施例的描述,在此不再详述。

参见图11,为本发明实施例提供的通信装置,可实现前述实施例中客户端的流程。如图11所示,该装置可包括:收发器1101、处理器1102和存储器1103。

处理器1102用于控制该装置的操作,包括通过收发器1101进行数据的传输(包括接收和/或发送);存储器1103可以包括只读存储器和随机存取存储器,用于向处理器1102提供指令和数据。存储器1103的一部分还可以包括非易失行随机存取存储器(NVRAM)。该装置的各个组件通过总线系统耦合在一起,其中总线系统1104除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1104。

本申请实施例揭示的流程可以应用于处理器1102中,或者由处理器1102实现。在实现过程中,该装置实现的流程的各步骤可以通过处理器1102中的硬件的集成逻辑电路或者软件形式的指令完成。处理器1102可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1103,处理器1102读取存储器1103中的信息,结合其硬件完成本发明实施例指示流程的步骤。

具体地,处理器1102可被配置以执行上述实施例所述的客户端的数据存储流程。处理器1102所执行的上述流程,可参见前述实施例的描述,在此不再详述。

参见图12,为本发明实施例提供的通信装置,可实现前述实施例中客户端的流程。如图12所示,该装置可包括:收发器1201、处理器1202和存储器1203。

处理器1202用于控制该装置的操作,包括通过收发器1201进行数据的传输(包括接收和/或发送);存储器1203可以包括只读存储器和随机存取存储器,用于向处理器1202提供指令和数据。存储器1203的一部分还可以包括非易失行随机存取存储器(NVRAM)。该装置的各个组件通过总线系统耦合在一起,其中总线系统1204除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1204。

本申请实施例揭示的流程可以应用于处理器1202中,或者由处理器1202实现。在实现过程中,该装置实现的流程的各步骤可以通过处理器1202中的硬件的集成逻辑电路或者软件形式的指令完成。处理器1202可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1203,处理器1202读取存储器1203中的信息,结合其硬件完成本发明实施例指示流程的步骤。

具体地,处理器1202可被配置以执行上述实施例所述的客户端的数据获取流程。处理器1202所执行的上述流程,可参见前述实施例的描述,在此不再详述。

总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器,使得通过该计算机或其他可编程数据处理设备的处理器执行的指令可实现流程图中的一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。

本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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