CN111639140A - 分布式数据存储方法、设备和存储介质 - Google Patents
分布式数据存储方法、设备和存储介质 Download PDFInfo
- Publication number
- CN111639140A CN111639140A CN202010511279.5A CN202010511279A CN111639140A CN 111639140 A CN111639140 A CN 111639140A CN 202010511279 A CN202010511279 A CN 202010511279A CN 111639140 A CN111639140 A CN 111639140A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- node
- query request
- request information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013500 data storage Methods 0.000 title claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式数据存储方法、设备和存储介质,该方法包括:接收查询请求信息,将当前节点的IP地址加入查询请求信息的路径信息;根据第一数据查询本地是否存在第一区块数据:否,则将更新后的查询请求信息发送给若干节点以供执行分布式数据存储方法;是,则根据路径信息返回第一数据集合和更新后的查询请求信息;接收到第一数据集合和更新后的查询请求信息,存储第二区块数据并更新相应的过期时刻,并根据更新后的路径信息返回第一数据集合和更新后的查询请求信息;在当前时刻为预配置的时刻时,检查当前时刻是否超过过期时刻:是,则删除所存储的第二区块数据。本申请在不部署缓存服务器的基础上保证分布式存储的数据的可读性。
Description
技术领域
本申请涉及分布式存储和区块链技术领域,具体涉及一种分布式数据存储方法、设备和存储介质。
背景技术
在传统分布式存储中,比如布置4台分布式存储的机器,为了满足访问量的需要,可能每个分布式存储的机器上再部署1个缓存服务器;缓存服务器用于缓存从分布式存储的机器的数据库中读取出来的数据。部署缓存服务器需要花费较多的费用。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种在不部署缓存服务器的基础上保证分布式存储的数据的可读性的分布式数据存储方法、设备和存储介质。
第一方面,本发明提供一种适用于区块链节点的分布式数据存储方法,区块链网络为kad网络,上述方法包括:
接收查询第一区块数据的第一查询请求信息,将当前节点的IP地址加入第一查询请求信息的路径信息;其中,第一查询请求信息包括第一区块数据对应的第一数据;
根据第一数据查询本地是否存在第一区块数据:
否,则将更新后的第一查询请求信息发送给所持有的路由表中的第一数量个节点,以供执行分布式数据存储方法;
是,则根据路径信息返回第一数据集合和更新后的第一查询请求信息;其中,第一数据集合包括第二区块数据和第一数据,第二区块数据为第一数据对应的各区块的区块数据;
响应于接收到第一节点发送的第一数据集合和更新后的第一查询请求信息,存储第二区块数据,更新所存储的第二区块数据的第一过期时刻,并根据更新后的路径信息返回第一数据集合和更新后的第一查询请求信息;
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过第一过期时刻:
是,则删除所存储的第二区块数据。
第二方面,本发明提供一种适用于区块链节点的分布式数据存储方法,区块链网络为kad网络,上述方法包括:
接收第二节点生成的查询第一区块数据的第一查询请求信息;其中,第一查询请求信息包括第一区块数据对应的第一数据;
根据第一数据查询本地是否存在第一区块数据:
否,则分别计算所持有的路由表中的各节点的节点ID与第一数据之间的各第一距离;以及,
将第一距离最小的节点的节点ID与IP地址返回给第二节点,以供执行分布式数据存储方法;
是,则返回第一数据集合;其中,第一数据集合包括第二区块数据和第一数据,第二区块数据为第一数据对应的各区块的区块数据,以供第二节点:
存储第二区块数据,并更新所存储的第二区块数据的第一过期时刻;
向除去返回第一数据集合以外的其它发送过第一查询请求信息的各区块链节点发送第一数据集合;
响应于接收到第二节点发送的第一数据集合,存储第二区块数据,更新所存储的第二区块数据的第一过期时刻;
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过当前节点的第一过期时刻:
是,则删除所存储的第二区块数据。
第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的分布式数据存储方法。
第四方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的分布式数据存储方法。
本发明诸多实施例提供的分布式数据存储方法、设备和存储介质通过接收查询请求信息,将当前节点的IP地址加入查询请求信息的路径信息;根据第一数据查询本地是否存在第一区块数据:否,则将更新后的查询请求信息发送给若干节点以供执行分布式数据存储方法;是,则根据路径信息返回第一数据集合和更新后的查询请求信息;接收到第一数据集合和更新后的查询请求信息,存储第二区块数据并更新相应的过期时刻,并根据更新后的路径信息返回第一数据集合和更新后的查询请求信息;在当前时刻为预配置的时刻时,检查当前时刻是否超过过期时刻:是,则删除所存储的第二区块数据的方法,在不部署缓存服务器的基础上保证分布式存储的数据的可读性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种分布式数据存储方法的流程图。
图2为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
在现有技术中,以每1000个区块的区块数据将进行分布式存储为例,具体为:假设每个节点都存有block(1)~block(10999),回滚深度为10000;在节点A生成block(11000)时,向其它区块链节点广播block(11000),具体的广播、共识机制在此不做赘述;当block(11000)执行成功时即认为block(1)~block(1000)不会被改变了;节点A根据block(1)~block(1000)计算第一数据chunkhash(1-1000),节点与chunkhash(1-1000)的距离的计算方法为:xor(节点id,chunkhash(1-1000));节点A通过迭代查询的方式最终找到D1为全局最近节点(即xor(节点id(D1),chunkhash(1-1000))最小),节点A向D1发送数据集合{chunkhash(1-1000)、1、1000}(数据集合也可以配置为{chunkhash(1-1000)、chunk},chunk为block(1)~block(1000)或block(1)~block(1000)的压缩数据),D1收到数据集合时,在本地P2P模块额外打包一份block(1)~block(1000);在一段时间后,区块链中所有节点的blockchain模块都会删除block(1)~block(1000);区块链中所有节点会存储区块与chunkhash的对应关系,即,(blockhash(1),chunkhash(1-1000))、(blockhash(2),chunkhash(1-1000))……(blockhash(1000),chunkhash(1-1000))。
图1为本发明一实施例提供的一种分布式数据存储方法的流程图。如图1所示,在本实施例中,本发明提供一种适用于区块链节点的分布式数据存储方法,区块链网络为kad网络,上述方法包括:
S12:接收查询第一区块数据的第一查询请求信息,将当前节点的IP地址加入第一查询请求信息的路径信息;其中,第一查询请求信息包括第一区块数据对应的第一数据;
S141:根据第一数据查询本地是否存在第一区块数据:
否,则执行步骤S142:将更新后的第一查询请求信息发送给所持有的路由表中的第一数量个节点,以供执行分布式数据存储方法;
是,则执行步骤S143:根据路径信息返回第一数据集合和更新后的第一查询请求信息;其中,第一数据集合包括第二区块数据和第一数据,第二区块数据为第一数据对应的各区块的区块数据;
S16:响应于接收到第一节点发送的第一数据集合和更新后的第一查询请求信息,存储第二区块数据,更新所存储的第二区块数据的第一过期时刻,并根据更新后的路径信息返回第一数据集合和更新后的第一查询请求信息;
S181:判断当前时刻是否为预配置的时刻:
是,则执行步骤S182:检查当前时刻是否超过第一过期时刻:
是,则执行步骤S1821:删除所存储的第二区块数据。
具体地,以将“将更新后的第一查询请求信息发送给所持有的路由表中的第一数量个节点”配置为“根据第一距离从小到大的顺序从所持有的路由表中选取第一数量个节点;其中,第一距离由所持有的路由表中的各节点的节点ID与第一数据计算”;第一数量为10为例;假设节点D0想要查询block(100)-block(200)的区块数据,D0查询block(1)-block(1000)的路径为D10→D20→D30(找到数据),D30、D40~D48是区块链网络中离chunkhash(1-1000)距离最小的10个节点;block(100)-block(200)对应的第一数据均为chunkhash(1-1000);
D0想要查询block(100)-block(200)的区块数据,由于block(100)-block(200)对应的第一数据为chunkhash(1-1000),D0生成第一查询请求信息{chunkhash(1-1000),path:null};D0计算所持有的路由表中的各节点与chunkhash(1-1000)的距离,根据距离从小到大的顺序从所持有的路由表中选取10个节点(假设为D10~D19);D0将{chunkhash(1-1000),path:null}发送给D10~D19;
D10~D19中以D10为例,在步骤S12中,D10接收{chunkhash(1-1000),path:null},将IP(D10)地址加入第一查询请求信息的路径信息{chunkhash(1-1000),path:D10};
在步骤S141中,D10根据chunkhash(1-1000)查询本地是否存在block(100)-block(200):
D10中不存在chunkhash(1-1000)对应的区块数据block(1)-block(1000),因此也不存在block(100)-block(200),则执行步骤S142,D10计算所持有的路由表中的各节点与chunkhash(1-1000)的距离,根据距离从小到大的顺序从所持有的路由表中选取10个节点(假设为D20~D29);D10将{chunkhash(1-1000),path:D10}发送给D20~D29;
D20~D29中以D20为例,在步骤S12中,D20接收{chunkhash(1-1000),path:D10},将IP(D20)地址加入第一查询请求信息的路径信息{chunkhash(1-1000),path:D10,D20};
在步骤S141中,D20根据chunkhash(1-1000)查询本地是否存在block(100)-block(200):
D20中不存在chunkhash(1-1000)对应的区块数据block(1)-block(1000),因此也不存在block(100)-block(200),则执行步骤S142,D20计算所持有的路由表中的各节点与chunkhash(1-1000)的距离,根据距离从小到大的顺序从所持有的路由表中选取10个节点(假设为D30~D39);D20将{chunkhash(1-1000),path:D10,D20}发送给D30~D39;
D30~D39中以D30为例,在步骤S12中,D30接收{chunkhash(1-1000),path:D10,D20},将IP(D10)地址加入第一查询请求信息的路径信息{chunkhash(1-1000),path:D10,D20,D30};
在步骤S141中,D30根据chunkhash(1-1000)查询本地是否存在block(1)-block(1000):
D30中存在block(1)-block(1000),则执行步骤S143,向D20返回数据集合[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30};
D20执行步骤S16,响应于接收到D30发送的[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30},存储block(1)-block(1000),更新block(1)-block(1000)的第一过期时刻(假设接收到[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30}的时间为2020年5月20日2:00:00,则将第一过期时刻配置为2020年5月21日2:00:00),并向D10返回[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30};
D10执行步骤S16,响应于接收到D20发送的[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30},存储block(1)-block(1000),更新block(1)-block(1000)的第一过期时刻(假设接收到[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30}的时间为2020年5月20日2:00:01,则将第一过期时刻配置为2020年5月21日2:00:01),并向D10返回[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30};
D0执行步骤S16,响应于接收到D20发送的[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30},存储block(1)-block(1000),更新block(1)-block(1000)的第一过期时刻(假设接收到[chunkhash(1-1000),block(1)-block(1000)]和{chunkhash(1-1000),path:D10,D20,D30}的时间为2020年5月20日2:00:021,则将第一过期时刻配置为2020年5月21日2:00:02);
D0此时存储有block(1)-block(1000),可以从中获取block(100)-block(200)的区块数据;
此时,D0、D10、D20上也都存有block(1)-block(1000);其它区块链节点可以从D0、D10、D20请求到block(1)-block(1000)的区块数据。
假设预配置的时刻为每天的0:00:00:
D0执行步骤S181,在2020年5月21日0:00:00执行步骤S182,检查2020年5月21日0:00:00是否超过2020年5月21日2:00:00:
否,则D0向D10~D19发送[chunkhash(1-1000),block(1)-block(1000)];
由于D30、D40~D48是全局最优的10个节点,且D10、D20也比D0的距离更小,D0没有再收到[chunkhash(1-1000),block(1)-block(1000)];
D0执行步骤S181,在2020年5月22日0:00:00执行步骤S182,检查2020年5月22日0:00:00是否超过2020年5月21日2:00:00:
是,则执行步骤S1821:D0删除block(1)-block(1000)。
D10、D20与D0的机制相同,只是D10会接收D0在5月21日0:00:00发送的[chunkhash(1-1000),block(1)-block(1000)],假设接收的时刻为5月21日0:00:01,则将第一过期时刻配置为2020年5月22日0:00:01;这使得D10在5月22日时还存有block(1)-block(1000),并仍向D10~D19发送[chunkhash(1-1000),block(1)-block(1000)];
最终,D10在5月23日0:00:00删除所存储的block(1)-block(1000),D20在5月23日0:00:00删除所存储的block(1)-block(1000);
由于D30、D40~D48是区块链网络中离chunkhash(1-1000)距离最小的10个节点,在D30、D40~D48不宕机的情况下,D30、D40~D48会互相发送[chunkhash(1-1000),block(1)-block(1000)],D30、D40~D48的第一过期时刻将不断更新,因此D30、D40~D48将不会删除所存储的block(1)-block(1000)。
在更多实施例中,还可以根据实际需求将“将更新后的第一查询请求信息发送给所持有的路由表中的第一数量个节点”配置为“将更新后的第一查询请求信息发送给所持有的路由表中的各节点”,可实现相同的技术效果。
在更多实施例中,第一数量还可以根据实际需求进行配置,可实现相同的技术效果。
在更多实施例中,如果D0想要查询的是block(100)-block(200)的区块数据,则D0生成第一查询请求信息还可以根据实际需求配置为{chunkhash(1-1000),[100,200],path:null};相应的,D30向D20返回数据集合[chunkhash(1-1000),block(100)-block(200)]和{chunkhash(1-1000),path:D10,D20,D30},可实现相同的技术效果。
上述实施例在不部署缓存服务器的基础上保证分布式存储的数据的可读性。
优选地,将更新后的第一查询请求信息发送给所持有的路由表中的第一数量个节点包括:
根据第一距离从小到大的顺序从所持有的路由表中选取第一数量个节点;其中,第一距离由所持有的路由表中的各节点的节点ID与第一数据计算。
上述实施例的分布式数据存储原理可参考图1所示的方法,此处不再赘述。
在图1所示的实施例中,若路径信息很长,则D0需要花费较长的时间才能获取block(1)-block(1000)。
针对上述问题,可以通过如下实施例进行解决;
优选地,根据路径信息返回第一数据集合和更新后的第一查询请求信息包括:
根据路径信息返回第一数据集合和更新后的第一查询请求信息;
向路径信息中的第一个节点发送第一数据集合。
此时,D30直接向D10发送[chunkhash(1-1000),block(1)-block(1000)],D10在接收[chunkhash(1-1000),block(1)-block(1000)]后直接向D0返回[chunkhash(1-1000),block(1)-block(1000)],D0从中获取block(100)-block(200)的区块数据。
本发明还提供一种适用于区块链节点的分布式数据存储方法,区块链网络为kad网络,上述方法包括:
接收第二节点生成的查询第一区块数据的第一查询请求信息;其中,第一查询请求信息包括第一区块数据对应的第一数据;
根据第一数据查询本地是否存在第一区块数据:
否,则分别计算所持有的路由表中的各节点的节点ID与第一数据之间的各第一距离;以及,
将第一距离最小的节点的节点ID与IP地址返回给第二节点,以供执行分布式数据存储方法;
是,则返回第一数据集合;其中,第一数据集合包括第一区块数据和第一数据,以供第二节点:
存储第一区块数据,并更新所存储的第一区块数据的第一过期时刻;
向除去返回第一数据集合的发送过第一查询请求信息的各区块链节点发送第一数据集合;
响应于接收到第二节点发送的第一数据集合,存储第一区块数据,更新所存储的第一区块数据的第一过期时刻;
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过第一过期时刻:
是,则删除所存储的第一区块数据。
具体地,假设节点D0想要查询block(100)-block(200)的区块数据,D0查询block(1)-block(1000)的路径为D10→D20→D30(找到数据),D30、D40~D48是区块链网络中离chunkhash(1-1000)距离最小的10个节点;block(100)-block(200)对应的第一数据均为chunkhash(1-1000);
D0想要查询block(100)-block(200)的区块数据,由于block(100)-block(200)对应的第一数据为chunkhash(1-1000),D0生成第一查询请求信息{chunkhash(1-1000)};D0计算所持有的路由表中的各节点与chunkhash(1-1000)的距离,找到D10为距离最小的节点,D0将{chunkhash(1-1000)}发送给D10;
D10接收{chunkhash(1-1000)};
D10根据chunkhash(1-1000)查询本地是否存在block(100)-block(200):
D10中不存在chunkhash(1-1000)对应的区块数据block(1)-block(1000),因此也不存在block(100)-block(200),则分别计算所持有的路由表中的各节点的节点ID与第一数据之间的各距离;以及,
将距离最小的节点D20的节点ID与IP地址返回给D0;
D0将{chunkhash(1-1000)}发送给D20;
D20接收{chunkhash(1-1000)};
D20根据chunkhash(1-1000)查询本地是否存在block(100)-block(200):
D20中不存在chunkhash(1-1000)对应的区块数据block(1)-block(1000),因此也不存在block(100)-block(200),则分别计算所持有的路由表中的各节点的节点ID与第一数据之间的各距离;以及,
将距离最小的节点D30的节点ID与IP地址返回给D0;
D0将{chunkhash(1-1000)}发送给D30;
D30接收{chunkhash(1-1000)};
D30根据chunkhash(1-1000)查询本地是否存在block(100)-block(200):
D30存在chunkhash(1-1000)对应的区块数据block(1)-block(1000),因此存在block(100)-block(200),则返回[chunkhash(1-1000),block(1)-block(1000)];
D0存储block(1)-block(1000),并更新所存储的block(1)-block(1000)的第一过期时刻;
D0向D1、D2发送第一数据集合;
D1、D2响应于接收到D0发送的[chunkhash(1-1000),block(1)-block(1000)],存储block(1)-block(1000),更新所存储的block(1)-block(1000)的第一过期时刻;
D0此时存储有block(1)-block(1000),可以从中获取block(100)-block(200)的区块数据;
此时,D0、D10、D20上也都存有block(1)-block(1000);其它区块链节点可以从D0、D10、D20请求到block(1)-block(1000)的区块数据。
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过第一过期时刻:
是,则删除所存储的第一区块数据。
上述过期删除机制与图1所示的对应机制相同,此处不再赘述。
上述实施例与图1所示的实施例的不同之处在于,上述实施例的响应速度更快。
图2为本发明一实施例提供的一种设备的结构示意图。
如图2所示,作为另一方面,本申请还提供了一种设备200,包括一个或多个中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM203中,还存储有设备200操作所需的各种程序和数据。CPU201、ROM202以及RAM203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请提供的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (6)
1.一种分布式数据存储方法,其特征在于,区块链网络为kad网络,所述方法适用于区块链节点,所述方法包括:
接收查询第一区块数据的第一查询请求信息,将当前节点的IP地址加入所述第一查询请求信息的路径信息;其中,所述第一查询请求信息包括所述第一区块数据对应的第一数据;
根据所述第一数据查询本地是否存在所述第一区块数据:
否,则将更新后的所述第一查询请求信息发送给所持有的路由表中的第一数量个节点,以供执行所述分布式数据存储方法;
是,则根据所述路径信息返回第一数据集合和更新后的所述第一查询请求信息;其中,所述第一数据集合包括第二区块数据和所述第一数据,所述第二区块数据为所述第一数据对应的各区块的区块数据;
响应于接收到第一节点发送的所述第一数据集合和更新后的所述第一查询请求信息,存储所述第二区块数据,更新所存储的所述第二区块数据的第一过期时刻,并根据更新后的路径信息返回所述第一数据集合和更新后的所述第一查询请求信息;
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过所述第一过期时刻:
是,则删除所存储的所述第二区块数据。
2.根据权利要求1所述的方法,其特征在于,所述将更新后的所述第一查询请求信息发送给所持有的路由表中的第一数量个节点包括:
根据第一距离从小到大的顺序从所持有的路由表中选取第一数量个节点;其中,所述第一距离由所持有的路由表中的各节点的节点ID与所述第一数据计算。
3.根据权利要求1所述的方法,其特征在于,所述根据所述路径信息返回第一数据集合和更新后的所述第一查询请求信息包括:
根据所述路径信息返回第一数据集合和更新后的所述第一查询请求信息;
向所述路径信息中的第一个节点发送所述第一数据集合。
4.一种分布式数据存储方法,其特征在于,区块链网络为kad网络,所述方法适用于区块链节点,所述方法包括:
接收第二节点生成的查询第一区块数据的第一查询请求信息;其中,所述第一查询请求信息包括所述第一区块数据对应的第一数据;
根据所述第一数据查询本地是否存在所述第一区块数据:
否,则分别计算所持有的路由表中的各节点的节点ID与所述第一数据之间的各第一距离;以及,
将所述第一距离最小的节点的节点ID与IP地址返回给所述第二节点,以供执行所述分布式数据存储方法;
是,则返回第一数据集合;其中,所述第一数据集合包括第二区块数据和所述第一数据,所述第二区块数据为所述第一数据对应的各区块的区块数据,以供所述第二节点:
存储所述第二区块数据,并更新所存储的所述第二区块数据的第一过期时刻;
向除去返回所述第一数据集合以外的其它发送过所述第一查询请求信息的各区块链节点发送所述第一数据集合;
响应于接收到所述第二节点发送的所述第一数据集合,存储所述第二区块数据,更新所存储的所述第二区块数据的第一过期时刻;
判断当前时刻是否为预配置的时刻:
是,则检查当前时刻是否超过当前节点的第一过期时刻:
是,则删除所存储的所述第二区块数据。
5.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-4中任一项所述的方法。
6.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010511279.5A CN111639140A (zh) | 2020-06-08 | 2020-06-08 | 分布式数据存储方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010511279.5A CN111639140A (zh) | 2020-06-08 | 2020-06-08 | 分布式数据存储方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111639140A true CN111639140A (zh) | 2020-09-08 |
Family
ID=72330407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010511279.5A Pending CN111639140A (zh) | 2020-06-08 | 2020-06-08 | 分布式数据存储方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111639140A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112087530A (zh) * | 2020-11-02 | 2020-12-15 | 支付宝(杭州)信息技术有限公司 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
CN112182029A (zh) * | 2020-09-30 | 2021-01-05 | 杭州复杂美科技有限公司 | 数据查询方法、设备和存储介质 |
CN112988852A (zh) * | 2021-05-11 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 基于区块链的数据管理方法、设备以及介质 |
WO2021248876A1 (zh) * | 2020-06-08 | 2021-12-16 | 江苏复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239759A1 (en) * | 2006-04-07 | 2007-10-11 | Microsoft Corporation | Range and Cover Queries in Overlay Networks |
US20120041970A1 (en) * | 2010-08-12 | 2012-02-16 | Cdnetworks Co., Ltd. | Distributed data cache for on-demand application acceleration |
CN103139076A (zh) * | 2011-11-23 | 2013-06-05 | 中兴通讯股份有限公司 | 分布式哈希表互通网络系统、域间节点及实现方法 |
CN105187308A (zh) * | 2015-05-07 | 2015-12-23 | 深圳市迪菲特科技股份有限公司 | 一种资源节点查找方法及装置 |
WO2018036549A1 (zh) * | 2016-08-25 | 2018-03-01 | 中兴通讯股份有限公司 | 分布式数据库查询方法、装置及管理系统 |
WO2018040722A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 表数据查询方法及装置 |
CN110071875A (zh) * | 2019-05-05 | 2019-07-30 | 杭州复杂美科技有限公司 | 路径查询方法、数据传输方法、设备和存储介质 |
CN110083745A (zh) * | 2019-04-30 | 2019-08-02 | 杭州复杂美科技有限公司 | 数据查询方法、设备和存储介质 |
-
2020
- 2020-06-08 CN CN202010511279.5A patent/CN111639140A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239759A1 (en) * | 2006-04-07 | 2007-10-11 | Microsoft Corporation | Range and Cover Queries in Overlay Networks |
US20120041970A1 (en) * | 2010-08-12 | 2012-02-16 | Cdnetworks Co., Ltd. | Distributed data cache for on-demand application acceleration |
CN103139076A (zh) * | 2011-11-23 | 2013-06-05 | 中兴通讯股份有限公司 | 分布式哈希表互通网络系统、域间节点及实现方法 |
CN105187308A (zh) * | 2015-05-07 | 2015-12-23 | 深圳市迪菲特科技股份有限公司 | 一种资源节点查找方法及装置 |
WO2018036549A1 (zh) * | 2016-08-25 | 2018-03-01 | 中兴通讯股份有限公司 | 分布式数据库查询方法、装置及管理系统 |
WO2018040722A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 表数据查询方法及装置 |
CN110083745A (zh) * | 2019-04-30 | 2019-08-02 | 杭州复杂美科技有限公司 | 数据查询方法、设备和存储介质 |
CN110071875A (zh) * | 2019-05-05 | 2019-07-30 | 杭州复杂美科技有限公司 | 路径查询方法、数据传输方法、设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
PETAR MAYMOUNKOV 等: "Kademlia: A Peer-to-Peer Information System Based on the XOR Metric", 《HTTPS://WWW.RESEARCHGATE.NET/PUBLICATION/2492563》 * |
SHUWOOM: "KADEMLIA算法学习", 《HTTPS://SHUWOOM.COM/?P=813》 * |
丁凯: "Kademlia协议", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/38425656》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021248876A1 (zh) * | 2020-06-08 | 2021-12-16 | 江苏复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
CN112182029A (zh) * | 2020-09-30 | 2021-01-05 | 杭州复杂美科技有限公司 | 数据查询方法、设备和存储介质 |
CN112182029B (zh) * | 2020-09-30 | 2022-09-16 | 杭州复杂美科技有限公司 | 数据查询方法、设备和存储介质 |
CN112087530A (zh) * | 2020-11-02 | 2020-12-15 | 支付宝(杭州)信息技术有限公司 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
CN112087530B (zh) * | 2020-11-02 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
CN112988852A (zh) * | 2021-05-11 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 基于区块链的数据管理方法、设备以及介质 |
CN112988852B (zh) * | 2021-05-11 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据管理方法、设备以及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639140A (zh) | 分布式数据存储方法、设备和存储介质 | |
US10121169B2 (en) | Table level distributed database system for big data storage and query | |
CN107623729B (zh) | 一种缓存方法、设备及缓存服务系统 | |
US7209941B2 (en) | System and method for distributing contents from a child server based on a client's current location | |
US20100017368A1 (en) | Service Registry and Relevant System and Method | |
CN111399756B (zh) | 一种数据存储方法、数据下载方法及装置 | |
JP2012155286A (ja) | 地図データ配信サーバ及び地図データ配信方法 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
US20080147875A1 (en) | System, method and program for minimizing amount of data transfer across a network | |
CN111221469B (zh) | 同步缓存数据的方法、装置和系统 | |
CN104378452A (zh) | 一种用于域名解析的方法、装置及系统 | |
CN109254981B (zh) | 一种分布式缓存系统的数据管理方法和装置 | |
CN110837409A (zh) | 一种定时执行任务的方法和系统 | |
CN105095313A (zh) | 一种数据访问方法和设备 | |
CN112579319B (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
CN104636437A (zh) | 一种事件通知方法、监听器的处理方法及装置 | |
CN110968478A (zh) | 日志采集方法、服务器及计算机存储介质 | |
CN111597259B (zh) | 数据存储系统、方法、装置、电子设备及存储介质 | |
CN109873855A (zh) | 一种基于区块链网络的资源获取方法和系统 | |
CN113127477A (zh) | 访问数据库的方法、装置、计算机设备和存储介质 | |
CN110781441A (zh) | 基于微服务化架构的新零售业务中台 | |
CN111241189A (zh) | 一种同步数据的方法和装置 | |
CN103609081A (zh) | 通过解析进行路由 | |
CN111611317A (zh) | 区块链分布式存储分组方法、设备和存储介质 | |
CN111767495A (zh) | 一种合成网页的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200908 |
|
WD01 | Invention patent application deemed withdrawn after publication |