文件存储方法、装置、区块链节点和系统与流程

专利2022-06-29  92


本公开涉及计算机技术领域,特别涉及一种文件存储方法、装置、区块链节点和系统。



背景技术:

随着互联网技术的发展,数据呈现爆炸性增长的趋势,用户对硬件的存储能力的需求也越来越高。网盘技术(或云存储)的出现,解决了用户本地硬件存储能力有限的问题,用户可以将文件上传至网盘进行存储,不占用本地存储空间。

传统网盘的解决方案一般是简单的将用户的文件数据保存在单一或者多个数据存储中心。



技术实现要素:

发明人发现:网盘技术依赖于服务提供商的数据中心的存储服务器,一旦服务器出现问题,可能导致隐私泄露,文件数据安全难以保证。

本公开所要解决的一个技术问题是:提高文件数据存储的安全性。

根据本公开的一些实施例,提供的一种文件存储方法,包括:第一节点接收第二节点发送的文件广播信息,第一节点和第二节点为区块链系统中的区块链节点,文件广播信息包括待存储的文件分片的标识信息;第一节点根据自身的存储状态,选取待存储的文件分片,并向第二节点发送存储请求;存储请求中包括选取的待存储的文件分片的标识信息;第一节点接收第二节点发送的存储响应并对选取的待存储的文件分片进行存储,存储响应中包括选取的待存储的文件分片;第一节点生成存储广播信息,并发送至区块链系统中的其他节点;存储广播信息包括已存储的待存储的文件分片的标识信息。

在一些实施例中,第一节点根据自身的存储状态,选取待存储的文件分片包括:第一节点根据自身剩余的存储空间,确定待存储的文件分片的可存储数量,根据可存储数量选取待存储的文件分片;或者,第一节点将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对,选取未存储过的待存储的文件分片。

在一些实施例中,第一节点根据自身的存储状态,选取待存储的文件分片包括:第一节点根据自身的存储状态和网络状况,选取待存储的文件分片。

在一些实施例中,第一节点根据自身的存储状态,选取待存储的文件分片包括:第一节点根据自身的存储状态和区块链系统中其他节点的存储广播信息,选取待存储的文件分片。

在一些实施例中,第一节点根据自身的存储状态和区块链系统中其他节点的存储广播信息,选取待存储的文件分片包括:第一节点根据区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数;在已存储的次数达到阈值的情况下,第一节点不选取该待存储的文件分片。

在一些实施例中,该方法还包括:第一节点接收第二节点的文件获取广播信息,文件获取广播信息包括待获取的文件分片的标识信息;第一节点在本地查找待获取的文件分片;在查找到的情况下,第一节点将待获取的文件分片发送至用户;第一节点向区块链系统中的其他节点发送文件提取广播消息,文件提取广播信息包括发送至用户的待获取的文件分片的标识信息。

在一些实施例中,该方法还包括:在未查找到的情况下,第一节点向区块链系统中的其他节点发送文件获取广播信息。

在一些实施例中,该方法还包括:第一节点监测预设范围内其他节点的运行状况;在其他节点故障的情况下,第一节点向区块链系统中的节点发送故障广播信息。

在一些实施例中,区块链系统中的节点包括:家庭网关、网盘服务端、网盘客户端中至少一种;文件分片的标识信息包括:文件分片的散列值。

根据本公开的另一些实施例,提供的一种区块链节点,该区块链节点为第一节点,包括:信息接收模块,用于接收第二节点发送的文件广播信息,第二节点为区块链节点,文件广播信息包括待存储的文件分片的标识信息;文件选取模块,用于根据自身的存储状态,选取待存储的文件分片,并向第二节点发送存储请求;存储请求中包括选取的待存储的文件分片的标识信息;文件存储模块,用于接收第二节点发送的存储响应并对选取的待存储的文件分片进行存储,存储响应中包括选取的待存储的文件分片;信息广播模块,用于生成存储广播信息,并发送至区块链系统中的其他节点;存储广播信息包括已存储的待存储的文件分片的标识信息。

在一些实施例中,文件选取模块用于根据自身剩余的存储空间,确定待存储的文件分片的可存储数量,根据可存储数量选取待存储的文件分片;或者,将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对,选取未存储过的待存储的文件分片。

在一些实施例中,文件选取模块用于根据自身的存储状态和网络状况,选取待存储的文件分片。

在一些实施例中,文件选取模块用于根据自身的存储状态和区块链系统中其他节点的存储广播信息,选取待存储的文件分片。

在一些实施例中,文件选取模块用于根据区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数,在已存储的次数达到阈值的情况下,不选取该待存储的文件分片。

在一些实施例中,区块链节点还包括:文件查找模块;信息接收模块还用于收第二节点的文件获取广播信息,文件获取广播信息包括待获取的文件分片的标识信息;文件查找模块用于在本地查找待获取的文件分片,在查找到的情况下,将待获取的文件分片发送至用户;信息广播模块还用于向区块链系统中的其他节点发送文件提取广播消息,文件提取广播信息包括发送至用户的待获取的文件分片的标识信息。

在一些实施例中,信息广播模块还用于在未查找到的情况下,向区块链系统中的其他节点发送文件获取广播信息。

在一些实施例中,区块链节点还包括:故障监测模块,用于监测预设范围内其他节点的运行状况,在其他节点故障的情况下,向区块链系统中的节点发送故障广播信息。

在一些实施例中,区块链节点包括:家庭网关、网盘服务端、网盘客户端中至少一种;文件分片的标识信息包括:文件分片的散列值。

根据本公开的又一些实施例,提供的一种区块链系统,包括:前述任意实施例的区块链节点;区块链节点还用于向区块链系统中其他节点发送文件广播信息,接收其他节点发送的存储请求,并向该节点发送存储响应。

根据本公开的再一些实施例,提供的一种文件存储装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如前述任意实施例的文件存储方法。

根据本公开的又一些实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的文件存储方法。

本公开中利用区块链技术实现文件数据的存储,区块链系统中的节点可以根据自身的存储状态选取文件分片进行存储,并对存储情况进行广播。基于区块链技术的特性,文件会被存储多个备份,并且文件数据不易被篡改,提高了文件数据存储的安全性。此外,将文件数据分片分布式的存储能进一步提高对用户的文件数据的隐私保护和抗攻击能力。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本公开的一些实施例的文件存储方法的流程示意图。

图2示出本公开的另一些实施例的文件存储方法的流程示意图。

图3示出本公开的又一些实施例的文件存储方法的流程示意图。

图4示出本公开的一些实施例的区块链节点的结构示意图。

图5示出本公开的一些实施例的区块链系统的结构示意图。

图6示出本公开的一些实施例的文件存储装置的结构示意图。

图7示出本公开的另一些实施例的文件存储装置的结构示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

本公开提出一种文件存储方法,下面结合图1进行描述。

图1为本公开文件存储方法一些实施例的流程图。如图1所示,该实施例的方法包括:步骤s102~s108。

在步骤s102中,第一节点接收第二节点发送的文件广播信息。第一节点和第二节点为区块链系统中的节点,文件广播信息包括待存储的文件分片的标识信息。

区块链系统中包括多个节点,这些节点例如包括:家庭网关、网盘服务端和网盘客户端中至少一种。发明人发现家庭网关具有天然的分布式的优势,可以利用家庭网关作为区块链系统中的节点,有效利用闲置存储空间、闲置带宽、闲置计算资源等资源。无需在现有网络中部署新的硬件设备,即可实现区块链系统的构建。将家庭网关和网盘服务端或网盘客户端共同作为区块链节点,可以扩展网盘的存储能力,提高存取效率。第一节点例如为家庭网关,第二节点例如为网盘服务端或网盘服务端,当然也可以利用其它设备作为区块链中的节点,不限于所举示例。

用户可以向区块链系统中节点上传待存储的文件,第二节点即为接收用户上传的待存储的文件的节点。待存储的文件可以由节点,例如网盘客户端或网盘服务端,划分为不同的分片,不同的分片分布式存储可以提高文件的安全性。区块链系统中的节点接收到待存储的文件或文件分片后,发送文件广播信息,区块链系统中的多个节点会接收到文件广播信息。

待存储的文件分片的标识信息例如为待存储的文件分片的散列值,接收用户上传的待存储的文件的节点,可以生成待存储的文件分片的散列值,进一步针对待存储的文件分片的散列值的集合生成集合散列值,将集合散列值与待存储的文件分片的散列值进行对应存储。通过集合散列值可以标识文件对应的所有文件分片,便于后续查找文件的全部数据。散列值可以作为标识信息,还可以用于验证文件数据是否被篡改,后续将进行描述。

在步骤s104中,第一节点根据自身的存储状态,选取待存储的文件分片,并向第二节点发送存储请求;存储请求中包括选取的待存储的文件分片的标识信息。

在一些实施例中,存储状态包括剩余的存储空间。第一节点根据自身剩余的存储空间,确定待存储的文件分片的可存储数量;根据可存储数量选取待存储的文件分片。例如,第一节点自身剩余的存储空间为105m,待存储的文件分片每片为10m,则第一节点的可存储数量为10个,第一节点则可以选取10个待存储的文件分片。第一节点可以采用随机选取文件分片或者按照预设顺序选取文件分片,具体规则可以根据实际需求设置,不限于所举示例。

进一步,存储状态还可以包括已存储的文件分片的信息。第一节点将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对;选取未存储过的待存储的文件分片。即区块链中的节点如果发现待存储的文件分片与本地已存储的文件分片相同,可以不再进行重复存储,节省了存储空间,解决文件冗余的问题。

在一些实施例中,第一节点根据自身的存储状态和网络状况,选取待存储的文件分片。网络状况例如包括可用带宽、时延信息等。可以将根据网络状况信息划分不同的网络状态等级,不同的网络状态等级可以对应于不同的文件数据量,网络状态等级越低,对应的文件数据量越小。第一节点根据自身的存储状态确定可存储的待存储的文件分片的数量,根据网络状况信息确定可传输的待存储的文件分片的数量,两者进行比较取较小值作为待存储的文件分片的可存储数量,根据可存储数量选取待存储的文件分片。节点的网络状况会影响文件的存储效率,考虑网络状况可以提高文件的存取效率。

在步骤s106中,第一节点接收第二节点发送的存储响应并对选取的待存储的文件分片进行存储,存储响应中包括选取的待存储的文件分片。

第一节点接收到待存储的文件分片后,可以计算待存储的文件分片的散列值,与上一步骤中选取的待存储的文件分片的散列值进行比对,确定接收到的文件分片是上一步骤中选取的文件分片,以及接收到的待存储的文件分片未被篡改,提高文件存储的安全性。

在步骤s108中,第一节点生成存储广播信息,并发送至区块链系统中的其他节点;存储广播信息包括已存储的待存储的文件分片的标识信息。

区块链中的节点存储待存储的文件分片后进行广播,通知其他节点。区块链节点可以将已存储的待存储的文件分片的标识信息和对应的存储节点进行记录,便于后续查找文件分片。

在一些实施例中,存储广播信息也可用来辅助其他节点选取待存储的文件分片。第一节点根据区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数;在已存储的次数达到阈值的情况下,第一节点不选取该待存储的文件分片。不同节点的消息收发效率、存取效率不同,有一些节点会优先实现文件分片的选取和存储,发送存储广播信息。其他节点接收到这些存储广播信息后可以获知哪些待存储的文件分片已被存储以及存储次数,在已存储的次数达到阈值的情况下,可以选取其他待存储的文件分片进行存储。

在一些实施例中,第二节点可以记录待存储的文件分片被存储的次数,在已存储的次数达到阈值的情况下,如果接收到其他节点针对该待存储的文件分片的存储请求的情况下,可以提示其他节点选取其他待存储的文件分片。

在一些实施例中,第一节点或第二节点可以生成存储交易信息进行广播,区块链中的节点进行共识认证后根据存储交易信息更新区块链账本。存储交易信息例如包括时间戳、第一节点的存储数据量、第一节点的标识等。具体的共识认证机制,以及区块链账本中区块的结构可以参考现有技术的方案,在此不再赘述。

上述实施例的方法中利用区块链技术实现文件数据的存储,区块链系统中的节点可以根据自身的存储状态选取文件分片进行存储,并对存储情况进行广播。基于区块链技术的特性,文件会被存储多个备份,并且文件数据不易被篡改,提高了文件数据存储的安全性。此外,将文件数据分片分布式的存储能进一步提高对用户的文件数据的隐私保护和抗攻击能力。

