一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式网络数据存储方法与流程

2021-12-04 02:21:00 来源:中国专利 TAG:

1.本发明涉及分布式网络领域,特别是一种分布式网络资源匹配和访问方法。


背景技术:

2.分布式网络是由分布在不同地点且具有多个终端的节点机互连而成的。网中任一点均至少与两条线路相连,当任意一条线路发生故障时,通信可转经其他链路完成,具有较高的可靠性。同时,网络易于扩充。
3.目前,有一种零极分布式网络,该分布式网络的节点分布在互联网中,管理的节点划分为基站节点和移动节点两种大类型,基站节点又分为云基站节点、企业基站节点和家庭基站节点,由于这些基站节点能够稳定在线,因此,很多时候又称稳定节点,可以存储分布式网络中的数据,而移动节点由于上下线频繁,主要是一些智能手机。
4.节点以节点id为标识,每个加入到分布式网络的节点都被分配一个20个字节的节点id,在加入到分布式网络时生成的节点id遵循一定范围内的均匀分布规则,本领域技术人员知道这种id生成算法进行的长时间实验数据验证。
5.在分布式网络中,每个在线的节点上均有节点两个表:实现区域内网络节点管理的局域管理节点表和广域管理节点表;这样实现各在线节点之间的路由。局域管理节点表也称局域表,在该表中按照id序号排列有全局域内的节点,部分邻近区域内的节点;广域管理节点表也称广域表,在广域表中保存有每个区域部分节点。
6.分布式网络中,在使用过程中生成的数据,如一些应用程序(app),在分布式网络中主要是一些dmapp(dmapp零极应用程序,它是运行于零极智能引擎之上的分布式移动app)生成的数据,也可以是移动节点如智能手机上的app产生的数据、还有一些视频、数据、图片等文件这些也会需要存储到分布式网络中,这些产生数据的主体称为数据拥有者。
7.存储数据的主体主要有:运行在分布式网络上的小程序(dmapp零极应用程序,它是运行于零极智能引擎之上的分布式移动app)、分布式系统的其它模块,上层应用(比如移动节点(手机)上的一些app)、系统的开发工具(ide :integrated

drive

electronics)等。
8.其中,分布式系统的其它模块是运行于节点上的模块集合,这些模块的功能类似于b/s系统中的客户端、服务器端的功能模块,主要包括网络管理模块、路由模块、文件传输模块、域名模块、数据存储模块、交易模块、升级模块等,这些模块分布在所有的稳定节点中,有些模块也分布的移动节点之中,所有的这些同名模块不论在哪个节点上,内容均是一样的。


技术实现要素:

9.本发明的目的是提供一种分布式网络数据存储的方法。
10.本发明实现其技术目的技术方案是:一种分布式网络数据存储的方法,由数据拥有者将数据存储在分布式网络的其它节点中,其特征在于:包括以下步骤:s11、请求存储的步骤,该步骤中,在数据拥有者所在的节点中生成一个唯一的存
储标识存储key;s12、将要存储的数据和存储key以及需要存储的份数n发送给数据存取主体所在的节点的数据存储模块;n为自然数;s13、根据key匹配出需要存储的n个稳定节点的列表;s14、分别将要存储的数据和存储key传送到列表中n个稳定节点;s15、所述的n个稳定节点的数据存储模块将要存储的数据和存储key存储在存储器中。
11.进一步的,上述的分布式网络数据存储方法中:还包括读取数据的步骤,该步骤包括:s21、请求读取数据的步骤,该步骤中,向数据拥有者提出请求,数据拥有者同意则转向步骤s22,否则结束;s22、由数据拥有者按照存储时的规则生成数据key;s23、根据key匹配出存储该数据的节点列表;s24、向节点列表中指定节点发出读数据请求,该步骤中读数据请求中标明数据的存储key。
12.进一步的,上述的分布式网络数据存储方法中:还包括修改数据的步骤,该步骤包括:s31、数据的拥有者获得更新数据;s32、数据拥有者将更新数据与原来的存储key一起发送到原来存储的n个节点中;s33、在n个节点中将更新数据替换原来的数据。
13.进一步的,上述的分布式网络数据存储方法中:还包括删除数据的步骤,该步骤包括:s41、数据拥有者的存储模块发起数据删除请求,该步骤需要删除的数据的存储k发送到自己的存储模块;s42、存储模块根据存储key匹配出分布式网络存储的节点列表;s43、将存储key发送到列表中的节点中;s43、列表中的节点自行删除数据。
14.进一步的,上述的分布式网络数据存储方法中:所述的步骤s11中,存储key的长度与分布式网络的节点id长度一致,均为20个字;如果要存储的是一个数据文件,则存储key按照下面的步骤生成:s11

