分布式数据读取方法及装置转让专利

申请号 : CN201611042476.7

文献号 : CN106598488B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周应超张震张铎

申请人 : 北京小米移动软件有限公司

摘要 :

本公开是关于一种分布式数据读取方法及装置,其中,该方法包括:向保存有目标数据的第一存储节点发送读请求,该第一存储节点为分布式存储系统中保存有目标数据的存储节点中未接收到读请求的任意一个,获取该读请求的发出时间点以及第一存储节点对应的传输时间段,并检测第一存储节点是否在传输时间段内返回目标数据,当该传输时间段大于预设时间阈值且未检测到第一存储节点在传输时间段内返回目标数据时,向保存有目标数据的第二存储节点发送读请求,该第二存储节点为保存有目标数据的存储节点中除第一存储节点之外的未接收到读请求的任意一个。本公开的技术方案在不增加网络负担的情况下,有效降低了读操作在异常状态下的延迟,数据读取效率高。

权利要求 :

1.一种分布式数据读取方法,其特征在于,包括:

向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;

获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;

检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;

当所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个;

其中,所述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。

2.根据权利要求1所述的方法,其特征在于,还包括:

在检测到所述第一存储节点在所述传输时间段内返回所述目标数据或者所述第二存储节点在对应的传输时间段内返回所述目标数据时,停止发送所述读请求,并确定所述目标数据读取成功。

3.根据权利要求1所述的方法,其特征在于,还包括:

当已经向所述分布式存储系统中保存有所述目标数据的所有存储节点发送所述读请求时,等待所述读操作超时时间对应的时长。

4.根据权利要求3所述的方法,其特征在于,还包括:

在所述读操作超时时间对应的时长内,检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取成功;或者,在所述读操作超时时间对应的时长内,未检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取失败。

5.根据权利要求4所述的方法,其特征在于,所述确定所述目标数据读取失败之后,还包括:推送所述目标数据读取失败的通知。

6.一种分布式数据读取装置,其特征在于,包括:

发送模块,被配置为向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;

获取模块,被配置为获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;

处理模块,被配置为检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;

所述发送模块,还被配置为在所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个;

其中,所述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。

7.根据权利要求6所述的装置,其特征在于,所述处理模块,还被配置为在检测到所述第一存储节点在所述传输时间段内返回所述目标数据或者所述第二存储节点在对应的传输时间段内返回所述目标数据时,停止发送所述读请求,并确定所述目标数据读取成功。

8.根据权利要求6所述的装置,其特征在于,所述处理模块,还被配置为在已经向所述分布式存储系统中保存有所述目标数据的所有存储节点发送所述读请求时,等待所述读操作超时时间对应的时长。

9.根据权利要求8所述的装置,其特征在于,所述处理模块,还被配置为在所述读操作超时时间对应的时长内,检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取成功,在所述读操作超时时间对应的时长内,未检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取失败。

10.根据权利要求9所述的装置,其特征在于,所述处理模块,还被配置为在确定所述目标数据读取失败之后,推送所述目标数据读取失败的通知。

11.一种分布式数据读取装置,其特征在于,所述装置包括:

处理器;

用于存储所述处理器的可执行指令的存储器;

其中,所述处理器被配置为:

向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;

获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;

检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;

当所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个;

其中,所述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。

说明书 :

分布式数据读取方法及装置

技术领域

[0001] 本公开涉及数据处理技术领域,特别涉及一种分布式数据读取方法及装置。

背景技术

[0002] 在分布式存储系统(例如,分布式文件系统、分布式数据库以及分布式块存储系统等)中,为了确保该系统中的存储节点出现故障都不会致使存储数据丢失,通常将同一份数据分别存储在不同的存储节点上来保留多个数据副本,即,在分布式存储系统中,数据写入时会写到多个存储节点上,读取时可以从任何一个保留有数据副本的存储节点上读取。
[0003] 相关技术中,当读取分布式存储系统上的数据时,可采用串行方式和并发方式。串行方式的数据读取方法为:客户端首先向存储有数据副本的一个存储节点发送读请求,当发出读请求的时间超过预设阈值时仍未收到该存储节点返回的数据或者检测到该存储节点故障时,客户端则依次向存储有数据副本的其他存储节点发送读请求,直到客户端收到某一存储节点返回的数据为止。并行方式的数据读取方法为:客户端同时向所有保存有数据副本的存储节点发送读请求,将最先返回的数据作为读操作的结果返回给用户。