下面结合图2描述本公开中用于获取已存储的文件的一些实施例。

图2为本公开文件存储方法另一些实施例的流程图。如图2所示,该实施例的方法包括:步骤s202~s210。

在步骤s202中,第一节点接收第二节点的文件获取广播信息,文件获取广播信息包括待获取的文件分片的标识信息。

用户可以向上传文件的节点发送文件获取请求。例如,用户向网盘服务端或网盘客户端上传待存储的文件,完成存储之后,当用户需要下载该文件时,则向网盘服务端或网盘客户端发送文件获取请求。用户也可以向区块链中任意节点发送文件获取请求。在区块链节点保存了各个区块链节点和存储的文件分片的对应关系的情况下,可以针对多个存储了对应的文件分片的区块链节点发送文件获取请求。

用户的客户端在待存储的文件完成存储之后,可以保存文件对应的文件分片的标识信息或者保存文件分片集合的标识信息。当需要获取文件时,则向区块链节点发送的文件获取请求中包括文件分片的标识信息或者文件分片集合的标识信息。文件分片集合的标识信息可以和文件分片的标识信息对应存储于区块链节点中,根据文件分片集合的标识信息(例如集合散列值)可以获取接收文件获取请求的节点可以获取文件分片的标识信息。区块链中的节点根据文件分片的标识信息查找本地是否存储待获取的文件分片,进而向其他节点发送文件获取广播消息,包含本地未存储的待获取的文件分片的标识信息。

在步骤s204中,第一节点在本地查找待获取的文件分片。

接收到文件获取广播信息的区块链节点,根据文件分片的标识信息例如文件分片的散列值在本地查找待获取的文件分片。

在步骤s206中,在查找到的情况下,第一节点将待获取的文件分片发送至用户。

第一节点如果与用户的终端可以直接通信,则可以直接将待获取的文件分片发送至用户。第一节点如果与用户的终端不能直接通信,则可以通过其他节点将待获取的文件分片转发至用户。用户接收到文件分片后可以计算文件分片的散列值与待获取的文件分片的散列值进行比对,确定文件分片未被篡改。

在步骤s208中,第一节点向区块链系统中的其他节点发送文件提取广播消息,文件提取广播信息包括发送至用户的待获取的文件分片的标识信息。

区块链系统中的节点在向用户发送文件分片之后,进行广播,以便其他节点获知该文件分片已发送至用户,不需要再向用户提供该文件分片。即区块链系统中节点根据文件获取广播信息和文件提取广播信息来确定向用户发送的待获取的文件分片。

在一些实施例中,可以将在区块链账本中记录第一节点向用户提供待获取的文件分片的交易记录。即用户存储文件和下载文件都可以在区块链账本进行记录,便于统计各个区块链节点的贡献。

在步骤s210中,在未查找到的情况下,第一节点向区块链系统中的其他节点发送文件获取广播信息。

可以利用区块链系统中节点的计算能力、带宽和与其他节点的连接关系等提高文件获取广播信息的传播速率和广度,使其他节点能够尽快查找到文件数据。

在一些实施例中,第一节点监测预设范围内其他节点的运行状况。在其他节点故障的情况下,向区块链系统中的节点发送故障广播信息。区块链系统中节点可以每隔一段时间向临近的节点发送心跳,若发现其他节点故障,则可以广播至区块链中,使其他节点不需要再向该节点请求或传输文件数据。

进一步,区块链系统中可以存储不同节点和存储的文件分片的对应关系,在节点故障的情况下,可以将故障节点的文件分片进行备份。存储了与故障节点的文件分片相同的文件分片的节点可以向区块链系统中的节点发送文件备份广播信息,文件备份广播信息中包括:待备份的文件分片的标识信息。其他节点接收到文件备份广播信息,可以根据自身的存储状态、网络状况、和其他节点的备份成功广播信息,选择待备份的文件分片进行备份。可以参考前述实施例中待存储的文件分片的存储过程,在此不再赘述。

上述实施例的方法中,利用区块链技术实现文件数据的分布式存储,提高数据存储的安全性。并且分布式的存储方式,利用各个节点的带宽优势提高了数据存取的效率,方便、快速并且安全。

下面结合图3描述本公开的又一些实施例。