1、生成一个索引key,该步骤按照文件名、存储路径进行哈希生成20字索引key;s11

2、对文件进行拆分,该步骤中,将文件内容按照设定的大小拆分成m个数据块,m为自然数;s11

3、生成存储key的步骤,该步骤将各数据块的内容进行哈希,生成对应20字存储key;s11

4、将所有的存储key以及数据块对应的序号记录到一个索引k对应的表中;如果要存储的是交易,则以交易双方的id进行哈希函数生成20字的key;如果要存储的是手机app的数据,则以手机app账号进行哈希函数生成20字的key。
15.进一步的,上述的分布式网络数据存储方法中:所述的步骤s13中,需要存储的n个稳定节点按照下列步骤匹配:s13

1、如果存储key对应的数字作为节点id与数据存储主体所在的节点是在同一个区域内,则以数据存储主体所在的节点为匹配节点,转向步骤s13

3;s13

2、从存储key对应的数字作为节点id区域中选择任一节点为匹配节点;s13

3、在匹配节点的区域表中,选择与存储key逻辑距离最短的n个节点作为存储数据的节点。
16.进一步的,上述的分布式网络数据存储方法中:所述的步骤s15中,n个稳定节点的数据存储模块将要存储的数据和存储key存储在存储器中时,还需要对保存的数据进行保护,包括对要存储的数据和存储key做crc效验,并保存crc效验值。
17.进一步的,上述的分布式网络数据存储方法中:所述步骤23中,指定的节点为列表中节点id与读数据的主体所在的节点id逻辑距离最近的节点。
18.本发明提供一种安全的分布式网络数据存储方法。
19.以下结合实施例,对本发明进行较为详细的说明。
具体实施方式
20.实施例1本施例是运行在分布式网络上的小程序(dmapp)、分布式系统的其它模块、上层应用、系统的开发工具(ide)等产生的数据进行分布式存储的方法,是一种分布式数据存储方法。
21.本实施例中,分布式网络为申请号为202111147092.2的发明专利申请公开零极分布式网络,该分布式网络中各节点分布在互联网的汪洋大海中。
22.该分布式网络中基础条件说明:a、在节点的局域表中所有被管理节点将按照其id号从小到大进行排序;b、节点id的生成符合一定范围的均匀分布规则。
23.该分布式网络最大具有65536(2
16
)个区域,每个区域节点按照其id号从小到大进行排序。
24.每个节点中具有局域管理节点表也称局域表和广域管理节点表,其中局域表是实现其所属区域范围内节点查找,而广域管理节点表则是实现跨区域范围内的节点查找。
25.在局域表中,有一个随时更新的在线的节点表,按照节点id大小依次排列,能够很快找到节点内的任意节点。广域表中有所有区域中每个区域至少一个在线节点,局域内的节点可以通过这个节点实现与该局域中任意节点联系。
26.在局域表中包括该区域范围内所有在线的节点路由信息,而广域表则包括每一个区域内至少一个在线的固定节点的路由信息。本实施例为了实现将数据分配到上述分布式网络中的固定节点上存储,根据需要可以在一个区域内找到足够的稳定节点,这些稳定节点一般是该区域中连续的节点,数量根据存储的主体要求、以及分布式网络协议规定,可以选择20

