文件存储方法、文件下载方法和文件处理方法及相关组件
技术领域
本申请涉及分布式存储技术领域,特别是涉及文件存储方法、文件下载方法和文件处理方法及文件管理设备及可读存储介质。
背景技术
由于去中心化网络中没有中心化服务器,在去中心化网络中存储文件,客户端只能上传文件到节点。而去中心化网络中很多的节点没有公网IP,属于内网节点,因此客户端在上传文件过程中,并不能直接将文件传到内网节点。相应地,从去中心化网络中下载文件,也存在相应问题。
综上所述,如何有效地解决如何保障去中心化网络的文件管理等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供文件存储方法、文件下载方法和文件处理方法及文件管理设备及可读存储介质,以实现提高去中心化网络的文件上传速度。
为解决上述技术问题,本申请提供如下技术方案:
一方面,提供了一种文件存储方法,应用于去中心化网络的节点,包括:
将目标文件进行切片,获得多个文件切片;
将根据所述目标文件和所述多个文件切片生成一级索引;
获取去中心化网络中的多个外网节点,将所述多个文件切片上传并存储到所述多个外网节点;
根据所述文件切片和对应文件切片存储的节点信息生成二级索引;
将所述一级索引和所述二级索引存储在所述去中心化网络中。
优选地,所述将根据所述目标文件和所述多个文件切片生成一级索引,包括:
分别对所述多个文件切片进行哈希计算,获得所述多个文件切片哈希;
通过利用所述多个文件切片哈希构建默克尔树,获得所述目标文件哈希;
将所述目标文件哈希作为第一key,将所述目标文件对应的所有所述文件切片哈希作为第一value;
将所述第一key和所述第一value组成第一键值对,所述第一键值对作为所述一级索引。
优选地,根据所述文件切片和对应文件切片存储的节点信息生成第二索引,包括:
将所述文件切片哈希作为第二key,将存储有所述文件切片的所有所述外网节点的外网地址作为对应第二value;
将所述第二key和所述第二value组成第二键值对,所述第二键值对作为所述二级索引。
优选地,还包括:
在存储了所述文件切片的外网节点有变化时,更新所述二级索引。
优选地,所述获取去中心化网络中的多个外网节点,包括:
获取M个所述外网节点,将N个所述文件切片分别上传至M个所述外网节点;所述M为大于1且小于等于所述N的自然数。
优选地,所述将目标文件进行切片,获得多个文件切片,包括:
利用文件大小与切片大小的对应关系,确定所述目标文件的切片大小;
按照所述切片大小对所述目标文件进行切片,获得所述多个文件切片。
另一方面,提供了一种文件下载方法,应用于去中心化网络的节点,包括:
获取待下载目标文件对应的一级索引,并基于所述一级索引获取所述目标文件的二级索引;
利用所述二级索引,查询存储有所述目标文件对应的多个文件切片的多个网络节点;
连接所述多个网络节点,并从所述多个网络节点中下载所述多个文件切片;
利用所述一级索引拼接所述多个文件切片,获得所述目标文件。
优选地,所述一级索引包括第一key和第一value,所述第一key为目标文件哈希,所述目标文件哈希为利用对所述目标文件切片后获得的多个文件切片哈希构建默克尔树后获得的,将所述多个文件切片哈希按照切片顺序排列后作为所述第一value。
优选地,所述二级索引包括第二key和第二value,所述第二key为所述文件切片哈希,将存储了文件切片的所述网络节点对应的外网地址作为所述第二value。
优选地,所述网络节点的数量大于或等于所述文件切片的数量。
相应于上述文件存储方法,还提供了一种文件存储装置,应用于去中心化网络的节点,包括:
文件切片模块,用于将目标文件进行切片,获得多个文件切片;
一级索引生成模块,用于将根据所述目标文件和所述多个文件切片生成一级索引;
文件切片上传模块,用于获取去中心化网络中的多个外网节点,将所述多个文件切片上传并存储到所述多个外网节点;
二级索引生成模块,用于根据所述文件切片和对应文件切片存储的节点信息生成二级索引;
索引存储模块,用于将所述一级索引和所述二级索引存储在所述去中心化网络中。
相应于上述文件下载方法,还提供了一种文件下载装置,应用于去中心化网络的节点,包括:
检索模块,用于获取待下载目标文件对应的一级索引,并基于所述一级索引获取所述目标文件的二级索引;
网络节点获取模块,用于利用所述二级索引,查询存储有所述目标文件对应的多个文件切片的多个网络节点;
文件切片下载模块,用于连接所述多个网络节点,并从所述多个网络节点中下载所述多个文件切片;
目标文件拼接模块,用于利用所述一级索引拼接所述多个文件切片,获得所述目标文件。
另一方面,提供了一种文件处理方法,应用于去中心化网络的外网节点,包括:
接收目标节点上传的文件切片,并存储所述文件切片;所述文件切片为目标文件的切片;
向所述目标节点反馈自身的节点信息,以便所述目标节点生成所述目标文件的二级索引;
向相邻节点扩散所述文件切片;
接收指定节点发送的下载请求,将所述文件切片发送给所述指定节点;所述下载请求为所述指定节点基于所述目标文件的一级索引而发送的。
优选地,在所述向相邻节点扩散所述文件切片之前,包括:从所述去中心化网络中,获取预设数量且符合内外网比例的节点作为所述相邻节点。
相应于文件处理方法,提供一种文件处理装置,应用于去中心化网络的外网节点,包括:
文件切片存储模块,用于接收目标节点上传的文件切片,并存储所述文件切片;所述文件切片为目标文件的切片;
节点信息反馈模块,用于向所述目标节点反馈自身的节点信息,以便所述目标节点生成所述目标文件的二级索引;
文件切片扩散模块,用于向相邻节点扩散所述文件切片;
文件切片下载处理模块,用于接收指定节点发送的下载请求,将所述文件切片发送给所述指定节点;所述下载请求为所述指定节点基于所述目标文件的一级索引而发送的。
相应于上述文件存储方法和文件下载方法,本申请还提供了一种文件管理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时,实现如上述文件存储方法的步骤,或实现如上述的文件下载方法的步骤,或实现如上述文件处理方法的步骤。
相应于上述文件存储方法和文件下载方法,本申请还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述文件存储方法的步骤,或实现如上述的文件下载方法的步骤,或实现如上述文件处理方法的步骤。
应用本申请实施例所提供的文件存储方法,将目标文件进行切片,获得多个文件切片;将根据目标文件和多个文件切片生成一级索引;获取去中心化网络中的多个外网节点,将多个文件切片上传并存储到多个外网节点;根据文件切片和对应文件切片存储的节点信息生成二级索引;将一级索引和二级索引存储在去中心化网络中。
在上传目标文件时,首先将目标文件进行切片,得到多个文件切片。然后,根据目标文件和多个文件切片生成一级索引。并在获取到去中心化中的多个外网节点之后,将多个文件切片上传并存储到多个外网节点中。根据文件切片和对应文件切片存储的节点信息生成二级索引。为了便于定位目标文件,最后将一级索引和二级索引存储在去中心化网络中。可见,该方法中从去中心化网络中获取外网节点,由于外网节点具有外网IP,因此可直接将文件切片上传到外网节点中,且外网节点通过扩散,可快速将文件切片在整个去中心化网络进行扩散。另外,由于文件切片相较于目标文件,其数据量小,上传成功率更高。在上传了文件切片到外网节点之后,将一级索引和二级索引进行存储,便于定位目标文件,即确定哪些外网节点中存储了目标文件的文件切片。即,在本方法中,将目标文件进行切片后进行上传,可提高目标文件的上传速度。
应用本申请实施例所提供的文件下载方法,获取待下载目标文件对应的一级索引,并基于一级索引获取目标文件的二级索引;利用二级索引,查询存储有目标文件对应的多个文件切片的多个网络节点;连接多个网络节点,并从多个网络节点中下载多个文件切片;利用一级索引拼接多个文件切片,获得目标文件。
在下载目标文件时,首先基于目标文件对应的一级索引获得目标文件对应的二级索引,利用该二级索引,便可查询出目标文件对应的多个文件切片的网络节点。连接存储了目标文件对应的多个文件切片的网络节点,从中下载多个文件切片,基于一级索引可将多个文件切片进行拼接,最终获得目标文件。由于下载目标文件时,是从多个网络节点中分别下载文件切片,文件切片的大小比完整的目标文件更小,下载成功率更高,下载速度更快。与此同时,基于一级索引可拼接文件切片,也能够达到下载完整目标文件的效果。
应用本申请实施例所提供的一种文件处理方法,去中心化网络的外网节点接收目标节点上传的文件切片,并存储文件切片;文件切片为目标文件的切片;向目标节点反馈自身的节点信息,以便目标节点生成目标文件的二级索引;向相邻节点扩散文件切片;接收指定节点发送的下载请求,将文件切片发送给指定节点;下载请求为指定节点基于目标文件的一级索引而发送的。
去中心花网络的外网节点,在接收到文件切片之中,首先对文件切片进行存储,一方面向目标节点反馈自身的节点信息,以便生成目标文件的二级索引,便于定位目标文件;另一方面,向相邻节点扩散该文件切片,以进行多点存储以及多点下载。在外网节点接收到文件切片的下载请求之后,可将文件切片发送给指定节点。可见,该外网节点可辅助实现目标文件的快速上传和快速下载。
相应地,本申请实施例还提供了与上述文件存储方法相对应的文件存储装置、与上述文件下载方法相对应的文件下载装置,与上述文件处理方法相对于的文件处理装置,以及一种文件管理设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种文件存储方法的实施流程图;
图2为本申请实施例中一种文件下载方法的实施流程图;
图3为本申请实施例中一种去中心化网络文件上传以及文件下载的示意图;
图4为本申请实施例中一种文件处理方法的流程图;
图5为本申请实施例中一种文件存储装置的结构示意图;
图6为本申请实施例中一种文件下载装置的结构示意图;
图7为本申请实施例中一种文件处理装置的结构示意图;
图8为本申请实施例中一种文件管理设备的结构示意图;
图9为本申请实施例公开的另一种文件管理设备示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本实施例中诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
实施例一:
请参考图1,图1为本申请实施例中一种文件存储方法的流程图,该方法可应用于去中心化网络的节点中,该方法包括以下步骤:
S101、将目标文件进行切片,获得多个文件切片。
在本实施例中,可预先设置需要进行切片的文件大小阈值,然后在客户端确定需要上传文件时,若该文件的大小大于该文件大小阈值,则确定该文件需要切片,即目标文件即为需要进行切片上传的文件。例如,当设置最小文件切片为32M时,则可将文件大小阈值设置为32M。
优选地,为了避免出现大文件切片后,切片数量过多,导致上传复杂化。在本实施例中,还可对切片的切片数量进行限制。可针对文件大小而设置不同的文件切片大小,进而保障切片数量在一定数据范围内(如将多数文件的切片数量约束在10至16之间)。具体实现过程,包括:
步骤一、利用文件大小与切片大小的对应关系,确定目标文件的切片大小;
步骤二、按照切片大小对目标文件进行切片,获得文件切片。
为便于描述,下面将上述两个步骤结合起来进行说明。
即,可预先设置文件大小与切片大小的对应关系。例如,可设置对应关系:文件大小小于500M,切片大小为32M;文件大小大于等于500M且小于1G,切片大小为64M;文件大小大于等于1G且小于2G,切片大小为128M;文件大小大于等于2G,切片大小为256M。
按照文件大小和切片大小的对应关系,便可确定目标文件的切片大小,然后可按照该切片大小对目标文件进行切片,最终保障将切片数量约束在一个相对稳定的范围内。
S102、将根据目标文件和多个文件切片生成一级索引。
由于在本申请中,将目标文件进行了切片,为了保障数据的完整性和可靠性,在记录目标文件的索引时,需要对应记录各个切片与目标文件的关系以及各个切片的存储位置,以便最终定位目标文件。
基于此,在本申请中设置了目标文件的一级索引和二级索引,其中一级索引中记录目标文件哈希和各个文件切片哈希,二级索引记录各个文件切片哈希一级存储文件切片的网络节点的地址。
其中,一级索引的生成过程,包括:
步骤一、分别对多个文件切片进行哈希计算,获得多个文件切片哈希;
步骤二、通过利用多个文件切片哈希构建默克尔树,获得目标文件哈希;
步骤三、将目标文件哈希作为第一key,将目标文件对应的所有文件切片哈希作为第一value;
步骤四、将第一key和第一value组成第一键值对,第一键值对作为一级索引。
为便于描述,下面将上述四个步骤结合起来进行说明。
首先,对各个文件切片进行哈希计算,可获得每一个文件切片对应的哈希值,即文件切片哈希。然后,将各个文件切片哈希作为叶子节点,构建默克尔树,将构建出的默克尔树的根节点哈希作为目标文件哈希。当然,也可直接对目标文件进行哈希计算,将计算得到的哈希值作为目标文件哈希。
然后,将目标文件哈希作为第一key,将文件切片哈希按照切片顺序排列后作为第一value。第一key和第一value具有对应关系,即第一键值对,该对应关系由key/value数据库结构形式进行保存。将第一键值对作为目标文件的一级索引。
由于二级索引需要记录网络节点的地址,因此,二级索引需在上传文件切片后确定,在后文中进行详述。
S103、获取去中心化网络中的多个外网节点,将多个文件切片上传并存储到多个外网节点。
其中,如DHT网络的去中心化网络中,是由分布网络组成,每个节点都有一个路由表包括此节点相连的节点路由信息,路由表里会标识哪些是外网节点,哪些是内网节点。
要上传目标文件的节点加入去中心DHT网络,便可获取到路由表,然后基于路由表中的节点利用信息便可确定到DHT网络的其他节点的路由。
考虑到去中心DHT网络中既有内网节点又有外网节点,内网节点即通常为192.168.或者10.x.x开头的IP地址的节点,外网节点是有真正外网IP地址的节点。而访问内网节点需要借助第三方服务才能进行访问,而外网节点可直接基于其外网IP进行访问,因此在本实施例中可优先选择获取外网节点。
需要说明的是,在本实施例中获取外网节点,即获取包括外网节点的访问路径。
获取到外设节点之后,可将文件切片上传到外网节点中,目标文件的多个文件切片可上传到同一个外网节点,也可将每个文件切片上传到不同的外网节点。外网节点接收到文件切片之后,可将文件切片在去中心DHT网络进行扩散。
优选地,为了提高文件切片的上传效率,在本实施例中,还可获取多个外网节点,并将所有的文件切片上传到不同的外网节点中。具体的,当文件切片的数量为N,获取去中心DHT网络中外网节点,将文件切片上传到外网节点,具体为:获取M个外网节点,将N个文件切片分别上传至M个外网节点;M为大于1且小于等于N的自然数。例如,若目标文件的文件切片共有12个,此时可从去中心DHT网络中获取至少2个最多12个外网节点,然后将这12个切片上传到外网节点中,若外网节点为12个,则在每一个外网节点中上传一个文件切片;若外网节点少于12个,则在一个外网节点中同时上传1个或多个文件切片。最终使得一个文件切片至少对应一个外网节点即可。
进一步,为了进一步提高文件切片在去中心化DHT网络中进行扩散,上述M还可大于N。即客户端可将同一个切片直接上传到多个外网节点中。
S104、根据文件切片和对应文件切片存储的节点信息生成二级索引。
其中,二级索引的生成过程,包括:
步骤一、将文件切片哈希作为第二key,将存储有文件切片的所有外网地址作为对应第二value;
步骤二、将第二key和第二value组成第二键值对,第二键值对作为二级索引。
为便于描述,下面将上述两个步骤结合起来进行说明。
每一个文件切片哈希作为一个第二key,将存储了文件切片的外网节点的外网地址作为对应第二value。对应的第二key和第二value构成一个第二键值对,该第二键值对即为二级索引。其中,文件切片哈希即对目标文件的文件切片进行哈希计算得到的哈希值,一个文件切片对于一个唯一的文件切片哈希。在本实施例中,对于具体采用何种哈希算法对文件切片进行计算,并不做限定。
另外,一个目标文件的二级索引的数量由其文件切片的数量而定,具体来说,二级索引的个数与文件切片的数量相同。且每一个二级索引的第二key和第二value由存储了文件切片的外网节点进行关联。例如,目标文件一个有10个文件切片,则目标文件的二级索引共10,这10个二级索引的第二key各不相同,第二value可以相同也可以不同(即不同的切片文件可以存储在同一个外网节点中也可以存储在不同的外网节点中),第二value对应外网节点的外网地址,第二key对应文件切片。
需要说明的是,当外网节点对文件切片进行扩散后,其他网络节点存储文件切片时,则目标文件多一个新的二级索引。具体的,外网节点在中心DHT网络扩散文件切片,即接收到文件切片的网络节点,将二级索引中的第二value修改为本地地址后进行存储。也就是说,每被扩散至一个网络节点,目标文件的二级索引则多一个,且该二级索引的第一key保持不变,仅更换网络地址。特别地,由于扩散文件切片,可向内网节点扩散也可向外网节点扩散,此时新增的二级索引的第二value既可以为外网地址也可以为内网地址。
优选地,考虑到由于设备故障等诸多因素,导致存储了文件切片的外网节点的IP地址发生变化时,为了便于定位目标文件,需对二级索引进行更新。即在存储了文件切片的外网节点有变化时,更新二级索引。其中外网节点的变化可具体为该外网节点的IP地址发生变化(此时需将对应的第二value更改为改外网节点更新后/或当前邮箱的IP地址),也可以为原本有外网节点a存储的文件切片,迁移至外网节点b进行存储(此时需将对应的第二value更改为外网节点b对应的IP地址)。
S105、将一级索引和二级索引存储在去中心化网络中。
在确定一级索引和二级索引之后,可将一级索引和二级索引存储在去中心DHT网络中,以便定位目标文件。
应用本申请实施例所提供的文件存储方法,将目标文件进行切片,获得多个文件切片;将根据目标文件和多个文件切片生成一级索引;获取去中心化网络中的多个外网节点,将多个文件切片上传并存储到多个外网节点;根据文件切片和对应文件切片存储的节点信息生成二级索引;将一级索引和二级索引存储在去中心化网络中。
在上传目标文件时,首先将目标文件进行切片,得到多个文件切片。然后,根据目标文件和多个文件切片生成一级索引。并在获取到去中心化中的多个外网节点之后,将多个文件切片上传并存储到多个外网节点中。根据文件切片和对应文件切片存储的节点信息生成二级索引。为了便于定位目标文件,最后将一级索引和二级索引存储在去中心化网络中。可见,该方法中从去中心化网络中获取外网节点,由于外网节点具有外网IP,因此可直接将文件切片上传到外网节点中,且外网节点通过扩散,可快速将文件切片在整个去中心化网络进行扩散。另外,由于文件切片相较于目标文件,其数据量小,上传成功率更高。在上传了文件切片到外网节点之后,将一级索引和二级索引进行存储,便于定位目标文件,即确定哪些外网节点中存储了目标文件的文件切片。即,在本方法中,将目标文件进行切片后进行上传,可提高目标文件的上传速度。
实施例二:
请参考图2,图2为本申请实施例中一种文件下载方法的流程图,该方法可应用于去中心化网络的节点中,该方法包括以下步骤:
S201、获取待下载目标文件对应的一级索引,并基于一级索引获取目标文件的二级索引。
在本方法中,去中心化网络的节点可在接收到客户端的目标文件下载请求,或者是该节点本身的需要下载目标文件时,获取到待下载文件的对应的一级索引。
然后,基于一级索引可获得二级索引。其中,一级索引和二级索引均可以键值对(key/value)表示。为便于描述,将一级索引的key称为第一key,将一级索引的value称为第一value;将二级索引的key称为第二key,将一级索引的value称为第二value。特别地,为了实现基于一级索引能够获得二级索引,可将每一个第一value分别作为二级索引的key,即第二key。
其中,一级索引和二级索引即为定位目标文件的索引。具体的,一级索引包括第一key和第一value,第一key为目标文件哈希,目标文件哈希为利用对目标文件切片后获得的多个文件切片哈希构建默克尔树后获得的,将多个文件切片哈希按照切片顺序排列后作为第一value。二级索引包括第二key和第二value,第二key为文件切片哈希,将存储了文件切片的网络节点对应的外网地址作为第二value。
S202、利用二级索引,查询存储有目标文件对应的多个文件切片的多个网络节点。
由于二级索引的第二value为存储了文件切片的网络节点外网地址,因此基于该二级索引,可以查询存储有毛病文件对应的多个文件切片的多个网络节点。
S203、连接多个网络节点,并从多个网络节点中下载多个文件切片。
获得存储了文件切片的网络节点后,便可连接这些网络节点,并从多个网络节点中下载目标文件对应的多个文件切片。
优选地,为了提高下载速度,网络节点的数量大于或等于文件切片的数量。即可从多个网络节点中同时下载同一个文件切面,以加快文件下载速度。
S204、利用一级索引拼接多个文件切片,获得目标文件。
在一级索引中,可解析出文件切片的拼接顺序,基于切片顺序对多个文件切片进行拼接,即可获得目标文件。
为了便于理解,下面对下载目标文件的过程进行详细描述:
下载目标文件时,首先基于目标文件的一级索引和二级索引查询存储有目标文件的各个文件切片的网络节点。具体的,客户端上传目标文件之后,会有一个文件hash地址,即第一key,通过这个第一key可以到去中心DHT网络查询到一级索引的第一value。而一级索引的第二value里面会包括所有文件切片的哈希值,即第二key,以第二key去查询二级索引,即可从二级索引中确定出存储了文件切片的网络节点地址。
连接存储有文件切片的网络节点,便可下载文件切片,然后按照一级索引对文件切片进行组合拼接,便可获得目标文件。其中,一级索引内的第一value可具体为按照切片顺序排列后的文件切片哈希,因而可按照第一value对文件切片进行拼接组合。由于文件切片较小,因而下载成功率高,可提升目标文件的整体下载速度。特别地当目标文件的文件切片存储在不同的网络节点中时,相当于有多个下载通道对目标文件进行下载,可大大提升目标文件下载速度。
优选地,考虑到去中心DHT网络中的网络节点对文件切片进行扩散后,同一个文件切片可能存储在多个网络节点中,在下载同一个文件切片时,还可同时从多个网络节点中并行下载文件切片,如此便可进一步提高数据下载效率。
应用本申请实施例所提供的文件下载方法,获取待下载目标文件对应的一级索引,并基于一级索引获取目标文件的二级索引;利用二级索引,查询存储有目标文件对应的多个文件切片的多个网络节点;连接多个网络节点,并从多个网络节点中下载多个文件切片;利用一级索引拼接多个文件切片,获得目标文件。
在下载目标文件时,首先基于目标文件对应的一级索引获得目标文件对应的二级索引,利用该二级索引,便可查询出目标文件对应的多个文件切片的网络节点。连接存储了目标文件对应的多个文件切片的网络节点,从中下载多个文件切片,基于一级索引可将多个文件切片进行拼接,最终获得目标文件。由于下载目标文件时,是从多个网络节点中分别下载文件切片,文件切片的大小比完整的目标文件更小,下载成功率更高,下载速度更快。与此同时,基于一级索引可拼接文件切片,也能够达到下载完整目标文件的效果。
上述实施例一与上述实施例二之间的相应技术特征可以相互参照(例如,实施例二中的第一索引和第二索引的具体生成过程等),在此不再一一赘述。
在实际应用中,可将上述实施例一和实施例二的方法结合起来进行实施,以达到快速上传和下载等效果。为便于本领域技术人员更好的理解本申请实施例所提供的文件上传方法,文件下载方法以及具体如何结合这两种方法,下面结合具体的应用场景为例,对上述两种方法进行详细说明。
请参考图3,图3为本申请实施例中一种去中心化网络文件上传示意图。
可见,文件上传过程,包括:
文件切片:为了增加上传成功率和上传稳定性以及便于下载,把待上传的目标文件按照一定大小(如32M)的切片(slice)。
计算索引:整个文件通过默克尔树(Merkle Tree)方法计算文件hash(即一级索引第一Key),把32M切片的哈希(hash)作为此slice的索引(即二级索引第二key,第二velue由节点地址信息生成),把所有slice的二级索引key组合一起作为一级索引的第一value。
获取可用节点:将客户端接入去中心DHT网络,从此中心DHT网络中获取外网节点。
上传切片:把所有slice分别通过TCP上传到不同外网节点,并将K/V(即key/value,包括一级索引和二级索引)存储在去中心DHT网络中。
扩散:客户端上传成功之后,已经存储slice的外网节点,会从去中心DHT网络获取一定数量的节点(具体的,内外网按照一定的比例,如1:1),然后向这些节点扩散slice。
文件下载过程:
客户端拿到一级索引的第一key之后,可从DHT网络中查询一级索引的第一value,以获取二级索引key列表。然后,从DHT网络中查询所有二级索引的第二value,以获取存储slice的所有网络节点列表。然后链接这些网络节点下载slice数据,最后组合各个slice便可获得目标文件。
实施例三:
请参考图4,图4为本申请实施例中一种文件处理方法的流程图,该方法可应用于去中心化网络的外网节点中,该方法包括以下步骤:
S401、接收目标节点上传的文件切片,并存储文件切片。
文件切片为目标文件的切片。
S402、向目标节点反馈自身的节点信息,以便目标节点生成目标文件的二级索引。
S403、向相邻节点扩散文件切片。
以使得多个节点均可存储该文件切片,以便进行多点下载,提高下载速度。
其中,相邻节点可为与外网节点通信相邻的节点,如路由跳数为1或小于指定阈值如5.
优选地,为了使得文件切片按照需要在内外网中按照一定比例进行扩散,在所述向相邻节点扩散所述文件切片之前,可从DHT网络中,获取预设数量且符合内外网比例的节点作为所述相邻节点。即,客户端上传成功之后,已经存储slice的外网节点,会从去中心DHT网络获取一定数量(如20个)的节点(具体的,内外网按照一定的比例,如1:1),然后向这些节点扩散文件切片。
S404、接收指定节点发送的下载请求,将文件切片发送给指定节点。
下载请求为指定节点基于目标文件的一级索引而发送的。
需要说明的是,本实施例与上述实施例中的相似或相近的处理步骤均可对应参照,在此不再一一赘述。
应用本申请实施例所提供的一种文件处理方法,去中心化网络的外网节点接收目标节点上传的文件切片,并存储文件切片;文件切片为目标文件的切片;向目标节点反馈自身的节点信息,以便目标节点生成目标文件的二级索引;向相邻节点扩散文件切片;接收指定节点发送的下载请求,将文件切片发送给指定节点;下载请求为指定节点基于目标文件的一级索引而发送的。
去中心花网络的外网节点,在接收到文件切片之中,首先对文件切片进行存储,一方面向目标节点反馈自身的节点信息,以便生成目标文件的二级索引,便于定位目标文件;另一方面,向相邻节点扩散该文件切片,以进行多点存储以及多点下载。在外网节点接收到文件切片的下载请求之后,可将文件切片发送给指定节点。可见,该外网节点可辅助实现目标文件的快速上传和快速下载。
实施例四:
相应于上面的方法实施例,本申请实施例还提供了一种文件存储装置,下文描述的文件存储装置与上文描述的文件存储方法可相互对应参照。
参见图5所示,该装置包括以下模块:
文件切片模块101,用于将目标文件进行切片,获得多个文件切片;
一级索引生成模块102,用于将根据目标文件和多个文件切片生成一级索引;
文件切片上传模块103,用于获取去中心化网络中的多个外网节点,将多个文件切片上传并存储到多个外网节点;
二级索引生成模块104,用于根据文件切片和对应文件切片存储的节点信息生成二级索引;
索引存储模块105,用于将一级索引和二级索引存储在去中心化网络中。
应用本申请实施例所提供的文件存储装置,将目标文件进行切片,获得多个文件切片;将根据目标文件和多个文件切片生成一级索引;获取去中心化网络中的多个外网节点,将多个文件切片上传并存储到多个外网节点;根据文件切片和对应文件切片存储的节点信息生成二级索引;将一级索引和二级索引存储在去中心化网络中。
在上传目标文件时,首先将目标文件进行切片,得到多个文件切片。然后,根据目标文件和多个文件切片生成一级索引。并在获取到去中心化中的多个外网节点之后,将多个文件切片上传并存储到多个外网节点中。根据文件切片和对应文件切片存储的节点信息生成二级索引。为了便于定位目标文件,最后将一级索引和二级索引存储在去中心化网络中。可见,该装置中从去中心化网络中获取外网节点,由于外网节点具有外网IP,因此可直接将文件切片上传到外网节点中,且外网节点通过扩散,可快速将文件切片在整个去中心化网络进行扩散。另外,由于文件切片相较于目标文件,其数据量小,上传成功率更高。在上传了文件切片到外网节点之后,将一级索引和二级索引进行存储,便于定位目标文件,即确定哪些外网节点中存储了目标文件的文件切片。即,在本装置中,将目标文件进行切片后进行上传,可提高目标文件的上传速度。
在本申请的一种具体实施方式中,一级索引生成模块102,具体用于分别对多个文件切片进行哈希计算,获得多个文件切片哈希;通过利用多个文件切片哈希构建默克尔树,获得目标文件哈希;将目标文件哈希作为第一key,将目标文件对应的所有文件切片哈希作为第一value;将第一key和第一value组成第一键值对,第一键值对作为一级索引。
在本申请的一种具体实施方式中,二级索引生成模块104,具体用于将文件切片哈希作为第二key,将存储有文件切片的外网节点的外网地址作为对应第二value;将第二key和第二value组成第二键值对,第二键值对作为二级索引。
在本申请的一种具体实施方式中,还包括:
索引更新模块,用于在存储了文件切片的外网节点有变化时,更新二级索引。
在本申请的一种具体实施方式中,文件切片上传模块103,具体用于获取M个外网节点,将N个文件切片分别上传至M个外网节点;M为大于1且小于等于N的自然数。
在本申请的一种具体实施方式中,文件切片模块101,利用文件大小与切片大小的对应关系,确定目标文件的切片大小;按照切片大小对目标文件进行切片,获得多个文件切片。
实施例五:
相应于上面的方法实施例,本申请实施例还提供了一种文件下载装置,该装置可应用于去中心化网络的节点,该装置可应用于去中心化网络的节点,下文描述的文件下载装置与上文描述的文件下载方法可相互对应参照。
参见图6所示,该装置包括以下模块:
检索模块201,用于获取待下载目标文件对应的一级索引,并基于一级索引获取目标文件的二级索引;
网络节点获取模块202,用于利用二级索引,查询存储有目标文件对应的多个文件切片的多个网络节点;
文件切片下载模块203,用于连接多个网络节点,并从多个网络节点中下载多个文件切片;
目标文件拼接模块204,用于利用一级索引拼接多个文件切片,获得目标文件。
其中,一级索引包括第一key和第一value,第一key为目标文件哈希,目标文件哈希为利用对目标文件切片后获得的多个文件切片哈希构建默克尔树后获得的,将多个文件切片哈希按照切片顺序排列后作为第一value。
其中,二级索引包括第二key和第二value,第二key为文件切片哈希,将存储了文件切片的所有网络节点对应的外网地址作为第二value。
其中,网络节点的数量大于或等于文件切片的数量。
应用本申请实施例所提供的文件下载装置,获取待下载目标文件对应的一级索引,并基于一级索引获取目标文件的二级索引;利用二级索引,查询存储有目标文件对应的多个文件切片的多个网络节点;连接多个网络节点,并从多个网络节点中下载多个文件切片;利用一级索引拼接多个文件切片,获得目标文件。
在下载目标文件时,首先基于目标文件对应的一级索引获得目标文件对应的二级索引,利用该二级索引,便可查询出目标文件对应的多个文件切片的网络节点。连接存储了目标文件对应的多个文件切片的网络节点,从中下载多个文件切片,基于一级索引可将多个文件切片进行拼接,最终获得目标文件。由于下载目标文件时,是从多个网络节点中分别下载文件切片,文件切片的大小比完整的目标文件更小,下载成功率更高,下载速度更快。与此同时,基于一级索引可拼接文件切片,也能够达到下载完整目标文件的效果。
实施例六:
相应于上面的方法实施例,本申请实施例还提供了一种文件处理装置,该装置可应用于去中心化网络的外网节点,该装置可应用于去中心化网络的外网节点,下文描述的文件处理装置与上文描述的文件处理方法可相互对应参照。
参见图7所示,该装置包括以下模块:
文件切片存储模块301,用于接收目标节点上传的文件切片,并存储文件切片;文件切片为目标文件的切片;
节点信息反馈模块302,用于向目标节点反馈自身的节点信息,以便目标节点生成目标文件的二级索引;
文件切片扩散模块303,用于向相邻节点扩散文件切片;
文件切片下载处理模块304,用于接收指定节点发送的下载请求,将文件切片发送给指定节点;下载请求为指定节点基于目标文件的一级索引而发送的。
应用本申请实施例所提供的装置,去中心化网络的外网节点接收目标节点上传的文件切片,并存储文件切片;文件切片为目标文件的切片;向目标节点反馈自身的节点信息,以便目标节点生成目标文件的二级索引;向相邻节点扩散文件切片;接收指定节点发送的下载请求,将文件切片发送给指定节点;下载请求为指定节点基于目标文件的一级索引而发送的。
去中心花网络的外网节点,在接收到文件切片之中,首先对文件切片进行存储,一方面向目标节点反馈自身的节点信息,以便生成目标文件的二级索引,便于定位目标文件;另一方面,向相邻节点扩散该文件切片,以进行多点存储以及多点下载。在外网节点接收到文件切片的下载请求之后,可将文件切片发送给指定节点。可见,该外网节点可辅助实现目标文件的快速上传和快速下载。
实施例七:
相应于上面的方法实施例,本申请实施例还提供了一种文件管理设备,下文描述的一种文件管理设备与上文描述的一种文件存储方法,文件下载方法,文件处理方法可相互对应参照。
参见图8所示,该文件管理设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的文件存储方法,或文件下载方法的步骤,或实现上述文件处理方法的步骤。
在本实施例中,文件管理设备可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑或便携计算机。
参见图9,图9为本申请实施例公开的另一种文件管理设备示意图。该文件管理设备可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是文件管理设备的内部存储单元,例如该文件管理设备的硬盘。存储器11在另一些实施例中也可以是文件管理设备的外部存储设备,例如文件管理设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括文件管理设备的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于文件管理设备的应用软件及各类数据,例如文件存储/下载程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行文件存储/下载程序等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,文件管理设备还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
可选地,该设备还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在该设备中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-13的文件管理设备,本领域技术人员可以理解的是,图5示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
实施例六:
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种文件存储方法或文件下载方法或文件处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的文件存储方法或文件下载方法或文件处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。