图3为本公开文件存储方法又一些实施例的流程图。如图2所示,该实施例的方法包括:步骤s302~s318。

在步骤s302中,网盘客户端向网盘服务端获取区块链节点地址列表。

在步骤s304中,网盘客户端将待存储的文件进行分片,发送文件广播信息到区块链系统中。

网盘客户端可以计算分片散列值和所有分片散列值的集合的散列值,并将集合散列值与分片的散列值关联,文件广播信息包括待存储的文件分片的散列值。

在步骤s306中,家庭网关根据自身的存储状态、网络状况和其他节点的存储广播信息,选取待存储的文件分片进行存储。

在步骤s308中,家庭网关向区块链系统中的节点发送存储广播信息。

在步骤s310中,网盘客户端发送文件获取广播信息。文件获取广播信息包括待获取的文件分片的散列值。

在步骤s312中,家庭网关响应于文件获取广播信息在本地查找待获取的文件分片。

在步骤s314中,在查找到的情况下,家庭网关将待获取的文件分片发送至网盘客户端。

在步骤s316中,家庭网关向区块链系统中的其他节点发送文件提取广播消息,文件提取广播信息包括发送至网盘客户端的待获取的文件分片的标识信息。

在步骤s318中,在未查找到的情况下,家庭网关向区块链系统中的其他节点发送文件获取广播信息。

上述实施例的方法,将家庭网关与区块链技术相结合实现的低硬件成本、低带宽成本、低维护成本的分布式数据存储方法和系统,使得个人及企业无需部署高成本的数据存储中心。利用家庭网关天然的分布式的优势,结合区块链技术管理用户数据,去中心化使得在任何一个地方均可方便、快速、安全的获取自己的或共享的数据,突破地域和网络防火墙的限制。通过存储算法,解决文件冗余的问题。有效利用家庭网关的带宽及剩余算力,增强整个网络的健壮性。家庭网关中存储多个文件的区块链地址,如果有文件被读取,可广播其他区块链节点向读取者发送数据;如果家庭网关有大量可用存储空间,则此节点可随时接受写入数据,并生成相关文件的区块链地址,以供读取。每份文件可同时在不同节点存储,相互备份,增强数据存取的安全性。

本公开提供一种区块链节点,下面结合图4进行描述。

图4为本公开区块链节点的一些实施例的结构图。如图4所示,该实施例的区块链节点40,可以是前述实施例中的第一节点包括:信息接收模块402,文件选取模块404,文件存储模块406,信息广播模块408。

信息接收模块402,用于接收第二节点发送的文件广播信息,文件广播信息包括待存储的文件分片的标识信息。

第二节点也为区块链节点,在一些实施例中,区块链节点包括:家庭网关、网盘服务端、网盘客户端中至少一种;文件分片的标识信息包括:文件分片的散列值。

文件选取模块404,用于根据自身的存储状态,选取待存储的文件分片,并向第二节点发送存储请求;存储请求中包括选取的待存储的文件分片的标识信息。

在一些实施例中,文件选取模块404用于根据自身剩余的存储空间,确定待存储的文件分片的可存储数量,根据可存储数量选取待存储的文件分片;或者,将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对,选取未存储过的待存储的文件分片。

在一些实施例中,文件选取模块404用于根据自身的存储状态和网络状况,选取待存储的文件分片。

在一些实施例中,文件选取模块404用于根据自身的存储状态和区块链系统中其他节点的存储广播信息,选取待存储的文件分片。

在一些实施例中,文件选取模块404用于根据区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数,在已存储的次数达到阈值的情况下,不选取该待存储的文件分片。

文件存储模块406,用于接收第二节点发送的存储响应并对选取的待存储的文件分片进行存储,存储响应中包括选取的待存储的文件分片。

信息广播模块408,用于生成存储广播信息,并发送至区块链系统中的其他节点;存储广播信息包括已存储的待存储的文件分片的标识信息。

在一些实施例中,区块链节点40还包括:文件查找模块410。信息接收模块402还用于收第二节点的文件获取广播信息,文件获取广播信息包括待获取的文件分片的标识信息。文件查找模块410用于在本地查找待获取的文件分片,在查找到的情况下,将待获取的文件分片发送至用户。信息广播模块408还用于向区块链系统中的其他节点发送文件提取广播消息,文件提取广播信息包括发送至用户的待获取的文件分片的标识信息。

进一步,信息广播模块408还用于在未查找到的情况下,向区块链系统中的其他节点发送文件获取广播信息。

在一些实施例中,区块链节点40还包括:故障监测模块412,用于监测预设范围内其他节点的运行状况,在其他节点故障的情况下,向区块链系统中的节点发送故障广播信息。

在一些实施例中,区块链节点40可以为第二节点,信息广播模块408还用于向区块链系统中其他节点发送文件广播信息。信息接收模块402还用于接收其他节点发送的存储请求,并向该节点发送存储响应。

本公开还提供一种区块链系统,下面结合图5进行描述。

图5为本公开区块链系统的一些实施例的结构图。如图5所示,该实施例的5包括:前述任意实施例的区块链节点40。

区块链节点40还用于向区块链系统中其他节点发送文件广播信息,接收其他节点发送的存储请求,并向该节点发送存储响应。

本公开的实施例中的文件存储装置,例如为区块链节点,可各由各种计算设备或计算机系统来实现,下面结合图6以及图7进行描述。

图6为本公开文件存储装置的一些实施例的结构图。如图6所示,该实施例的装置60包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行本公开中任意一些实施例中的文件存储方法。

其中,存储器610例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)、数据库以及其他程序等。

图7为本公开文件存储装置的另一些实施例的结构图。如图7所示,该实施例的装置70包括:存储器710以及处理器720,分别与存储器610以及处理器620类似。还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730,740,750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口750为sd卡、u盘等外置存储设备提供连接接口。

本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。


技术特征:

1.一种文件存储方法,包括:

第一节点接收第二节点发送的文件广播信息,所述第一节点和第二节点为区块链系统中的区块链节点,所述文件广播信息包括待存储的文件分片的标识信息;

所述第一节点根据自身的存储状态,选取待存储的文件分片,并向所述第二节点发送存储请求;所述存储请求中包括选取的待存储的文件分片的标识信息;

所述第一节点接收所述第二节点发送的存储响应并对选取的待存储的文件分片进行存储,所述存储响应中包括选取的待存储的文件分片;

所述第一节点生成存储广播信息,并发送至所述区块链系统中的其他节点;所述存储广播信息包括已存储的待存储的文件分片的标识信息。

2.根据权利要求1所述的文件存储方法,其中,

所述第一节点根据自身的存储状态,选取待存储的文件分片包括:

所述第一节点根据自身剩余的存储空间,确定待存储的文件分片的可存储数量,根据所述可存储数量选取待存储的文件分片;

或者,所述第一节点将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对,选取未存储过的待存储的文件分片。

3.根据权利要求1所述的文件存储方法,其中,

所述第一节点根据自身的存储状态,选取待存储的文件分片包括:

所述第一节点根据自身的存储状态和网络状况,选取待存储的文件分片。

4.根据权利要求1所述的文件存储方法,其中,

所述第一节点根据自身的存储状态,选取待存储的文件分片包括:

所述第一节点根据自身的存储状态和所述区块链系统中其他节点的存储广播信息,选取待存储的文件分片。

5.根据权利要求4所述的文件存储方法,其中,

所述第一节点根据自身的存储状态和所述区块链系统中其他节点的存储广播信息,选取待存储的文件分片包括:

所述第一节点根据所述区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数;

在已存储的次数达到阈值的情况下,所述第一节点不选取该待存储的文件分片。

6.根据权利要求1所述的文件存储方法,还包括:

所述第一节点接收第二节点的文件获取广播信息,所述文件获取广播信息包括待获取的文件分片的标识信息;

所述第一节点在本地查找待获取的文件分片;

在查找到的情况下,所述第一节点将待获取的文件分片发送至用户;

所述第一节点向区块链系统中的其他节点发送文件提取广播消息,所述文件提取广播信息包括发送至所述用户的待获取的文件分片的标识信息。

7.根据权利要求6所述的文件存储方法,还包括:

在未查找到的情况下,所述第一节点向所述区块链系统中的其他节点发送文件获取广播信息。

8.根据权利要求1所述的文件存储方法,还包括:

所述第一节点监测预设范围内其他节点的运行状况;

在其他节点故障的情况下,所述第一节点向区块链系统中的节点发送故障广播信息。