发明内容

[0004] 本公开实施例提供了一种分布式数据读取方法及装置。所述技术方案如下:
[0005] 根据本公开实施例的第一方面,提供一种分布式数据读取方法,包括:
[0006] 向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;
[0007] 获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;
[0008] 检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;
[0009] 当所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个。
[0010] 在本公开的一实施例中,所述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。
[0011] 在本公开的另一实施例中,所述方法,还包括:
[0012] 在检测到所述第一存储节点在所述传输时间段内返回所述目标数据或者所述第二存储节点在对应的传输时间段内返回所述目标数据时,停止发送所述读请求,并确定所述目标数据读取成功。
[0013] 在本公开的再一实施例中,所述方法,还包括:
[0014] 当已经向所述分布式存储系统中保存有所述目标数据的所有存储节点发送所述读请求时,等待所述读操作超时时间对应的时长。
[0015] 在本公开的上述实施例中,所述方法,还包括:
[0016] 在所述读操作超时时间对应的时长内,检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取成功;或者,
[0017] 在所述读操作超时时间对应的时长内,未检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取失败。
[0018] 在本公开的上述实施例中,所述确定所述目标数据读取失败之后,所述方法还包括:
[0019] 推送所述目标数据读取失败的通知。
[0020] 根据本公开实施例的第二方面,提供了一种分布式数据读取装置,包括:
[0021] 发送模块,被配置为向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;
[0022] 获取模块,被配置为获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;
[0023] 处理模块,被配置为检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;
[0024] 所述发送模块,还被配置为在所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个。
[0025] 在本公开的一实施例中,所述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。
[0026] 在本公开的另一实施例中,所述处理模块,还被配置为在检测到所述第一存储节点在所述传输时间段内返回所述目标数据或者所述第二存储节点在对应的传输时间段内返回所述目标数据时,停止发送所述读请求,并确定所述目标数据读取成功。
[0027] 在本公开的再一实施例中,所述处理模块,还被配置为在已经向所述分布式存储系统中保存有所述目标数据的所有存储节点发送所述读请求时,等待所述读操作超时时间对应的时长。
[0028] 在本公开的上述实施例中,所述处理模块,还被配置为在所述读操作超时时间对应的时长内,检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取成功,在所述读操作超时时间对应的时长内,未检测到任意一个保存有所述目标数据的存储节点返回所述目标数据时,确定所述目标数据读取失败。
[0029] 在本公开的上述实施例中,所述处理模块,还被配置为在确定所述目标数据读取失败之后,推送所述目标数据读取失败的通知。
[0030] 根据本公开实施例的第三方面,提供了一种分布式数据读取装置,该装置包括:
[0031] 处理器;
[0032] 用于存储处理器的可执行指令的存储器;
[0033] 其中,处理器被配置为:
[0034] 向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;
[0035] 获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的一时间段;
[0036] 检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;
[0037] 当所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个。
[0038] 本公开实施例提供的技术方案可以包括以下有益效果:
[0039] 通过向保存有目标数据的第一存储节点发送读请求,该第一存储节点为分布式存储系统中保存有该目标数据的存储节点中未接收到该读请求的任意一个,其次获取该读请求的发出时间点以及第一存储节点对应的传输时间段,并检测第一存储节点是否在该传输时间段内返回目标数据,该传输时间段为从发出时间点开始往后的一时间段,最后在上述传输时间段大于预设时间阈值,且未检测到第一存储节点在该传输时间段内返回目标数据时,向保存有该目标数据的第二存储节点发送所述读请求,该第二存储节点为分布式存储系统中保存有目标数据的存储节点中除第一存储节点之外的未接收到该读请求的任意一个。这样,本公开实施例的技术方案在不增加网络负担的情况下,有效降低了读操作在异常状态下的延迟,数据读取效率高。
[0040] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0041] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0042] 图1是根据一示例性实施例示出的一种分布式数据读取方法的流程图;
[0043] 图2是根据另一示例性实施例示出的一种分布式数据读取方法的流程图;
[0044] 图3是根据再一示例性实施例示出的一种分布式数据读取方法的流程图;
[0045] 图4是根据一示例性实施例示出的一种分布式数据读取装置的框图;
[0046] 图5是根据一示例性实施例示出的一种分布式数据读取装置的实体框图;
[0047] 图6是根据一示例性实施例示出的一种分布式数据读取装置的框图。
[0048] 通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

