CN105471930A - 一种读取分布式数据的方法、系统和设备 - Google Patents
一种读取分布式数据的方法、系统和设备 Download PDFInfo
- Publication number
- CN105471930A CN105471930A CN201410363015.4A CN201410363015A CN105471930A CN 105471930 A CN105471930 A CN 105471930A CN 201410363015 A CN201410363015 A CN 201410363015A CN 105471930 A CN105471930 A CN 105471930A
- Authority
- CN
- China
- Prior art keywords
- data fragmentation
- stored
- reading
- data
- receive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及通信技术领域,特别涉及一种读取分布式数据的方法、系统和设备,用以解决现有技术中存在的读取分布式数据的方案实时性比较低的问题。本发明实施例读取端根据需要读取的Object的数据分片的存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片,由于本发明实施例能够以数据分片为单位进行读取,不需要整个Object全部存储完才可以读取,从而提高了读取分布式数据的方案实时性。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种读取分布式数据的方法、系统和设备。
背景技术
分布式文件系统(DistributedFileSystem)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,比如云存储系统。
当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。简单来说,云存储就是将储存资源放到云上供人存取的一种新兴方案。使用者可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据
现有的基于Raid(RedundantArraysofInexpensiveDisks,磁盘阵列)的分布式存储系统中,以Object(对象)为单位写入读取数据。读取端在需要读取数据时,会向存储端读取对应的数据。
目前的读取端只能从存储端读取写入端已经写入存储端的Object。如果写入端正在对存储端写入Object,而读取端需要读取这个Object,读取端必须等到写入端将Object写入存储端后,才能读取这个Object。无法实时读取正在存储的Object,因此会导致读取数据的实时性整整少一个Object大小,读取数据的实时性比较低。
综上所述,目前读取分布式数据的方案实时性比较低。
发明内容
本发明提供一种读取分布式数据的方法、系统和设备,用以解决现有技术中存在的读取分布式数据的方案实时性比较低的问题。
本发明实施例提供一种读取分布式数据的方法,包括:
读取端确定需要读取的对象Object的数据分片的存储位置信息;
所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片。
较佳地,所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,包括:
所述读取端根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储节点;
所述读取端同时向确定的所述至少一个存储节点请求数据分片。
较佳地,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
若接收到所述至少一个存储节点返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述Object由多个条带组成,每个条带由多个数据分片组成;
所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在读取条带时长内对应的条带的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定对应的条带中未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;
若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
较佳地,所述读取端根据下列方式判断是否需要继续接收:
所述读取端判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
所述读取端判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
本发明实施例提供的一种读取分布式数据的方法,包括:
存储节点根据接收到的来自读取端的请求,确定所述读取端需要读取的Object的数据分片;
所述存储节点将确定的数据分片发送给所述读取端。
较佳地,所述存储节点将确定的数据分片发送给所述读取端,包括:
所述存储节点将确定的、且已存储的数据分片发送给所述读取端。
较佳地,所述存储节点将确定的、且已存储的数据分片发送给所述读取端之后,还包括:
若确定的数据分片中有未存储的数据分片,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片。
较佳地,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片之前,还包括:
所述存储节点确定在所述未存储的数据分片存储到所述存储节点时,未超过存储时长。
较佳地,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,还包括:
若在所述未存储的数据分片存储到所述存储节点时,超过存储时长,所述存储节点向所述读取端返回读取失败消息。
本发明实施例提供的一种读取分布式数据的读取设备,包括:
位置确定模块,用于确定需要读取的Object的数据分片的存储位置信息;
处理模块,用于根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片。
较佳地,所述处理模块具体用于:
根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储设备;同时向确定的所述至少一个存储设备请求数据分片。
较佳地,所述处理模块还用于:
接收来自所述至少一个存储设备的数据分片之后,若接收到所述至少一个存储设备返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,在确定需要继续接收后,确定未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储设备请求数据分片。
较佳地,所述Object由多个条带组成,每个条带由多个数据分片组成;
所述处理模块还用于:
接收来自所述至少一个存储设备的数据分片之后,若在读取条带时长内对应的条带的所有数据分片未接收完成,在确定需要继续接收后,确定对应的条带中未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述处理模块还用于:
在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
较佳地,所述处理模块具体用于,根据下列方式判断是否需要继续接收:
判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
本发明实施例提供的一种读取分布式数据的存储设备,包括:
数据分片确定模块,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片;
发送模块,用于将确定的数据分片发送给所述读取设备。
较佳地,所述发送模块具体用于:
将确定的、且已存储的数据分片发送给所述读取设备。
较佳地,所述发送模块还用于:
若确定的数据分片中有未存储的数据分片,在所述未存储的数据分片存储到所述存储设备后,向所述读取设备返回存储到所述存储设备的数据分片。
较佳地,所述发送模块还用于:
在所述未存储的数据分片存储到所述存储设备时,若未超过存储时长,向所述读取设备返回存储到所述存储设备的数据分片。
较佳地,所述发送模块还用于:
若在所述未存储的数据分片存储到所述存储设备时,超过存储时长,所述存储设备向所述读取设备返回读取失败消息。
本发明实施例提供的一种读取分布式数据的系统,包括:
读取设备,用于确定需要读取的Object的数据分片的存储位置信息;根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片;
存储设备,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片;将确定的数据分片发送给所述读取设备。
本发明实施例读取端根据需要读取的Object的数据分片的存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片,由于本发明实施例能够以数据分片为单位进行读取,不需要整个Object全部存储完才可以读取,从而提高了读取分布式数据的方案实时性。
附图说明
图1为本发明实施例一读取分布式数据的系统结构示意图;
图2为本发明实施例二读取分布式数据的系统中的读取设备的结构示意图;
图3为本发明实施例三读取分布式数据的系统中的存储设备的结构示意图;
图4为本发明实施例四读取分布式数据的方法流程示意图;
图5为本发明实施例五读取分布式数据的方法流程示意图;
图6为本发明实施例六读取分布式数据的方法流程示意图;
图7为本发明实施例七读取分布式数据的方法流程示意图。
具体实施方式
本发明实施例读取端根据需要读取的Object的数据分片的存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片,由于本发明实施例能够以数据分片为单位进行读取,不需要整个Object全部存储完才可以读取,从而提高了读取分布式数据的方案实时性。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,本发明实施例一读取分布式数据的系统包括:读取设备10和存储设备11。
读取设备10,用于确定需要读取的Object的数据分片的存储位置信息,根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片。
存储设备11,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片,将确定的数据分片发送给读取设备。
本发明实施例将Object分成多个数据分片,将多个数据分片存储到至少一个存储设备中。
读取设备只需要确定需要读取的Object的数据分片都存储到哪些存储设备中,并通过这些存储设备获取数据分片;
相应的,存储设备不需要在整个Object的数据分片都存储完成后发送数据分片;而是无论存储设备是否存储完该数据分片都可以发送读取该分片的请求,有该分片直接推送,如果没存储改分片那么存储端设备到后再推送,提高了实时性。
较佳地,本发明实施例将Object分成多个数据分片时,可以将Object先分成多个条带,再将每个条带分成多个数据分片。
在将多个数据分片存储到至少一个存储设备时,可以将在每个条带相同位置的数据分片存储到一个存储设备中。比如每个条带的第一个数据分片存储到存储设备A中,每个条带的第二个数据分片存储到存储设备B中,以此类推。
除了上面的存储方式,也可以按照每个数据分片在Object中的位置进行存储,比如将Object中第1~10个数据分片存储到存储设备A中,第11~20个数据分片存储到存储设备A中,以此类推。
还比如一个文件有32个分片,其中1~16为第一个Object;17~32为第二个Object。1、5、9和13存在同一个设备上;2、6、10和14存在同一个设备上;3、7、11和15存在同一个设备上;4、8、12和16存在同一个设备上,以此类推。
在实施中,存储到每个存储设备中的数据分片的数量可以全部相同,也可以部分相同,也可以全不相同。
需要说明的是,本发明实施例在将数据分片存储到存储设备的方式并不局限于上述两种,只要能够保证读取设备获知数据分片在Object中的位置的方式都适用本发明实施例,比如可以将数据分片和在Object中的位置一起存储,这样就可以将数据分片随机存储到存储设备中。
其中,为了进一步提高读取数据的时效性,读取设备根据所述存储位置信息向至少一个存储设备请求数据分片时可以同时向确定的所述至少一个存储设备请求数据分片。
具体的,所述读取设备根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储设备;同时向确定的所述至少一个存储设备请求数据分片。
存储位置信息中包括了每个数据分片存储到哪个存储设备的信息。读取设备根据存储位置信息就可以知道向哪些存储设备发送请求。
请求中包括需要读取的数据分片的信息。发送给不同的存储设备的请求中包括的数据分片的信息只是针对收到请求的存储设备的。比如存储设备A存储数据分片1和数据分片2,存储设备B存储数据分片3和数据分片4,则发送给存储设备A的请求中只包括数据分片1和数据分片2的信息;发送给存储设备A的请求中只包括数据分片3和数据分片4的信息。
还有一种方式是发送给每一个存储设备的请求中包括的数据分片的信息都相同,即每个请求中都包括需要读取的所有数据分片的信息。
对于存储设备,不管收到上述哪种请求,存储设备都需要确定已存储的数据分片中哪些是请求中包含的信息对应的数据分片,然后将确定的分片返回给读取设备。
具体的,存储设备在收到请求后,确定读取设备需要读取的Object的数据分片;
所述存储设备判断确定的数据分片是否已经存储,如果是,则将确定的、且已存储的数据分片发送给所述读取设备;
否则,所述存储设备等待写入设备将未存储的数据分片存储到所述存储设备,并在所述未存储的数据分片存储到所述存储设备后,向所述读取设备返回存储到所述存储设备的数据分片。
由于在实施过程中,无法保证写入设备什么时候将未存储的数据分片存储到所述存储设备中,所以一种较佳地方式是:预先设置一存储时长,存储时长在存储设备知道确定的数据分片中有未存储的数据分片时启动,也可以在收到请求时启动。不同的启动时刻,对应的时长可以不同。
如果存储设备确定在所述未存储的数据分片存储到所述存储设备时,未超过存储时长,则存储设备向所述读取设备返回存储到所述存储设备的数据分片;
如果存储设备确定在所述未存储的数据分片存储到所述存储设备时,超过存储时长,存储设备向所述读取设备返回读取失败消息。
对于读取设备,也相应的有一套处理方案。
具体的,若读取设备接收到所述至少一个存储设备返回的读取失败消息,所述读取设备在确定需要继续接收后,确定未接收的数据分片;并根据所述存储位置信息向存储未接收的数据分片的存储设备请求数据分片。
除了上述接收到读取失败消息的处理方案,在读取设备侧也可以设置一读取Object时长或者分别为每一个条带设置一个读取条带时长,下面分别进行说明。
一、设置读取Object时长:
读取Object时长可以在读取设备向存储设备发送请求后启动,也可以在接收到第一个数据分片后启动。不同的启动时刻,对应的时长可以不同。
相应的,读取设备如果在读取Object时长内需要读取的Object的所有数据分片未接收完成,读取设备在确定需要继续接收后,确定未接收的数据分片;并根据所述存储位置信息向存储未接收的数据分片的存储设备请求数据分片。
二、设置读取条带时长:
读取条带时长可以在读取设备向存储设备发送请求后启动,也可以在接收到第一个数据分片后启动。不同的启动时刻,对应的时长可以不同。
相应的,读取设备如果在读取条带时长内对应的条带的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定对应的条带中未接收的数据分片;并根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
目前读取端在写入端向存储端写入Object而造成无法读取Object时,会持续向存储端发送请求,而本发明实施例读取端只有在收到存储端的读取失败消息或者在读取Object时长内需要读取的Object的所有数据分片未接收完成后,才会重新再次发送请求,节省了发送请求的数量,提高了资源利用率,同时还提高了实时性。
在实施中,读取设备判断是否需要继续接收的方式有很多,下面列举几种:
方式一、读取端判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收。
方式二、读取端判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
在实施中,如果Object由多个条带组成,且每个条带由多个数据分片组成,则读取设备接收来自所述至少一个存储设备的数据分片之后,还包括:
所述读取设备在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;
若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
比如一个Object分为10个条带,每个条带分为5个数据分片,如果读取设备接收到第3个条带的所有数据分片后,需要判断是否已存储第1个和第2个条带,如果已经存储了,则将第3个条带存储到第2个条带之后;
如果没有存储,比如没有存储第2个条带,则需要先将第3个条带缓存到其他位置上,等待第2个条带存储后,再将第3个条带存储到第2个条带之后。
其中,读取设备在收到1个条带的所有数据分片后,需要将数据分片组合成一个条带,以及在存储文中的所有条带后,需要将所有条带组合成一个Object。
上述实施例中出现的各种时长可以根据需要或者仿真或者经验等方式确定。
如图2所示,本发明实施例二读取分布式数据的系统中的读取设备包括:
位置确定模块200,用于确定需要读取的Object的数据分片的存储位置信息;
处理模块210,用于根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片。
位置确定模块,用于确定需要读取的Object的数据分片的存储位置信息;
处理模块,用于根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片。
较佳地,所述处理模块210具体用于:
根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储设备;同时向确定的所述至少一个存储设备请求数据分片。
较佳地,所述处理模块210还用于:
接收来自所述至少一个存储设备的数据分片之后,若接收到所述至少一个存储设备返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,在确定需要继续接收后,确定未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储设备请求数据分片。
较佳地,所述Object由多个条带组成,每个条带由多个数据分片组成。
较佳地,所述处理模块210还用于:
接收来自所述至少一个存储设备的数据分片之后,若在读取条带时长内对应的条带的所有数据分片未接收完成,在确定需要继续接收后,确定对应的条带中未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述处理模块210还用于:
在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
较佳地,所述处理模块210具体用于,根据下列方式判断是否需要继续接收:
判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
如图3所示,本发明实施例三读取分布式数据的系统中的存储设备包括:
数据分片确定模块300,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片;
发送模块310,用于将确定的数据分片发送给所述读取设备。
较佳地,所述发送模块310具体用于:
将确定的、且已存储的数据分片发送给所述读取设备。
较佳地,所述发送模块310还用于:
若确定的数据分片中有未存储的数据分片,在所述未存储的数据分片存储到所述存储设备后,向所述读取设备返回存储到所述存储设备的数据分片。
较佳地,所述发送模块310还用于:
在所述未存储的数据分片存储到所述存储设备时,若未超过存储时长,向所述读取设备返回存储到所述存储设备的数据分片。
较佳地,所述发送模块310还用于:
若在所述未存储的数据分片存储到所述存储设备时,超过存储时长,所述存储设备向所述读取设备返回读取失败消息。
基于同一发明构思,本发明实施例中还提供了读取分布式数据的方法,由于图4的方法对应的设备为本发明实施例读取分布式数据的系统中的读取设备,图5的方法对应的设备为本发明实施例读取分布式数据的系统中的存储设备,因此本发明实施例方法的实施可以参见系统的实施,重复之处不再赘述。
如图4所示,本发明实施例四读取分布式数据的方法包括:
步骤400、读取端确定需要读取的Object的数据分片的存储位置信息;
步骤401、所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片。
较佳地,所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,包括:
所述读取端根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储节点;
所述读取端同时向确定的所述至少一个存储节点请求数据分片。
较佳地,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
若接收到所述至少一个存储节点返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述Object由多个条带组成,每个条带由多个数据分片组成。
较佳地,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在读取条带时长内对应的条带的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定对应的条带中未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
较佳地,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;
若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
较佳地,所述读取端根据下列方式判断是否需要继续接收:
所述读取端判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
所述读取端判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
如图5所示,本发明实施例五读取分布式数据的方法包括:
步骤500、存储节点根据接收到的来自读取端的请求,确定所述读取端需要读取的Object的数据分片;
步骤501、所述存储节点将确定的数据分片发送给所述读取端。
较佳地,所述存储节点将确定的数据分片发送给所述读取端,包括:
所述存储节点将确定的、且已存储的数据分片发送给所述读取端。
较佳地,所述存储节点将确定的、且已存储的数据分片发送给所述读取端之后,还包括:
若确定的数据分片中有未存储的数据分片,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片。
较佳地,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片之前,还包括:
所述存储节点确定在所述未存储的数据分片存储到所述存储节点时,未超过存储时长。
较佳地,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,还包括:
若在所述未存储的数据分片存储到所述存储节点时,超过存储时长,所述存储节点向所述读取端返回读取失败消息。
如图6所示,本发明实施例六读取分布式数据的方法包括:
步骤600、读取端从MDS(MetaDataServer,元数据服务器,)处获取需要读取的Object的数据分片的存储位置信息。
较佳地,存储位置信息中包括Object偏移(offset)以及Object组织方式,以及数据节点IP端口地址,则读取端根据数据组织方式计算出分片在存储节点中的位置(比如raid4+1方式,Object的在Object中的Offset除以4得到分片在存储节点里的Offset)
从MDS获取存储位置信息只是举例说明,根据需要存储位置信息也可以通过能够存储所述存储位置信息的其他实体获取。
步骤601、读取端根据存储位置信息确定存储需要读取的Object的数据分片的至少一个存储节点,并向确定的至少一个存储节点建立连接。
步骤602、在长连接建立后,读取端同时向确定的所述至少一个存储节点请求数据分片。
步骤603、针对一个Object中的条带,读取端接收来自所述至少一个存储节点的数据分片之后,判断该条带对应的读取条带时长内该条带的所有数据分片是否都接收完成,如果是,则执行步骤604;否则,执行步骤607。
步骤604、针对一个Object中的条带,读取端判断所述Object中位于该条带之前的所有条带是否已存储;若是,则执行步骤605;否则,执行步骤606。
步骤605、将该条带进行存储,并执行步骤607。
步骤606、读取端等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储,并执行步骤607。
较佳地,如果之前的失败,那么读取端会停止读取后面的条带,重试N次任然失败后将读取错误告诉用户,由用户决定是否要继续尝试,或者用户去查找,读取端跳过此分片。
步骤607、读取端判断接收命令时长内是否接收到停止命令,若接收到,则结束本流程;否则,返回步骤602。
如图7所示,本发明实施例七读取分布式数据的方法包括:
步骤701、存储节点收到来自读取端的读取请求。
步骤702、存储节点判断该请求对应的数据分片是否已经全部存储,如果是,则执行步骤703;否则,执行步骤704。
步骤703、存储节点向读取端返回请求对应的所有数据分片,并结束本流程。
步骤704、存储节点向读取端返回请求对应的已存储的数据分片。
步骤705、存储节点将该请求标记为异步读取,并保存该请求。
步骤706、存储节点判断存储时长内,请求对应的未存储的数据分片是否已经存储,如果是,则执行步骤707;否则,执行步骤708。
步骤707、存储节点向读取端返回剩余的数据分片,并结束本流程。
较佳地,存储节点可以在存储时长内,收到一个该请求对应的未存储的数据分片后,就将该数据分片返回给读取段,而不用等到都接收到再返回。
步骤708、存储节点向读取端返回读取失败消息,并结束本流程。
从上述内容可以看出:本发明实施例读取端根据需要读取的Object的数据分片的存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片,由于本发明实施例能够以数据分片为单位进行读取,不需要整个Object的数据分片全部存储完成才可以读取,从而提高了读取分布式数据的方案实时性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (23)
1.一种读取分布式数据的方法,其特征在于,该方法包括:
读取端确定需要读取的对象Object的数据分片的存储位置信息;
所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,并接收来自所述至少一个存储节点的数据分片。
2.如权利要求1所述的方法,其特征在于,所述读取端根据所述存储位置信息向至少一个存储节点请求数据分片,包括:
所述读取端根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储节点;
所述读取端同时向确定的所述至少一个存储节点请求数据分片。
3.如权利要求1所述的方法,其特征在于,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
若接收到所述至少一个存储节点返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
4.如权利要求1所述的方法,其特征在于,所述Object由多个条带组成,每个条带由多个数据分片组成;
所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在读取条带时长内对应的条带的所有数据分片未接收完成,所述读取端在确定需要继续接收后,确定对应的条带中未接收的数据分片;
所述读取端根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
5.如权利要求4所述的方法,其特征在于,所述读取端接收来自所述至少一个存储节点的数据分片之后,还包括:
所述读取端在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;
若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
6.如权利要求3或4所述的方法,其特征在于,所述读取端根据下列方式判断是否需要继续接收:
所述读取端判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
所述读取端判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
7.一种读取分布式数据的方法,其特征在于,该方法包括:
存储节点根据接收到的来自读取端的请求,确定所述读取端需要读取的Object的数据分片;
所述存储节点将确定的数据分片发送给所述读取端。
8.如权利要求7所述的方法,其特征在于,所述存储节点将确定的数据分片发送给所述读取端,包括:
所述存储节点将确定的、且已存储的数据分片发送给所述读取端。
9.如权利要求8所述的方法,其特征在于,所述存储节点将确定的、且已存储的数据分片发送给所述读取端之后,还包括:
若确定的数据分片中有未存储的数据分片,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片。
10.如权利要求9所述的方法,其特征在于,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,向所述读取端返回存储到所述存储节点的数据分片之前,还包括:
所述存储节点确定在所述未存储的数据分片存储到所述存储节点时,未超过存储时长。
11.如权利要求10所述的方法,其特征在于,所述存储节点保存收到的所述请求,并在所述未存储的数据分片存储到所述存储节点后,还包括:
若在所述未存储的数据分片存储到所述存储节点时,超过存储时长,所述存储节点向所述读取端返回读取失败消息。
12.一种读取分布式数据的读取设备,其特征在于,该读取设备包括:
位置确定模块,用于确定需要读取的Object的数据分片的存储位置信息;
处理模块,用于根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片。
13.如权利要求12所述的读取设备,其特征在于,所述处理模块具体用于:
根据所述存储位置信息,确定存储需要读取的Object的数据分片的至少一个存储设备;同时向确定的所述至少一个存储设备请求数据分片。
14.如权利要求12所述的读取设备,其特征在于,所述处理模块还用于:
接收来自所述至少一个存储设备的数据分片之后,若接收到所述至少一个存储设备返回的读取失败消息或在读取Object时长内需要读取的Object的所有数据分片未接收完成,在确定需要继续接收后,确定未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储设备请求数据分片。
15.如权利要求12所述的读取设备,其特征在于,所述Object由多个条带组成,每个条带由多个数据分片组成;
所述处理模块还用于:
接收来自所述至少一个存储设备的数据分片之后,若在读取条带时长内对应的条带的所有数据分片未接收完成,在确定需要继续接收后,确定对应的条带中未接收的数据分片;根据所述存储位置信息向存储未接收的数据分片的存储节点请求数据分片。
16.如权利要求15所述的读取设备,其特征在于,所述处理模块还用于:
在接收到一个条带的所有数据分片后,判断所述Object中位于该条带之前的所有条带是否已存储;若是,则将该条带进行存储,否则等待所述Object中位于该条带之前的所有条带已存储后,将该条带进行存储。
17.如权利要求14或15所述的读取设备,其特征在于,所述处理模块具体用于,根据下列方式判断是否需要继续接收:
判断接收命令时长内是否接收到停止命令,若接收到,则确定不需要继续接收;否则,确定需要继续接收;或
判断接收命令时长内是否接收到继续命令,若接收到,则确定需要继续接收;否则,确定不需要继续接收。
18.一种读取分布式数据的存储设备,其特征在于,该存储设备包括:
数据分片确定模块,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片;
发送模块,用于将确定的数据分片发送给所述读取设备。
19.如权利要求18所述的存储设备,其特征在于,所述发送模块具体用于:
将确定的、且已存储的数据分片发送给所述读取设备。
20.如权利要求19所述的存储设备,其特征在于,所述发送模块还用于:
若确定的数据分片中有未存储的数据分片,在所述未存储的数据分片存储到所述存储设备后,向所述读取设备返回存储到所述存储设备的数据分片。
21.如权利要求20所述的存储设备,其特征在于,所述发送模块还用于:
在所述未存储的数据分片存储到所述存储设备时,若未超过存储时长,向所述读取设备返回存储到所述存储设备的数据分片。
22.如权利要求21所述的存储设备,其特征在于,所述发送模块还用于:
若在所述未存储的数据分片存储到所述存储设备时,超过存储时长,所述存储设备向所述读取设备返回读取失败消息。
23.一种读取分布式数据的系统,其特征在于,该系统包括:
读取设备,用于确定需要读取的Object的数据分片的存储位置信息;根据所述存储位置信息向至少一个存储设备请求数据分片,并接收来自所述至少一个存储设备的数据分片;
存储设备,用于根据接收到的来自读取设备的请求,确定所述读取设备需要读取的Object的数据分片;将确定的数据分片发送给所述读取设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410363015.4A CN105471930B (zh) | 2014-07-28 | 2014-07-28 | 一种读取分布式数据的方法、系统和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410363015.4A CN105471930B (zh) | 2014-07-28 | 2014-07-28 | 一种读取分布式数据的方法、系统和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105471930A true CN105471930A (zh) | 2016-04-06 |
CN105471930B CN105471930B (zh) | 2019-03-26 |
Family
ID=55609198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410363015.4A Active CN105471930B (zh) | 2014-07-28 | 2014-07-28 | 一种读取分布式数据的方法、系统和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105471930B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245119A (zh) * | 2018-11-02 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种文件整理方法及存储系统 |
WO2020132849A1 (zh) * | 2018-12-25 | 2020-07-02 | 华为技术有限公司 | 分布式存储系统中数据存储方法、装置及计算机程序产品 |
US20210271546A1 (en) * | 2019-05-24 | 2021-09-02 | Violin Systems Llc | Dynamic memory management system |
CN113469284A (zh) * | 2021-07-26 | 2021-10-01 | 浙江大华技术股份有限公司 | 一种数据分析的方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217551A (zh) * | 2008-01-14 | 2008-07-09 | 中国科学院计算技术研究所 | 本地存储协议接口和网络存储协议接口间的数据传输方法 |
CN101587425A (zh) * | 2009-06-16 | 2009-11-25 | 杭州华三通信技术有限公司 | 一种增加独立磁盘冗余阵列冗余性的方法及装置 |
CN101808095A (zh) * | 2010-03-22 | 2010-08-18 | 华中科技大学 | 一种分布式存储环境下的加密副本组织方法 |
CN102682012A (zh) * | 2011-03-14 | 2012-09-19 | 成都市华为赛门铁克科技有限公司 | 一种文件系统内读写数据的方法及装置 |
CN102801784A (zh) * | 2012-07-03 | 2012-11-28 | 华为技术有限公司 | 一种分布式数据存储方法及设备 |
CN103227826A (zh) * | 2013-04-23 | 2013-07-31 | 蓝汛网络科技(北京)有限公司 | 一种文件传输方法及装置 |
US20140181418A1 (en) * | 2008-08-25 | 2014-06-26 | International Business Machines Corporation | Managing global cache coherency in a distributed shared caching for clustered file systems |
-
2014
- 2014-07-28 CN CN201410363015.4A patent/CN105471930B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217551A (zh) * | 2008-01-14 | 2008-07-09 | 中国科学院计算技术研究所 | 本地存储协议接口和网络存储协议接口间的数据传输方法 |
US20140181418A1 (en) * | 2008-08-25 | 2014-06-26 | International Business Machines Corporation | Managing global cache coherency in a distributed shared caching for clustered file systems |
CN101587425A (zh) * | 2009-06-16 | 2009-11-25 | 杭州华三通信技术有限公司 | 一种增加独立磁盘冗余阵列冗余性的方法及装置 |
CN101808095A (zh) * | 2010-03-22 | 2010-08-18 | 华中科技大学 | 一种分布式存储环境下的加密副本组织方法 |
CN102682012A (zh) * | 2011-03-14 | 2012-09-19 | 成都市华为赛门铁克科技有限公司 | 一种文件系统内读写数据的方法及装置 |
CN102801784A (zh) * | 2012-07-03 | 2012-11-28 | 华为技术有限公司 | 一种分布式数据存储方法及设备 |
CN103227826A (zh) * | 2013-04-23 | 2013-07-31 | 蓝汛网络科技(北京)有限公司 | 一种文件传输方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245119A (zh) * | 2018-11-02 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种文件整理方法及存储系统 |
US12001399B2 (en) | 2018-11-02 | 2024-06-04 | Zhejiang Dahua Technology Co., Ltd. | Systems and methods for storage medium management |
WO2020132849A1 (zh) * | 2018-12-25 | 2020-07-02 | 华为技术有限公司 | 分布式存储系统中数据存储方法、装置及计算机程序产品 |
CN111936960A (zh) * | 2018-12-25 | 2020-11-13 | 华为技术有限公司 | 分布式存储系统中数据存储方法、装置及计算机程序产品 |
US11775194B2 (en) | 2018-12-25 | 2023-10-03 | Huawei Cloud Computing Technolgoies Co., Ltd. | Data storage method and apparatus in distributed storage system, and computer program product |
US20210271546A1 (en) * | 2019-05-24 | 2021-09-02 | Violin Systems Llc | Dynamic memory management system |
US11586501B2 (en) * | 2019-05-24 | 2023-02-21 | Innovations In Memory Llc | Dynamic memory management system |
CN113469284A (zh) * | 2021-07-26 | 2021-10-01 | 浙江大华技术股份有限公司 | 一种数据分析的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105471930B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829613B (zh) | 数据存储方法及存储设备 | |
CN105849688B (zh) | 数据写入的方法、装置、设备和存储系统 | |
CN104144202B (zh) | Hadoop分布式文件系统的访问方法、系统和装置 | |
CN105471930A (zh) | 一种读取分布式数据的方法、系统和设备 | |
US10803109B2 (en) | Method and device for reading and writing video data in NAS device | |
CN104461698A (zh) | 虚拟磁盘动态挂载的方法、管理装置及分布式存储系统 | |
CN103581216A (zh) | 分片数据存储的方法、设备和系统 | |
CN106126374A (zh) | 数据写入方法、数据读取方法及装置 | |
CN103389945B (zh) | 一种内存管理的方法及装置 | |
KR102387922B1 (ko) | 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템 | |
WO2023024246A1 (zh) | 一种乱序数据的产生方法、装置、设备及存储介质 | |
CN103530066A (zh) | 一种数据存储方法、装置及系统 | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
US20190114178A1 (en) | Installing of operating system | |
CN108445788A (zh) | 一种酒店场景控制方法及相关装置 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
CN109274721B (zh) | 一种基于虚拟磁盘映射的LAN-free传输方法及系统 | |
CN102572011A (zh) | 数据处理方法、装置和系统 | |
CN114422537A (zh) | 多云存储系统、多云数据读写方法及电子设备 | |
CN105471955A (zh) | 分布式文件系统的写方法、客户端设备及分布式文件系统 | |
CN109815059A (zh) | 一种数据备份方法、系统及板卡和存储介质 | |
CN103838746A (zh) | 多cpu系统共享存储数据的方法及该系统 | |
CN105512091A (zh) | 一种内存分配方法及装置 | |
CN105868121B (zh) | 一种信息处理方法及电子设备 | |
CN103179162A (zh) | 一种输出日志的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |