基于区块链的分布式数据存储方法、装置及终端与流程

未命名 09-10 阅读:64 评论:0


1.本发明涉及数据存储技术领域,尤其涉及一种基于区块链的分布式数据存储方法、装置及终端。


背景技术:

2.随着数字技术的不断演变与应用,应用系统承载了越来越多生产生活中的场景,其中存储的数据也涉及现实世界的方方面面。其中随着区块链技术的发展,现实世界中分布式、去信任,不可篡改的业务数据有了有效的载体,并在数字货币、供应链金融、资产数字化等各方面有了成功的实践。
3.但电子文档、归档文件等一般性的文件依旧依赖于传统的对象存储,可以通过对同名文件重复上传进行修改和替换,成为区块链信任体系中的短板,无法实现去信任化、不可篡改的业务需求。


技术实现要素:

4.本发明实施例提供了一种基于区块链的分布式数据存储方法、装置及终端,以解决非结构性数据存储的安全性低的问题。
5.第一方面,本发明实施例提供了一种基于区块链的分布式数据存储方法,应用于存储网关,存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;
6.该方法包括:
7.获取目标数据;
8.基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的fid;
9.基于预设的容灾隔离策略确定目标存储节点,将目标数据存储至目标存储节点,并基于目标数据的fid和目标存储节点确定目标数据的存储地址。
10.在一种可能的实现方式中,基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的fid包括:
11.若目标数据大于预设尺寸,则对目标数据进行分片,得到多个分片数据;
12.基于哈希算法对各个分片数据进行加密,得到各个分片数据的特征值,并将各个分片数据的特征值作为对应分片数据的fid;
13.将各个分片数据的fid按照各个分片数据的顺序排列,得到目标数据的索引对象;
14.基于哈希算法对索引对象进行加密,得到索引对象的特征值,并将索引对象的特征值作为目标数据的fid。
15.在一种可能的实现方式中,存储网关通过多个转存控制器与多个存储控制器连接,每个转存控制器对应多个存储控制器,每个转存控制器作为一个逻辑容灾组,各个转存控制器构成多个逻辑存储池,每个逻辑存储池包含多个逻辑容灾组;
16.在基于预设的容灾隔离策略确定目标存储节点之前,还包括:
17.获取目标逻辑存储池;
18.基于预设的容灾隔离策略确定目标存储节点包括:
19.基于目标逻辑存储池中逻辑容灾组的数量,对目标数据的fid进行取模运算,将序号为i的逻辑容灾组作为目标逻辑容灾组;其中,i为取模运算结果;
20.基于预设的容灾隔离策略,在目标逻辑容灾组中选取一个或多个目标存储节点;其中,容灾隔离策略包括目标节点数量和/或存储节点状态。
21.在一种可能的实现方式中,各个存储节点中存储有一个或多个数据;
22.该方法还包括:
23.获取逻辑容灾组更新指令;其中,逻辑容灾组更新指令包括更新后的逻辑容灾组数量和更新后各逻辑容灾组的序号;
24.针对每个数据,基于更新后的逻辑容灾组的数量,对该数据的fid进行取模运算,将序号为i的逻辑容灾组作为该数据的目标逻辑容灾组,其中,i为取模运算结果,并基于预设的容灾隔离策略,在该数据的目标逻辑容灾组中选取一个或多个存储节点作为该数据的目标存储节点;
25.将各个数据转存至各自对应的目标存储节点。
26.在一种可能的实现方式中,获取目标逻辑存储池包括:
27.识别上传目标数据的用户身份,并基于用户身份确定用户权限;
28.确定与用户权限对应的逻辑存储池,作为目标逻辑存储池。
29.在一种可能的实现方式中,还包括:
30.在获取到下载请求时,对下载请求中的存储地址进行解析,得到待下载数据对应的逻辑容灾组和fid;
31.基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数据;
32.若待下载数据为文件数据,则将文件数据写入下载缓冲区,得到待下载数据。
33.在一种可能的实现方式中,在基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数据之后,还包括:
34.若待下载数据为索引对象,则在待下载数据对应的逻辑容灾组中查找索引对象中的各个fid对应的分片数据;
35.按照索引对象中的顺序将各个分片数据写入下载缓冲区,得到待下载数据。
36.第二方面,本发明实施例提供了一种基于区块链的分布式数据存储装置,应用于存储网关,存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;
37.该装置包括:
38.获取模块,用于获取目标数据;
39.加密模块,用于基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的fid;
40.存储模块,用于基于预设的容灾隔离策略确定目标存储节点,将目标数据存储至目标存储节点,并基于目标数据的fid和目标存储节点确定目标数据的存储地址。
41.第三方面,本发明实施例提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
42.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
43.本发明实施例提供一种基于区块链的分布式数据存储方法、装置及终端,通过目标数据的哈希值代表原目标数据,使得目标数据的内容具有不可篡改性,从而避免现有技术中对同名文件重复上传导致数据内容被篡改的风险;同时,本发明选取部分存储节点进行存储,相比于传统区块链技术中的全部节点数据同步,降低了数据的冗余性;最后,基于fid和存储节点确定存储地址,能够便于对目标数据进行查找,确保目标数据的可用性和可靠性。
附图说明
44.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
45.图1是本发明一实施例提供的基于区块链的分布式数据存储方法的实现流程图;
46.图2是本发明一实施例提供的基于区块链的分布式数据存储装置的结构示意图;
47.图3是本发明一实施例提供的终端的示意图。
具体实施方式
48.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
49.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图通过具体实施例来进行说明。
50.参见图1,其示出了本发明实施例提供的基于区块链的分布式数据存储方法的实现流程图,该方法应用于存储网关,存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;
51.该方法详述如下:
52.步骤101,获取目标数据。
53.在本实施例中,目标数据可以是文档、表格等非结构化数据,即没有固定结构的数据。用户将目标数据上传到存储网关后,存储网关与存储控制器进行通信,以将目标数据存储到一个或多个存储节点中。
54.步骤102,基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的fid。
55.在本实施例中,fid即文件id,作用与文件名称相似,通常用于打开或选择文件。但通常的文件名称与文件内容并没有特定的关系,仅通过文件名称并不能验证文件内容是否被篡改过,例如使用内容完全不同、但文件名称相同的文件对已有的文件进行替换,后续仅
能够检测到文件名称未发生变化,而无法发现文件内容完全不同。
56.针对此问题,本实施例借助区块链技术特性,利用哈希算法计算特征值作为目标数据的fid,例如sha-256算法,利用哈希算法正向快速、逆向困难、输入敏感的特点,确保每一个内容不同的文件都对应一个具有唯一性的fid,并且通过fid和文件内容,就可以检测出文件内容是否被篡改,提高数据存储的安全性。
57.步骤103,基于预设的容灾隔离策略确定目标存储节点,将目标数据存储至目标存储节点,并基于目标数据的fid和目标存储节点确定目标数据的存储地址。
58.在本实施例中,容灾能力是数据存储系统可用性的衡量指标,通过容灾隔离策略可以在多个存储节点中选取出较为合适的目标存储节点,对目标数据进行存储,确保数据存储的可靠性、可用性。
59.在存储后,可以将目标数据的fid和目标存储节点进行拼接组合,例如目标存储节点的地址为f00,则拼接后的存储地址为f00/fid,存储网关可以将此存储地址反馈至用户,用户在后续使用中可以基于此存储地址在各个存储节点中查找目标数据。
60.在一种可能的实现方式中,基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的fid包括:
61.若目标数据大于预设尺寸,则对目标数据进行分片,得到多个分片数据;
62.基于哈希算法对各个分片数据进行加密,得到各个分片数据的特征值,并将各个分片数据的特征值作为对应分片数据的fid;
63.将各个分片数据的fid按照各个分片数据的顺序排列,得到目标数据的索引对象;
64.基于哈希算法对索引对象进行加密,得到索引对象的特征值,并将索引对象的特征值作为目标数据的fid。
65.在本实施例中,用户将目标数据上传到存储网关后,存储网关会限制能够接收上传的最大文件,如限制单文件最大4gib,但可以通过multipart方式上传时突破单文件的限制,限制变成了每个部分的大小。存储网关并不存储文件内容,通过filechannel类实现的零复制技术直接将文件对象以流的方式发往转存控制器。转存控制器负责与实际存储控制器进行通信,在转发文件到实际存储节点之前会对文件进行切分,以控制文件大小。
66.切分过程可分为两种情况:1.转存控制器接收到的原文件小于或等于1mib时,直接利用sha-256计算出哈希值,定义为fid。2.转存控制器接收到的原文件大于1mib时,按照1mib将文件切分成多个1mib大小和一个小于1mib大小的字节数组,即多个分片数据,并分别进行sha-256计算出各自的fid,生成一个顺序记录各分片数据的fid定义的索引对象,并对这个索引对象也进行sha-256计算fid,作为原文件的fid。
67.sha-256是碰撞度很低的哈希算法,其碰撞度几乎可以忽略不计,以此算出的哈希值作为存储对象的唯一标识,若不存在分片过程存储对象就是文件本身,fid就代表此文件,若存在分片过程则生成一个顺序记录各分片数据的fid定义的索引对象,并对这个索引对象也进行sha-256计算fid来代表原文件。
68.本实施例可以控制存储节点中数据的大小,对于较大的目标数据,分片后对分片数据和索引对象均进行加密,全面保证数据的安全性。
69.在一种可能的实现方式中,存储网关通过多个转存控制器与多个存储控制器连接,每个转存控制器对应多个存储控制器,每个转存控制器作为一个逻辑容灾组,各个转存
控制器构成多个逻辑存储池,每个逻辑存储池包含多个逻辑容灾组;
70.在基于预设的容灾隔离策略确定目标存储节点之前,还包括:
71.获取目标逻辑存储池;
72.基于预设的容灾隔离策略确定目标存储节点包括:
73.基于目标逻辑存储池中逻辑容灾组的数量,对目标数据的fid进行取模运算,将序号为i的逻辑容灾组作为目标逻辑容灾组;其中,i为取模运算结果;
74.基于预设的容灾隔离策略,在目标逻辑容灾组中选取一个或多个目标存储节点;其中,容灾隔离策略包括目标节点数量和/或存储节点状态。
75.在本实施例中,后端存储节点可被划分为三级结构,第一层为逻辑存储池,用户在上传目标数据时可按照业务分类选择对应的存储池,以放置不同部门或系统的文件。第二层为逻辑容灾组,负责在逻辑上对接第三层为实际存储数据的存储控制器。一个逻辑容灾组分为一定数量的槽,为了方便进行取模运算,逻辑容灾组内部的槽位数量一旦确定不可随意变更,只可以进行裂变,数量为2的整数幂,如初始划分1024个槽,可裂变为2048个槽位。逻辑容灾组还可以配置副本数量,以及要考虑机房、机架、主机等几级容灾策略,逻辑容灾组这个逻辑定义可以按照副本数和容灾策略的配置通过计算把存储对象协调放置在不同主机的多个存储控制器上。第三层为存储控制器,与磁盘设备一一对应,一台主机可以有多个存储控制器。
76.负责存储步骤s2中切分好的存储对象的数据和元数据信息,元数据信息包括文件名称,上传时间,文件大小等信息。转存控制器对步骤s2中切分的存储对象进行转存,首先根据用户的选择找到第一层逻辑存储池,然后根据存储池中第二层的逻辑容灾组的槽位,对步骤s2中定义的fid进行取模运算,确定传给哪个槽位,再根据容灾隔离策略中的副本数量,以及转存控制器中监控的存储控制器的状态,选择一个或多个存储控制器,作为目标存储节点。
77.之后转存控制器将存储对象发送给存储控制器进行保存。依照配置的数据一致性要求,如一个副本存储完成即返回,还是所有副本均储存完成返回,在保存了足够的副本后,对存储网关进行响应,反馈文件fid的值。
78.在一种可能的实现方式中,各个存储节点中存储有一个或多个数据;
79.该方法还包括:
80.获取逻辑容灾组更新指令;其中,逻辑容灾组更新指令包括更新后的逻辑容灾组数量和更新后各逻辑容灾组的序号;
81.针对每个数据,基于更新后的逻辑容灾组的数量,对该数据的fid进行取模运算,将序号为i的逻辑容灾组作为该数据的目标逻辑容灾组,其中,i为取模运算结果,并基于预设的容灾隔离策略,在该数据的目标逻辑容灾组中选取一个或多个存储节点作为该数据的目标存储节点;
82.将各个数据转存至各自对应的目标存储节点。
83.在本实施例中,可设定存储控制器与转存控制器定期进行通信,汇报自身状态,包括磁盘容量、存储的对象的fid和相关联的逻辑容灾组的编号。转存控制器对这些信息进行监控,并在存储控制器上报周期超过阈值的时候,进行告警,及时发现存储故障风险。
84.转存控制器还负责在更换磁盘、或者新增存储控制器的时候对各存储节点内部的
数据进行再平衡,也就是在逻辑容灾组或存储节点的序号发生变化后,按照新的序号,通过本实施例中的步骤将各个已存储的数据转存至对应的目标存储节点,以保证通过对fid的计算能够准确定位到可用的存储控制器进行数据的读取。
85.在一种可能的实现方式中,获取目标逻辑存储池包括:
86.识别上传目标数据的用户身份,并基于用户身份确定用户权限;
87.确定与用户权限对应的逻辑存储池,作为目标逻辑存储池。
88.在本实施例中,可以在存储网关中设置基于鉴权控制器和动态准入控制器的认证模式,实现用户身份认证:
89.鉴权控制器:默认全部准入,可配置基于属性的权限控制。层级划分为用户、存储组,根据属性将权限映射关系配置在存储网关。用户通过key和secert的方式进行访问鉴权,通过属性对存储组的访问权限进行控制,通过用户权限可直接确定目标逻辑存储池,实现用户与存储节点的快速对应。
90.动态准入控制器:默认为无,可配置基于webhook的第三方调用,对接自定义的第三方系统对权限进行准入控制。如果任何一个webhook返回失败,则动态准入控制器将会立即拒绝请求。
91.在一种可能的实现方式中,还包括:
92.在获取到下载请求时,对下载请求中的存储地址进行解析,得到待下载数据对应的逻辑容灾组和fid;
93.基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数据;
94.若待下载数据为文件数据,则将文件数据写入下载缓冲区,得到待下载数据。
95.在本实施例中,存储地址中包含了待下载数据所在的逻辑容灾组序号以及待下载数据的fid,对存储地址进行解析,可以找到对应的逻辑容灾组,然后根据fid查找到对应的文件,从而进行下载。
96.具体步骤可以如下:
97.步骤201:下载文件时,用户将上传文件时存储网关应答的资源地址发送至至存储网关,并通过鉴权和动态准入控制器的许可,验证用户身份并确定逻辑存储池。
98.步骤202:存储网关对资源地址进行解析发送给转存控制器,将请求转换成对对应逻辑存储池中、对应逻辑容灾组内指定fid的检索。
99.步骤203:转存控制器根据fid定位对应的逻辑容灾组和对应的存储控制器上的存储对象。若此存储对象就是无需切分的小文件,则直接响应文件和元数据,若此存储对象是一个索引对象,则通过该索引对象依照其上保存的存储对象的fid再次顺序检索,并按照顺序组合成一个文件再连同文件的元数据响应给存储网关。
100.步骤204:存储网关根据转存服务器的响应,将文件写入下载请求的缓冲区,用户得到所需文件。
101.在一种可能的实现方式中,在基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数据之后,还包括:
102.若待下载数据为索引对象,则在待下载数据对应的逻辑容灾组中查找索引对象中的各个fid对应的分片数据;
103.按照索引对象中的顺序将各个分片数据写入下载缓冲区,得到待下载数据。
104.在本实施例中,由于文件的任何变化均会改变存储对象的fid,故不管是不需要分片的小文件,还是大文件切分后由多个fid生成的索引对象再做sha-256计算后得到fid,都会发生变化,故保证了文件版本的唯一性。
105.本发明实施例通过目标数据的哈希值代表原目标数据,使得目标数据的内容具有不可篡改性,从而避免现有技术中对同名文件重复上传导致数据内容被篡改的风险;同时,本发明选取部分存储节点进行存储,相比于传统区块链技术中的全部节点数据同步,降低了数据的冗余性;最后,基于fid和存储节点确定存储地址,能够便于对目标数据进行查找,确保目标数据的可用性和可靠性。
106.本发明将一般的文件进行sha-256计算保障其唯一性,其中大文件进行切分并分别进行sha-256计算,并生成一个有顺序的哈希值集合的索引对象,二次进行sha-256计算确保其唯一性。另外采用逻辑存储池和容灾组的设计,将存储对象的转存通过计算得出实际存储位置,减少存储对象过多带来的元数据过大的问题。并且不依赖第三方的区块链产品,单系统就实现了文件存储的唯一性保障,并且克服传统分布式存储方式只关注可用性与可靠性,确无法保障数据易被篡改的缺陷。
107.本发明通过区块链的技术原理对传统的分布式存储进行安全定制,通过计算存储对象的哈希值来保证存储对象的唯一性。针对大文件进行切块处理后分别计算哈希值,并采用数据结构简单的索引对象的方式存储顺序的哈希值集合,并且对索引对象再进行一次哈希计算,既避免了默克尔树的复杂数据结构和平衡树时带来的额外开销,也同样保证了文件不同版本的唯一性要求。另外通过逻辑存储池和容灾组的设定,并且通过计算来确定存储位置的确切位置,增加配置的灵活性又减少了元数据不断增长的问题。还有本发明也并不依赖第三方的区块链产品配合来实现文件防篡改的功能,用户可以灵活的选择独立使用或是配合第三方产品使用去构建去信任,不可篡改的安全体系。
108.与现有技术相比,本发明提出的技术方案中引入了区块链的技术原理,将传统的存储方案中没有考虑的去信任、不可篡改作为核心目的。加之完备的用户鉴权与准入机制更加凸显了安全存储的特质。文件一旦上传就不可变更并永久保留其指定版本,通过存储网关响应的资源地址始终确定是上传时提交的文件版本,避免了随意更新或替换原文件的可能,降低了各个利益方的信任成本。
109.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
110.以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
111.图2示出了本发明实施例提供的基于区块链的分布式数据存储装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
112.如图2所示,基于区块链的分布式数据存储装置2应用于存储网关,存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;
113.该基于区块链的分布式数据存储装置2包括:
114.获取模块21,用于获取目标数据;
115.加密模块22,用于基于哈希算法对目标数据进行加密,得到特征值,并将特征值作
为目标数据的fid;
116.存储模块23,用于基于预设的容灾隔离策略确定目标存储节点,将目标数据存储至目标存储节点,并基于目标数据的fid和目标存储节点确定目标数据的存储地址。
117.在一种可能的实现方式中,加密模块22具体用于:
118.若目标数据大于预设尺寸,则对目标数据进行分片,得到多个分片数据;
119.基于哈希算法对各个分片数据进行加密,得到各个分片数据的特征值,并将各个分片数据的特征值作为对应分片数据的fid;
120.将各个分片数据的fid按照各个分片数据的顺序排列,得到目标数据的索引对象;
121.基于哈希算法对索引对象进行加密,得到索引对象的特征值,并将索引对象的特征值作为目标数据的fid。
122.在一种可能的实现方式中,存储网关通过多个转存控制器与多个存储控制器连接,每个转存控制器对应多个存储控制器,每个转存控制器作为一个逻辑容灾组,各个转存控制器构成多个逻辑存储池,每个逻辑存储池包含多个逻辑容灾组;
123.存储模块23还用于:
124.在基于预设的容灾隔离策略确定目标存储节点之前,获取目标逻辑存储池;
125.基于预设的容灾隔离策略确定目标存储节点包括:
126.基于目标逻辑存储池中逻辑容灾组的数量,对目标数据的fid进行取模运算,将序号为i的逻辑容灾组作为目标逻辑容灾组;其中,i为取模运算结果;
127.基于预设的容灾隔离策略,在目标逻辑容灾组中选取一个或多个目标存储节点;其中,容灾隔离策略包括目标节点数量和/或存储节点状态。
128.在一种可能的实现方式中,各个存储节点中存储有一个或多个数据;
129.存储模块23还用于:
130.获取逻辑容灾组更新指令;其中,逻辑容灾组更新指令包括更新后的逻辑容灾组数量和更新后各逻辑容灾组的序号;
131.针对每个数据,基于更新后的逻辑容灾组的数量,对该数据的fid进行取模运算,将序号为i的逻辑容灾组作为该数据的目标逻辑容灾组,其中,i为取模运算结果,并基于预设的容灾隔离策略,在该数据的目标逻辑容灾组中选取一个或多个存储节点作为该数据的目标存储节点;
132.将各个数据转存至各自对应的目标存储节点。
133.在一种可能的实现方式中,存储模块23具体用于:
134.识别上传目标数据的用户身份,并基于用户身份确定用户权限;
135.确定与用户权限对应的逻辑存储池,作为目标逻辑存储池。
136.在一种可能的实现方式中,存储模块23还用于:
137.在获取到下载请求时,对下载请求中的存储地址进行解析,得到待下载数据对应的逻辑容灾组和fid;
138.基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数据;
139.若待下载数据为文件数据,则将文件数据写入下载缓冲区,得到待下载数据。
140.在一种可能的实现方式中,存储模块23还用于:
141.在基于待下载数据对应的fid,在待下载数据对应的逻辑容灾组中查找待下载数
据之后,若待下载数据为索引对象,则在待下载数据对应的逻辑容灾组中查找索引对象中的各个fid对应的分片数据;
142.按照索引对象中的顺序将各个分片数据写入下载缓冲区,得到待下载数据。
143.本发明实施例通过目标数据的哈希值代表原目标数据,使得目标数据的内容具有不可篡改性,从而避免现有技术中对同名文件重复上传导致数据内容被篡改的风险;同时,本发明选取部分存储节点进行存储,相比于传统区块链技术中的全部节点数据同步,降低了数据的冗余性;最后,基于fid和存储节点确定存储地址,能够便于对目标数据进行查找,确保目标数据的可用性和可靠性。
144.图3是本发明实施例提供的终端的示意图。如图3所示,该实施例的终端3包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述各个基于区块链的分布式数据存储方法实施例中的步骤,例如图1所示的步骤101至步骤103。或者,所述处理器30执行所述计算机程序32时实现上述各装置实施例中各模块/单元的功能,例如图2所示模块/单元21至23的功能。
145.示例性的,所述计算机程序32可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序32在所述终端3中的执行过程。例如,所述计算机程序32可以被分割成图2所示的模块/单元21至23。
146.所述终端3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端3可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图3仅仅是终端3的示例,并不构成对终端3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
147.所称处理器30可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
148.所述存储器31可以是所述终端3的内部存储单元,例如终端3的硬盘或内存。所述存储器31也可以是所述终端3的外部存储设备,例如所述终端3上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器31还可以既包括所述终端3的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
149.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可
以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
150.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
151.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
152.在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
153.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
154.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
155.所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个基于区块链的分布式数据存储方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
156.以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改
或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

技术特征:
1.一种基于区块链的分布式数据存储方法,其特征在于,应用于存储网关,所述存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;所述方法包括:获取目标数据;基于哈希算法对所述目标数据进行加密,得到特征值,并将所述特征值作为所述目标数据的fid;基于预设的容灾隔离策略确定目标存储节点,将所述目标数据存储至所述目标存储节点,并基于所述目标数据的fid和所述目标存储节点确定所述目标数据的存储地址。2.根据权利要求1所述的基于区块链的分布式数据存储方法,其特征在于,所述基于哈希算法对所述目标数据进行加密,得到特征值,并将所述特征值作为所述目标数据的fid包括:若所述目标数据大于预设尺寸,则对所述目标数据进行分片,得到多个分片数据;基于哈希算法对各个分片数据进行加密,得到各个分片数据的特征值,并将各个分片数据的特征值作为对应分片数据的fid;将各个分片数据的fid按照各个分片数据的顺序排列,得到所述目标数据的索引对象;基于哈希算法对所述索引对象进行加密,得到所述索引对象的特征值,并将所述索引对象的特征值作为所述目标数据的fid。3.根据权利要求1所述的基于区块链的分布式数据存储方法,其特征在于,所述存储网关通过多个转存控制器与多个存储控制器连接,每个转存控制器对应多个存储控制器,每个转存控制器作为一个逻辑容灾组,各个转存控制器构成多个逻辑存储池,每个逻辑存储池包含多个逻辑容灾组;在所述基于预设的容灾隔离策略确定目标存储节点之前,还包括:获取目标逻辑存储池;所述基于预设的容灾隔离策略确定目标存储节点包括:基于所述目标逻辑存储池中逻辑容灾组的数量,对所述目标数据的fid进行取模运算,将序号为i的逻辑容灾组作为目标逻辑容灾组;其中,i为取模运算结果;基于预设的容灾隔离策略,在所述目标逻辑容灾组中选取一个或多个目标存储节点;其中,所述容灾隔离策略包括目标节点数量和/或存储节点状态。4.根据权利要求3所述的基于区块链的分布式数据存储方法,其特征在于,各个存储节点中存储有一个或多个数据;所述方法还包括:获取逻辑容灾组更新指令;其中,所述逻辑容灾组更新指令包括更新后的逻辑容灾组数量和更新后各逻辑容灾组的序号;针对每个数据,基于更新后的逻辑容灾组的数量,对该数据的fid进行取模运算,将序号为i的逻辑容灾组作为该数据的目标逻辑容灾组,其中,i为取模运算结果,并基于预设的容灾隔离策略,在该数据的目标逻辑容灾组中选取一个或多个存储节点作为该数据的目标存储节点;将各个数据转存至各自对应的目标存储节点。5.根据权利要求3所述的基于区块链的分布式数据存储方法,其特征在于,所述获取目
标逻辑存储池包括:识别上传所述目标数据的用户身份,并基于所述用户身份确定用户权限;确定与所述用户权限对应的逻辑存储池,作为目标逻辑存储池。6.根据权利要求3所述的基于区块链的分布式数据存储方法,其特征在于,还包括:在获取到下载请求时,对所述下载请求中的存储地址进行解析,得到待下载数据对应的逻辑容灾组和fid;基于所述待下载数据对应的fid,在所述待下载数据对应的逻辑容灾组中查找所述待下载数据;若所述待下载数据为文件数据,则将所述文件数据写入下载缓冲区,得到所述待下载数据。7.根据权利要求6所述的基于区块链的分布式数据存储方法,其特征在于,在所述基于所述待下载数据对应的fid,在所述待下载数据对应的逻辑容灾组中查找所述待下载数据之后,还包括:若所述待下载数据为索引对象,则在所述待下载数据对应的逻辑容灾组中查找所述索引对象中的各个fid对应的分片数据;按照所述索引对象中的顺序将各个分片数据写入下载缓冲区,得到所述待下载数据。8.一种基于区块链的分布式数据存储装置,其特征在于,应用于存储网关,所述存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;所述装置包括:获取模块,用于获取目标数据;加密模块,用于基于哈希算法对所述目标数据进行加密,得到特征值,并将所述特征值作为所述目标数据的fid;存储模块,用于基于预设的容灾隔离策略确定目标存储节点,将所述目标数据存储至所述目标存储节点,并基于所述目标数据的fid和所述目标存储节点确定所述目标数据的存储地址。9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上的权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上的权利要求1至7中任一项所述方法的步骤。

技术总结
本发明提供一种基于区块链的分布式数据存储方法、装置及终端,应用于存储网关,存储网关与多个存储控制器连接,每个存储控制器对应一个存储节点;该方法包括:获取目标数据;基于哈希算法对目标数据进行加密,得到特征值,并将特征值作为目标数据的FID;基于预设的容灾隔离策略确定目标存储节点,将目标数据存储至目标存储节点,并基于目标数据的FID和目标存储节点确定目标数据的存储地址。本发明能够避免现有技术中对同名文件重复上传导致数据内容被篡改的风险,并降低数据存储的冗余性。并降低数据存储的冗余性。并降低数据存储的冗余性。


技术研发人员:何东 高秀寒 由楷 殷宏飞 顾宗杰
受保护的技术使用者:何东
技术研发日:2023.06.26
技术公布日:2023/9/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