[0049] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0050] 本公开实施例提供一种分布式数据读取方法及装置。本实施例以分布式数据读取方法应用于终端设备中来举例说明。其中,该终端设备例如是手机、个人数字助理(Personal Digital Assistant,简称PDA)等,也可以是具有分布式数据读取功能的其他设备。
[0051] 参考图1,图1是根据一示例性实施例示出的一种分布式数据读取方法的流程图。如图1所示,该分布式数据读取方法可以包括如下几个步骤:
[0052] 在步骤S11中,向保存有目标数据的第一存储节点发送读请求。
[0053] 其中,该第一存储节点为分布式存储系统中保存有目标数据的存储节点中未接收到读请求的任意一个。
[0054] 本公开实施例主要以具有多个存储节点的分布式存储系统进行说明。在分布式存储系统中,数据写入时同一份数据会分别存储在不同的存储节点上,而数据读取时可以从存储有该数据的任意一个节点上进行读取。这样能够确保分布式存储系统的存储节点出现故障时不会导致存储数据丢失。
[0055] 在本实施例中,当终端设备从分布式存储系统中读取数据(例如,以目标数据为例进行说明)时,首先向保存有目标数据的第一存储节点发送读请求,以使第一存储节点返回该目标数据。
[0056] 可选的,该第一存储节点为分布式存储系统中保存有目标数据的存储节点中未接收到读请求的任意一个。举例来说,假设该分布式存储系统中有10个存储节点存储有该目标数据,因此,当终端设备从该分布式存储系统读取该目标数据时,作为一种示例,若该10个存储节点均未接收到该读请求,则上述第一存储节点是该10个存储节点中的任意一个。作为另一示例,若该10个存储节点已有5个接收到该读请求,那么上述第一存储节点是该10个存储节点中除去上述5个已接收到该读请求之外的其他5个存储节点中的任意一个。
[0057] 在步骤S12中,获取该读请求的发出时间点以及第一存储节点对应的传输时间段。
[0058] 其中,该传输时间段为从发出时间点开始往后的一时间段。
[0059] 对于终端设备发出的读请求,终端设备记录每次读请求的发出时间并获取每个存储节点对应的传输时间段。可选的,本公开实施例以终端设备向第一存储节点发送读请求为例进行说明。当终端设备向第一存储节点发送读请求之后,获取该读请求的发出时间点,并确定第一存储节点对应的传输时间段(即,从该发出时间点开始往后的一时间段),以使终端设备检测该第一存储节点是否在该传输时间段内返回目标数据。
[0060] 在步骤S13中,检测第一存储节点是否在该传输时间段内返回目标数据。
[0061] 可选的,终端设备向第一存储节点发出读请求之后,在第一存储节点对应的传输时间段内实时检测第一存储节点是否在该传输时间段内返回目标数据,也即,该终端设备实时检测其是否接收到第一存储节点返回目标数据。
[0062] 值得说明的是,本公开实施例定义了一个预设时间阈值,在上述传输时间段小于预设时间阈值时,终端设备在该传输时间段内进行实时检测,直至上述传输时间段的时间长度等于预设时间阈值。
[0063] 在步骤S14中,当上述传输时间段大于预设时间阈值,且未检测到第一存储节点在该传输时间段内返回目标数据时,向保存有目标数据的第二存储节点发送上述读请求。
[0064] 其中,该第二存储节点为分布式存储系统中保存有该目标数据的存储节点中除第一存储节点之外的未接收到该读请求的任意一个。
[0065] 作为一种示例,当终端设备向第一存储节点发出读请求后,第一存储节点对应的传输时间段大于预设时间阈值时,终端设备仍未检测到第一存储节点返回目标数据,此时,终端设备在继续检测第一存储节点是否返回目标数据的同时,还向保存有目标数据的第二存储节点发送上述读请求。
[0066] 此外,为了不向分布式存储系统中保存有目标数据的存储节点发送重复的读请求,本公开实施例中的第二存储节点是保存有该目标数据的存储节点中除第一存储节点之外的未接收到该读请求的任意一个。
[0067] 在向第二存储节点发送读请求之后,与步骤S12和步骤S13类似,终端设备获取向第二存储节点发送该读请求的发出时间点以及第二存储节点对应的传输时间段,并且检测第二存储节点是否在其对应的传输时间段内返回目标数据,若第二存储节点在对应的传输时间段大于预设时间阈值,终端设备仍未检测到第一存储节点和第二存储节点返回目标数据,此时,终端设备则依次向分布式存储系统中的其他未接收到读请求的存储节点发送读请求,直到向所有存储有该目标数据的存储节点均发送该读请求为止。
[0068] 可选的,本公开实施例中的预设时间阈值大于读操作延迟时间,且小于读操作超时时间。作为一种示例,该预设时间阈值比正常情况下的读操作延迟时间稍长,但是比读操作超时时间短很多,而且在向一个存储节点发送读请求之后间隔预设时间阈值再向其他存储节点发送读请求。
[0069] 这样,一方面在分布式存储系统的存储节点正常时,终端设备向第一存储节点发送读请求之后,在该第一存储节点对应的传输时间段小于预设时间阈值时便能接收到第一存储节点返回的目标数据,其便不会向第二存储节点以及其他的存储节点发送上述读请求,避免了相关技术中采用并行方式读取数据时造成的网络带宽浪费问题。另一方面,在分布式存储系统中,若接收到该读请求的第一存储节点出现故障,终端设备只需要等待预设时间阈值对应的时长,其不需要等待上述读操作超时时间对应的时长,便会向第二存储节点或者其他保存有该目标数据的存储节点发送读请求,这样能够避免相关技术中采用串行方式读取数据时造成的用户长时间等待的问题。
[0070] 本公开实施例提供的分布式数据读取方法,首先通过向保存有目标数据的第一存储节点发送读请求,该第一存储节点为分布式存储系统中保存有该目标数据的存储节点中未接收到该读请求的任意一个,其次获取该读请求的发出时间点以及第一存储节点对应的传输时间段,并检测第一存储节点是否在该传输时间段内返回目标数据,该传输时间段为从发出时间点开始往后的时间段,最后在上述传输时间段大于预设时间阈值,且未检测到第一存储节点在该传输时间段内返回目标数据时,向保存有该目标数据的第二存储节点发送所述读请求,该第二存储节点为分布式存储系统中保存有目标数据的存储节点中除第一存储节点之外的未接收到该读请求的任意一个。这样,本公开实施例的技术方案在不增加网络负担的情况下,有效降低了读操作在异常状态下的延迟,数据读取效率高。
[0071] 进一步的,在上述实施例提供的分布式数据读取方法中,本公开实施例还包括如下步骤:
[0072] 在检测到第一存储节点在上述传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送读请求,并确定目标数据读取成功。
[0073] 可选的,在本公开实施例中,该步骤(在检测到第一存储节点在上述传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送读请求,并确定目标数据读取成功)可通过如下两种可能的实现方式实现,具体参见图2所示的实施例。
[0074] 图2是根据另一示例性实施例示出的一种分布式数据读取方法的流程图。如图2所示,在一种可能的实现方式中,在本公开实施例提供的分布式数据读取方法,上述步骤(在检测到第一存储节点在上述传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送读请求,并确定目标数据读取成功),包括:
[0075] 在步骤S21中,在检测到第一存储节点在上述传输时间段内返回该目标数据时,停止发送读请求,并确定目标数据读取成功。
[0076] 可选的,由于预设时间阈值大于读操作延迟时间,因此,在第一存储节点的正常时,第一存储节点在接收到读请求后,其会在小于预设时间阈值的传输时间段内返回目标数据,所以,终端设备则能检测到第一存储节点在传输时间段内返回目标数据,此时,终端设备则停止向分布式存储系统中保存有该目标数据的第二存储节点或者其他存储节点发送读请求,并确定目标数据读取成功,本次读请求完成,终端设备随后将目标数据返回给用户。
[0077] 因此,在图1所示实施例的基础上,图2所示实施例中的步骤S21位于上述步骤S13之后。
[0078] 进一步的,在本公开实施例的另一种可能的实现方式中,上述步骤(在检测到第一存储节点在上述传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送读请求,并确定目标数据读取成功),包括:
[0079] 在步骤S22中,在检测到第二存储节点在对应的传输时间段内返回该目标数据时,停止发送读请求,并确定目标数据读取成功。
[0080] 在图1所示实施例的基础上,该步骤S22位于上述步骤S14之后。
[0081] 与步骤S21类似,在第二存储节点的正常时,第二存储节点在接收到读请求后,其会在小于预设时间阈值的传输时间段内返回目标数据,所以,终端设备则能检测到第二存储节点在对应的传输时间段内返回目标数据,此时,终端设备则停止向保存有该目标数据的其他存储节点发送读请求,并确定目标数据读取成功,本次读请求完成,终端设备随后将目标数据返回给用户。
[0082] 值得说明的是,若在第二存储节点在对应的传输时间段内检测到第一存储节点返回目标数据,同理,该终端设备也停止向其他存储节点发送读请求,也可确定目标数据读取成功,本次读请求完成,终端设备随后将目标数据返回给用户。
[0083] 举例来说,在终端设备向分布式存储系统中的第一存储节点发送读请求之后,若该第一存储节点未在预设时间阈值对应的传输时间段内返回目标数据,终端设备则向保存有目标数据的第二存储节点发送读请求,在第二存储节点对应的传输时间段内同时检测第二存储节点和第一存储节点是否返回目标数据,在第二存储节点对应的传输时间段内,不管是检测到第一存储节点返回目标数据,还是检测到第二存储节点返回目标数据,均停止发送读请求,并确定该目标数据读取成功。
[0084] 本公开实施例提供的分布式数据读取方法,在终端设备检测到第一存储节点在对应的传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送读请求,并确定该目标数据读取成功。这样,终端设备在向第二存储节点发出读请求之后,在第二存储节点对应的传输时间段内检测第二存储节点是否返回目标数据的同时,还继续检测第一存储节点是否返回目标数据,这样即使第一存储节点由于某种瞬态异常花了比预设时间阈值稍长的处理时间,但是还能比第二存储节点更快的返回目标数据,从而能更快的获取目标数据。
[0085] 进一步的,图3是根据再一示例性实施例示出的一种分布式数据读取方法的流程图。本公开实施例是在上述图1实施例的基础上对分布式数据读取方法的进一步说明。如图3所示,本公开实施例提供的分布式数据读取方法,还包括:
[0086] 在步骤S31中,当已经向分布式存储系统中保存有目标数据的所有存储节点发送读请求时,等待该读操作超时时间对应的时长。
[0087] 在本公开实施例中,当终端设备依次向保存有目标数据的第一存储节点、第二存储节点以及其他保存有该目标数据的所有存储节点发送读请求之后,若终端设备在上述所有存储节点对应的传输时间段内均未检测到所有存储节点返回目标数据,此时,为了验证是由于网络负载波动或者存储节点故障而导致的目标数据读取失败,终端设备则等待该读操作超时时间对应的时长,进而在该读操作超时时间对应的时间段内检测上述所有存储节点是否会返回目标数据。这样能够避免由于存储节点瞬态异常而致使未在存储节点对应的传输时间段内检测到返回目标数据的问题。
[0088] 进一步的,在上述步骤的基础上,如图3所示,本公开实施例提供的分布式数据读取方法,还包括如下步骤。
[0089] 在一种可能的实现方式中,在步骤S31之后,该方法包括:
[0090] 在步骤S32中,在上述读操作超时时间对应的时长内,检测到任意一个保存有目标数据的存储节点返回目标数据时,确定该目标数据读取成功。
[0091] 可选的,在该实施例中,终端设备已经向分布式存储系统中保存有目标数据的所有存储节点发送读请求后,终端设备在其等待的读操作超时时间对应的时长内,检测所有接收读请求的存储节点是否返回目标数据。
[0092] 在该种可能实现方式中,当终端设备检测到任意一个保存有目标数据的存储节点返回目标数据时,则确定该目标数据读取成功,也即,本次读操作完成,终端设备随后将获取到的目标数据返回给用户。
[0093] 值得说明的是,此处的任意一个保存有目标数据的存储节点可以是第一存储节点,也可以是第二存储节点,还可以是其他接收读请求的存储节点,其属于保存有目标数据且接收到读请求的所有存储节点中的任意一个。
[0094] 而在另一个可能的实现方式中,本公开实施例提供的分布式数据读取方法,还包括:
[0095] 在步骤S33中,在读操作超时时间对应的时长内,未检测到任意一个保存有目标数据的存储节点返回目标数据时,确定该目标数据读取失败。
[0096] 可选的,在该实施例中,终端设备在读操作超时时间对应的时长内实时检测是否有存储节点返回目标数据,当在读操作超时时间对应的时长内,未检测到任意一个保存有目标数据的存储节点返回目标数据,也即,终端设备不仅未在所有存储节点对应的传输时间段内接收到目标数据,而且也未在读操作超时时间对应的时长内接收到目标数据,此时,终端设备可认为分布式存储系统存在网络负载波动或者存储节点故障的问题,因此,终端设备判定目标数据读取失败。
[0097] 这样终端设备在发出多个读请求之后,继续检测所有接收到读请求的存储节点是否会返回目标数据,而不是只等待最后一个存储节点返回目标数据,其保证了某个存储节点由于瞬态异常花了比预设时间阈值稍长的处理时间,但还是比其它存储节点更快返回目标数据的情况下,更快返回数据,而在存储节点故障时,在向所有存储节点发送读请求之后等待读操作超时时间对应的时长,有效降低了终端设备在前序存储节点处耗费的时间,避免了用户长时间等待。
[0098] 本公开实施例提供的分布式数据读取方法,当终端设备已经向分布式存储系统中保存有目标数据的所有存储节点发送读请求时,等待该读操作超时时间对应的时长,并且在读操作超时时间对应的时长内,检测到任意一个保存有目标数据的存储节点返回目标数据时,确定该目标数据读取成功,而在读操作超时时间对应的时长内,未检测到任意一个保存有目标数据的存储节点返回目标数据时,确定该目标数据读取失败。这样其保证了某个存储节点由于瞬态异常花了比预设时间阈值稍长的处理时间,但还是比其它存储节点更快返回目标数据,而在存储节点故障时,有效降低了终端设备在前序存储节点处耗费的时间,避免了用户长时间等待。
[0099] 进一步的,在图3所示实施例的基础上,作为一种示例,在上述步骤S33之后,该方法还包括如下步骤S34。
[0100] 在步骤S34中,推送目标数据读取失败的通知。
[0101] 可选的,在终端设备确定目标数据读取失败之后,该终端设备可自动向预设终端(比如,用户的手机终端)推送目标数据读取失败的通知,以提醒用户目标数据读取失败,从而便于用户及时获知目标数据的读取结果或者根据用户自己的需求确定后续操作。
[0102] 值得说明的是,在终端设备确定目标数据读取失败,且向预设终端(比如,用户的手机终端)推送目标数据读取失败的通知之后,用户具体如何操作可根据实际情况进行操作,本公开实施例并不对其进行限定。
[0103] 以上描述了分布式数据读取方法的实现过程,该过程可以由分布式数据读取装置来实现,以下将对分布式数据读取装置的内部功能和结构进行说明,对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
[0104] 图4是根据一示例性实施例示出的一种分布式数据读取装置的框图。如图4所示,该分布式数据读取装置可以包括:发送模块41、获取模块42和处理模块43。
[0105] 该发送模块41,被配置为向保存有目标数据的第一存储节点发送读请求。
[0106] 其中,该第一存储节点为分布式存储系统中保存有目标数据的存储节点中未接收到读请求的任意一个。
[0107] 该获取模块42,被配置为获取上述读请求的发出时间点以及第一存储节点对应的传输时间段。
[0108] 该传输时间段为从该发出时间点开始往后的一时间段。
[0109] 该处理模块43,被配置为检测第一存储节点是否在该传输时间段内返回目标数据。
[0110] 上述发送模块41,还被配置为在传输时间段大于预设时间阈值,且未检测到第一存储节点在所述传输时间段内返回目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求。
[0111] 其中,该第二存储节点为分布式存储系统中保存有目标数据的存储节点中除第一存储节点之外的未接收到读请求的任意一个。
[0112] 关于本公开实施例提供的分布式数据读取装置,其中各个模块执行操作的具体方式已经在图1所示分布式数据读取方法实施例中进行了详细描述,此处将不做详细阐述说明。
[0113] 可选的,在上述实施例提供的分布式数据读取装置中,上述预设时间阈值大于读操作延迟时间,且小于读操作超时时间。
[0114] 在本公开的一实施例中,上述处理模块43,还被配置为在检测到第一存储节点在上述传输时间段内返回目标数据或者第二存储节点在对应的传输时间段内返回目标数据时,停止发送所述读请求,并确定所述目标数据读取成功。
[0115] 在本公开的另一实施例中,上述处理模块43,还被配置为在已经向分布式存储系统中保存有目标数据的所有存储节点发送读请求时,等待读操作超时时间对应的时长。
[0116] 进一步的,在上述实施例的基础上,上述处理模块43,还被配置为在读操作超时时间对应的时长内,检测到任意一个保存有目标数据的存储节点返回目标数据时,确定目标数据读取成功,而在该读操作超时时间对应的时长内,未检测到任意一个保存有目标数据的存储节点返回目标数据时,确定目标数据读取失败。
[0117] 可选的,在本公开的再一实施例中,上述处理模块,还被配置为在确定目标数据读取失败之后,推送目标数据读取失败的通知。
[0118] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0119] 以上描述了分布式数据读取装置的内部功能模块和结构示意,图5是根据一示例性实施例示出的一种分布式数据读取装置的实体框图,如图5所示,该分布式数据读取装置包括:存储器501和处理器502。
[0120] 存储器501,用于存储处理器可执行指令。
[0121] 处理器502,用于:
[0122] 向保存有目标数据的第一存储节点发送读请求,所述第一存储节点为分布式存储系统中保存有所述目标数据的存储节点中未接收到所述读请求的任意一个;
[0123] 获取所述读请求的发出时间点以及所述第一存储节点对应的传输时间段,所述传输时间段为从所述发出时间点开始往后的时间段;
[0124] 检测所述第一存储节点是否在所述传输时间段内返回所述目标数据;
[0125] 当所述传输时间段大于预设时间阈值,且未检测到所述第一存储节点在所述传输时间段内返回所述目标数据时,向保存有所述目标数据的第二存储节点发送所述读请求,其中,所述第二存储节点为所述分布式存储系统中保存有所述目标数据的存储节点中除所述第一存储节点之外的未接收到所述读请求的任意一个。
[0126] 值得说明的是,在图5所示的信息显示装置的实施例中,应理解,该处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:
read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:
RAM)、快闪存储器、硬盘或者固态硬盘。SIM卡也称为用户身份识别卡、智能卡,数字移动电话机必须装上此卡方能使用。即在电脑芯片上存储了数字移动电话客户的信息,加密的密钥以及用户的电话簿等内容。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0127] 图6是根据一示例性实施例示出的一种分布式数据读取装置的框图。例如,装置600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0128] 参照图6,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电力组件606,多媒体组件608,音频组件610,输入/输出(I/O)接口612,传感器组件614,以及通信组件616。
[0129] 处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
[0130] 存储器604被配置为存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0131] 电力组件606为装置600的各种组件提供电力。电力组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
[0132] 多媒体组件608包括在所述装置600和用户之间的提供一个输出接口的触控显示屏。在一些实施例中,触控显示屏可以包括液晶显示器(LCD)和触摸面板(TP)。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0133] 音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
[0134] I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0135] 传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到装置600的打开/关闭状态,组件的相对定位,例如所述组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600中一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0136] 通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0137] 在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述分布式数据读取方法。
[0138] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器620执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0139] 一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置600的处理器执行时,使得装置600能够执行一种分布式数据读取方法。
[0140] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
[0141] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。