30个稳定节点,也可以选择10个以下的节点,或者更多的节点存储这些数据,确保数据安全。
27.实施例1一种将数据文件分布存储在分布式网络中的方法,该方法包括以下步骤:步骤s101、将数据文件的文件、存储路径进行哈希生成20字索引key。数据文件本身就存储在存储介质中,这样它的文件名、在存储介质中的存储路径将是唯一的,利用文件名、存储路径进行哈希可以生成一个唯一的哈希索引key,20字长。
28.步骤s102、对数据文件进行拆分,如一个20g的视频文件,将其按照100m一个的数据块,总共分成200个数据块,对每个数据块进行哈希生成20字数码串的数据块key,生成的一个表文件,将数据块的序号和key形成一个索引数据。索引数据对应的key是索引key,上面生成过。
29.s103、分别根据数据块的key和索引key(也称为存储key)的大小,匹配出一组存储该数据块的稳定节点;匹配方法有很多,本实施例中采用的方法是:首先确定存储key对应的节点id是否与该数据文件(视频文件)拥有者,也就是有存储要求的节点是否在同一个区内,如果是在同一个区内,则在其局域表中,找出与存储key距离最近的一组稳定节点列表,用来存储相应的数据块或者索引文件,当然索引文件时,将索引key当作存储key的。如果不在同一个区内,则从广域表中找到一个与存储key对应的节点id同一区域的节点,在该节点中,找出与存储key距离最近的一组稳定节点列表。列表中的节点数根据需要确定,本实施例中确定为20个,如果是要存索引文件的话,可以确定更多的节点保存这个索引文件。
30.s104、将数据块和对应的存储key一起分别发送到列表中的节点,节点将列表存储。这样,可以将数据文件分成200个数据块分别存储,每个数据块分别存储在20个节点中,另外还生成一个索引文件也可以存储在100个节点中,所以该文件分布式地存储在40100个节点中了,这样分散存储安全性很高。就是有人找到某个节点也不能不愿文件,另外,就是某个节点下线或者损坏,也还有其它节点上保存有文件。
31.读取上面存储的文件包括以下步骤:本实施例中,规定存储的文件,只能由存储该文件的用户,也就是文件的拥有者才能访问,其它用户不能访问,如果要访问,也只有文件拥有者同意后,文件拥有者自己读取以后给该用户读取副本。包括以下步骤:s111、客户请求读取数据的步骤,该步骤中,客户向数据拥有者提出请求,数据拥有者同意则转向步骤s112,否则结束;这里,客户是基于合同或者其它方式,可以获得文件拥有者的同意,可以读取文件。如有些注册用户,从app中读取文件。
32.s112、由数据拥有者按照存储时的规则生成数据key。这里主要是根据步骤101的方式生成索引key。
33.s113、根据key匹配出存储该数据的节点列表。这两个步骤中,数据文件拥有者找到自己的文件。根据索引k按照存储时的规则,找到一组存储索引文件的节点的节点id形成一个列表,根据列表节点id与数据拥有者所在的节点的节点id之间的逻辑,找到列表中与数据拥有者节点id逻辑距离最近的节点,下载索引文件。
34.s114、向节点列表中指定节点发出读数据请求,该步骤中读数据请求中标明数据的存储key。此时,可以从指定的节点上读取数据文件给客户了。本实施例中,指定节点可以指定节点表中节点id与自己节点id逻辑距离最近的节点。这里逻辑距离指的是两个节点id之差的绝对值。当然,也可以使用其它方式指定节点。
35.该步骤中,数据文件的拥有者首先找到一个存储索引文件的节点,下载该索引文件,然后,通过索引文件中的存储key,分别找到存储每个数据块的节点列表,从中选择一个节点下载数据块,最后,根据索引文件中排的顺序,组合成文件,给客户读取。
36.本实施例中还提供一种数据拥有者对分布式存储的数据进行更新和删除的步骤:s121、按照步骤s111至s114将待修改的数据文件下载到数据文件拥有者的节点上,对数据文件进行修改,这些修改是根据需要进行的,修改以后,再拆分修改过的文件,拆分过程与步骤104一样,也按照步骤s104一样生成每个数据块的数据块key,利用数据块key与其数据块拆分时的序号重新形成索引文件。
37.s122、按照文件存储的方法分别存储索引文件和各数据块到与key相匹配的节点中。
38.如果是要删除文件,则先下载索引文件,然后,将索引号和索引文件中的所有的数据块的key发送到与key匹配的节点id列表中列出的各节点中,各节点将存储的与该key相应的数据块删除。本实施例中,不直接删除,可以先做删除记号,待设定时间到了以后才删除。
39.实施例2、分布式网络上的小程序(dmapp)或者其它节点上运行的app生成的数据存储以及底层其它模块生成的数据存储方法,包括以下步骤:s200、该步骤根据分布式网络的协议要求生成一个存储key。每个dmapp都会有一个id,该id与节点id的创建规则是一样的,也是20字长度,本实施例中使用这个id与登录用户id一起做哈希运算形成存储key。对于交易可以使用交易双方的id生成存储key。
40.生成存储key的方法本领域技术人员可以自行设置,本实施例中使用哈希函数,如下的代码就采用哈希函数生成存储key的实例,实际上,在零极分布式网络中,有很多id都使用哈希函数生成。如下代码就是生成key的实例。
41.#include "hash/blake2s.h" /** * \brief
ꢀꢀ
blake2哈希函数 *
ꢀꢀ
\param
ꢀꢀ
msg 输入消息 *
ꢀꢀ
\param
ꢀꢀ
msg_len 输入消息长度 *
ꢀꢀ
\param
ꢀꢀ
out 输出哈希 *
ꢀꢀ
\param
ꢀꢀ
outlen 输入生成哈希长度(单位:字节) *
ꢀꢀ
\return 0成功,

1失败 */int zolcrypto_blake2s(const unsigned char *msg, unsigned int msg_len, void *out, int outlen){
ꢀꢀꢀꢀ
return blake2s(msg, msg_len, out, outlen);}int blake2s(const uint8_t *msg, uint32_t msg_len, void *out, size_t outlen){
ꢀꢀꢀꢀ
blake2s_ctx ctx;
ꢀꢀꢀꢀ
if (0 != blake2s_init(&ctx, outlen)) return
ꢀ‑
1;
ꢀꢀꢀꢀ
if (0 != blake2s_update(&ctx, msg, msg_len)) return
ꢀ‑
1;
ꢀꢀꢀꢀ
if (0 != blake2s_final(&ctx, out, outlen)) return
ꢀ‑
1;
ꢀꢀꢀꢀ
return 0;}dmapp是运行在节点上(包括移动节点),用户登录dmapp时,也是在任意节点上(分布式网络、下面节点指的就是分布式网络上的节点),用户在使用dmapp时,产生的数据也分布存储的。
42.如果要存储的是交易,则以交易双方的id进行哈希函数生成20字的key;如果要存储的是手机app的数据,则以手机app账号进行哈希函数生成20字的key。
43.s201、根据存储key的数字串的特点,获取存储数据的节点id列表,该列表中,就是在节点的局域表中,截取与存储key之间的差最小的一段节点id列表,实际上,存储key对应的数字串做节点id时,在这个节点id对应的节点所在的区域内,区域表中本身是按照节点id的顺序排列着该区域中所有的在线的节点的节点id(稳定节点),因此,只需要截取与存储key之间的差在一内的节点id就可以形成一个列表。列表中的节点id根据需要可以自行设定,本实施例中可以选择50个节点id,这样,生成的数据就可以存储在分布式网络中的50个在线的节点中。
44.s202、将存储key和生成的数据按照列表依次发送到对应的稳定节点中。
45.s203、在稳定节点中自行存储数据和存储key,并对存储的数据进行安全保护,如对数据加上存储key一起进行crc效验,产生的结果也存储在文件中。当然还可以进行其它方式的数据保护措施,确保数据安全。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献