9.根据权利要求1-8任一项所述的文件存储方法,其中,

区块链系统中的节点包括:家庭网关、网盘服务端、网盘客户端中至少一种;

文件分片的标识信息包括:文件分片的散列值。

10.一种区块链节点,所述区块链节点为第一节点,包括:

信息接收模块,用于接收第二节点发送的文件广播信息,所述第二节点为区块链节点,所述文件广播信息包括待存储的文件分片的标识信息;

文件选取模块,用于根据自身的存储状态,选取待存储的文件分片,并向所述第二节点发送存储请求;所述存储请求中包括选取的待存储的文件分片的标识信息;

文件存储模块,用于接收所述第二节点发送的存储响应并对选取的待存储的文件分片进行存储,所述存储响应中包括选取的待存储的文件分片;

信息广播模块,用于生成存储广播信息,并发送至所述区块链系统中的其他节点;所述存储广播信息包括已存储的待存储的文件分片的标识信息。

11.根据权利要求10所述的区块链节点,其中,

所述文件选取模块用于根据自身剩余的存储空间,确定待存储的文件分片的可存储数量,根据所述可存储数量选取待存储的文件分片;或者,将已存储的文件分片的标识信息与待存储的文件分片的标识信息进行比对,选取未存储过的待存储的文件分片。

12.根据权利要求10所述的区块链节点,其中,

所述文件选取模块用于根据自身的存储状态和网络状况,选取待存储的文件分片。

13.根据权利要求10所述的区块链节点,其中,

所述文件选取模块用于根据自身的存储状态和所述区块链系统中其他节点的存储广播信息,选取待存储的文件分片。

14.根据权利要求13所述的区块链节点,其中,

所述文件选取模块用于根据所述区块链系统中其他节点的存储广播信息,确定待存储的文件分片已存储的次数,在已存储的次数达到阈值的情况下,不选取该待存储的文件分片。

15.根据权利要求10所述的区块链节点,还包括:文件查找模块;

所述信息接收模块还用于收第二节点的文件获取广播信息,所述文件获取广播信息包括待获取的文件分片的标识信息;

所述文件查找模块用于在本地查找待获取的文件分片,在查找到的情况下,将待获取的文件分片发送至用户;

所述信息广播模块还用于向区块链系统中的其他节点发送文件提取广播消息,所述文件提取广播信息包括发送至所述用户的待获取的文件分片的标识信息。

16.根据权利要求15所述的区块链节点,其中,

所述信息广播模块还用于在未查找到的情况下,向所述区块链系统中的其他节点发送文件获取广播信息。

17.根据权利要求10所述的区块链节点,还包括:

故障监测模块,用于监测预设范围内其他节点的运行状况,在其他节点故障的情况下,向区块链系统中的节点发送故障广播信息。

18.根据权利要求10-17任一项所述的区块链节点,其中,

区块链节点包括:家庭网关、网盘服务端、网盘客户端中至少一种;

文件分片的标识信息包括:文件分片的散列值。

19.一种区块链系统,包括:权利要求10-18中任一项所述的区块链节点;

所述区块链节点还用于向区块链系统中其他节点发送文件广播信息,接收其他节点发送的存储请求,并向该节点发送存储响应。

20.一种文件存储装置,包括:

存储器;以及

耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-9任一项所述的文件存储方法。

21.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现权利要求1-9任一项所述方法的步骤。

技术总结
本公开涉及一种文件存储方法、装置、区块链节点和系统,涉及计算机技术领域。本公开的方法包括:第一节点接收第二节点发送的文件广播信息,第一节点和第二节点为区块链系统中的区块链节点,文件广播信息包括待存储的文件分片的标识信息;第一节点根据自身的存储状态,选取待存储的文件分片,并向第二节点发送存储请求;存储请求中包括选取的待存储的文件分片的标识信息;第一节点接收第二节点发送的存储响应并对选取的待存储的文件分片进行存储,存储响应中包括选取的待存储的文件分片;第一节点生成存储广播信息,并发送至区块链系统中的其他节点;存储广播信息包括已存储的待存储的文件分片的标识信息。

技术研发人员:陈健康
受保护的技术使用者:中国电信股份有限公司
技术研发日:2018.12.03
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-19640.html

最新回复(0)