CN111291000B - 基于区块链的文件获取方法、设备及存储介质 - Google Patents

基于区块链的文件获取方法、设备及存储介质 Download PDF

Info

Publication number
CN111291000B
CN111291000B CN202010047750.XA CN202010047750A CN111291000B CN 111291000 B CN111291000 B CN 111291000B CN 202010047750 A CN202010047750 A CN 202010047750A CN 111291000 B CN111291000 B CN 111291000B
Authority
CN
China
Prior art keywords
storage node
file
storage
ledger
node
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.)
Active
Application number
CN202010047750.XA
Other languages
English (en)
Other versions
CN111291000A (zh
Inventor
杨辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Beijing University of Posts and Telecommunications
Original Assignee
Tencent Technology Shenzhen Co Ltd
Beijing University of Posts and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd, Beijing University of Posts and Telecommunications filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010047750.XA priority Critical patent/CN111291000B/zh
Publication of CN111291000A publication Critical patent/CN111291000A/zh
Application granted granted Critical
Publication of CN111291000B publication Critical patent/CN111291000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了基于区块链的文件获取方法、设备及存储介质,属于网络领域。所述方法包括:接收第一存储节点发送的需求片段的哈希值;根据所述需求文件片段的哈希值,通过总账本查询到存储有所述需求文件片段的至少两个第二存储节点的设备标识,所述总账本包括所述分布式文件存储系统中的每个存储节点存储的所述账本,以及所述账本对应的所述存储节点的设备标识;向所述第一存储节点发送所述至少两个第二存储节点的设备标识,所述至少两个第二存储节点用于供所述第一存储节点获取所述需求片段。本申请在实现防盗链的基础上,由于降低了合法用户下载和/或访问文件的失败率,提高了用户获取文件的流畅度。

Description

基于区块链的文件获取方法、设备及存储介质
本申请是申请号201810482561.8、申请日为2018年5月18日、发明名称为“文件获取方法、装置、设备及存储介质”的分案申请。
技术领域
本申请涉及网络技术领域,特别涉及一种基于区块链的文件获取方法、设备及存储介质。
背景技术
不良服务提供商通常会将其它服务提供商提供的文件(或服务)的统一资源定位符(Uniform Resource Locator,URL)存储到自己的数据库中,当用户访问不良服务提供商的网络平台时,访问和/或下载的文件的URL即为被盗链文件的URL。
相关技术中,为了防止在网络平台上发布的文件被盗链,服务提供商通常会不定期地修改文件名来防止文件被盗链,由于修改文件名会相应地改变被盗链文件的URL,因此会导致不良服务商存储的被盗链文件的URL失效,从而实现防盗链的目的。
不定期地修改文件名会使URL被修改,当合法用户在访问和/或下载文件的时候,该文件的URL被修改会导致合法用户的访问和/或下载行为失败。
发明内容
本申请实施例提供了一种基于区块链的文件获取方法、设备及存储介质,可以用于解决相关技术中采用不定期地修改文件名来防止文件被盗链,导致合法用户访问和/或下载文件失败的问题。所述技术方案如下:
一方面,本申请实施例提供了一种文件获取方法,所述方法应用于分布式文件存储系统的第一存储节点中,所述方法包括:
向所述分布式文件存储系统中的第二存储节点发送第一账本;所述分布式文件存储系统中的存储节点中存储有账本,所述账本包括所述存储节点对存储在所述分布式文件存储系统中的文件片段进行操作的操作记录,所述第一账本是所述第一存储节点中存储的所述账本;
接收所述第二存储节点发送的连接建立指令,所述连接建立指令是所述第二存储节点确定所述第一账本和第二账本匹配后发送的,所述第二账本是所述第二存储节点中存储的所述账本;
根据所述连接建立指令和所述第二存储节点建立连接,向所述第二存储节点发送需求文件片段的唯一识别信息;
接收所述第二存储节点发送的所述需求文件片段,并合并得到需求文件;所述需求文件片段是所述第二存储节点根据所述唯一识别信息在本地查询得到的。
一方面,本申请实施例提供了一种文件获取装置,所述装置应用于分布式文件存储系统的第一存储节点中,所述装置包括:
发送模块,用于向所述分布式文件存储系统中的第二存储节点发送第一账本;所述分布式文件存储系统中的存储节点中存储有账本,所述账本包括所述存储节点对存储在所述分布式文件存储系统中的文件片段进行操作的操作记录,所述第一账本是所述第一存储节点中存储的所述账本;
接收模块,用于接收所述第二存储节点发送的连接建立指令,所述连接建立指令是所述第二存储节点确定所述第一账本和第二账本匹配后发送的,所述第二账本是所述第二存储节点中存储的所述账本;
所述发送模块,还用于根据所述连接建立指令和所述第二存储节点建立连接,向所述第二存储节点发送需求文件片段的唯一识别信息;
所述接收模块,还用于接收所述第二存储节点发送的所述需求文件片段;所述需求文件片段是所述第二存储节点根据所述唯一识别信息在本地查询得到的;
处理模块,用于并合所述需求文件片段并得到需求文件。
一方面,本申请实施例提供了一种文件获取装置,所述装置应用于分布式文件存储系统中的第二存储节点中,所述装置包括:
接收模块,用于接收所述分布式文件存储系统中的第一存储节点发送的第一账本;所述分布式文件存储系统中的存储节点中存储有账本,所述账本包括所述存储节点对存储在所述分布式文件存储系统中的文件片段进行操作的操作记录,所述第一账本是所述第一存储节点中存储的所述账本;
发送模块,用于若所述第一账本和所述第二账本匹配,向所述第一存储节点发送连接建立指令,所述连接建立指令用于指示所述第一存储节点和所述第二存储节点建立连接,所述第二账本是所述第二存储节点中存储的所述账本;
处理模块,用于与所述第一存储节点建立连接;
所述接收模块,还用于接收所述第一存储节点发送的需求文件片段的唯一识别信息;
发送模块,还用于向所述第一存储节点发送需求文件片段;所述需求文件片段是根据所述唯一识别信息在本地查询得到的。
一方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上所述的文件获取方法。
一方面,本申请实施例提供了一种电子设备所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上所述的文件存储方法。
一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现如上所述的文件获取方法。
一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现如上所述的文件存储方法。
本申请实施例提供的技术方案带来的有益效果至少为:
通过当第二存储节点检测到第一存储节点的第一账本是和第二存储节点中的第二账本匹配时,向第一存储节点发送需求文件片段,由于第一账本中包含第一存储节点对分布式文件存储系统中存储的文件片段的操作记录,因此第二存储节点可根据判断第一账本是否和第二账本匹配从而判断第一节点是否是分布式文件存储系统中的合法用户,解决了相关技术中通过不定期修改文件名防盗链所可能导致的合法用户的访问和/或下载行为失败的问题,在实现防盗链的基础上,由于降低了合法用户下载和/或访问文件的失败率,提高了用户获取文件的流畅度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的文件获取方法的实施环境的示意图;
图2是本申请一个示例性实施例提供的文件获取方法的方法流程图;
图3是本申请一个示例性实施例提供的文件获取方法的一个具体实施例的架构图;
图4是本申请一个示例性实施例提供的文件获取方法的方法流程图;
图5是本申请一个示例性实施例提供的文件获取方法的方法流程图;
图6是本申请一个示例性实施例提供的文件获取方法的一个具体实施例的架构图;
图7是本申请一个示例性实施例提供的文件获取方法的方法流程图;
图8是本申请一个示例性实施例提供的文件存储方法的方法流程图;
图9是本申请一个示例性实施例提供的文件存储方法的一个具体实施例的架构图;
图10是本申请一个示例性实施例提供的文件存储和获取方法的一个具体实施例的架构图;
图11是本申请一个示例性实施例提供的文件获取装置的装置框图;
图12是本申请一个示例性实施例提供的文件获取装置的装置框图;
图13是本申请一个示例性实施例提供的电子设备的装置框图;
图14是本申请一个示例性实施例提供的电子设备的装置框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
分布式文件存储系统:是将一个文件分割成多个文件片段存储在至少两个电子设备中的存储系统;或,将一个文件的多个子文件存储在至少两个电子设备中;本申请在表述中将文件片段和子文件统称为文件片段。可选的,本申请中的分布式文件存储系统是星际文件系统。
存储节点:是分布式文件存储系统中存储文件片段的电子设备,每个存储节点中存储有账本。
索引节点:是分布式文件存储系统中存储有每个文件片段的操作记录的电子设备,每个索引节点存储有存储入分布式文件存储系统的文件的唯一识别信息以及总账本。其中,每个文件片段的操作记录是指分布式文件存储系统中每个存储节点对存储在分布式文件存储系统中的文件片段的操作记录,存储节点可通过索引节点查询到存储有需求文件片段的其它存储节点;可选的,分布式存储节点中的索引节点可以构成区块链平台,每个索引节点可以是区块链平台中的区块链节点。示例性的,本申请实施例中,以区块链平台为例,指代分布式文件存储系统的索引节点。
星际文件系统(Inter Planetary File System,IPFS):是一个面向全球的、点对点的分布式文件存储系统。
账本:是存储节点对存储在分布式文件存储系统中的文件片段进行操作的操作记录。可选地,账本包括发送清单、已获取清单、修改清单、删除清单、未完成清单中的至少一种。发送清单是存储节点向其他存储节点发送的文件片段的操作记录,其包括存储节点发送的文件片段的唯一识别信息、以及发送对象的设备标识;已获取清单是存储节点从其他存储节点获取的文件片段的操作记录,其包括存储节点已获取的文件片段唯一识别信息、发送该文件片段的存储节点的设备标识、以及对该文件片段进行修改、发送和/或接收过的存储节点的设备标识;修改清单是存储节点修改过的文件片段的唯一识别信息;删除清单是是存储节点曾获取过但又删除掉的文件片段的唯一识别信息;未完成清单是存储节点响应其他存储节点的获取请求,但未完成发送的文件片段的唯一识别信息。
例如,存储节点1向存储节点2发送了文件片段A,接收存储节点3发送的文件片段B,修改了文件片段C,删除了文件片段D,需要向存储节点4发送文件E,则存储节点1的账本1的发送清单中包含文件片段A的唯一识别信息和存储节点2的设备标识;账本1的已获取清单中包含文件片段B的唯一识别信息和存储节点3的设备标识;账本1的修改清单包含文件片段C的唯一识别信息和/或修改后的文件片段C的唯一识别信息;账本1的删除清单包含文件片段D的唯一识别信息;账本1的未完成清单中包含文件片段E的唯一识别信息。
设备标识:是存储节点和索引节点在分布式文件存储系统中的编号标识,分布式文件存储系统中的任一存储节点或索引节点可通过设备标识与该设备标识对应的电子设备建立连接。
唯一识别信息:是分布式文件存储系统中存储的文件片段所对应的唯一的编码信息,存储节点可根据文件片段生成该文件片段的唯一识别信息。其中,每个文件或文件片段的唯一识别信息是唯一的。可选的,在分布式文件存储系统中,唯一识别可以是文件以及文件片段的哈希值,以下的描述中以哈希值为例,指代文件以及文件片段的唯一识别信息。
区块链平台:是由分布式存储系统中的索引节点构成的网络平台,在区块链平台中,索引节点被称为区块链节点,每个区块链节点存储有存储入分布式文件存储系统的文件的哈希值以及总账本。区块链平台包括至少两个通信连接的索引节点构成,每个索引节点为区块链平台中的一个区块链节点,每个区块链节点存储有区块链平台的总账本。至少两个区块链节点之间通过有线或无线网络同步各自存储的总账本。区块链平台与分布式文件存储系统中至少一个存储节点通信连接,接收分布式文件存储系统中至少一个存储节点发送的账本。
总账本:是分布式文件存储系统中每个存储节点的账本,其包含存入分布式文件存储系统中的每个文件片段的操作记录、每个存储节点的设备标识以及该存储节点的账本的内容。
领导节点(Leader Node):是区块链平台中负责和存储节点通信的区块链节点。领导节点是从响应存储节点向区块链平台发送的存放请求的区块链节点中选举产生的。
请参考图1,其示出了本申请一个示例性实施例提供的文件获取方法的实施环境的示意图,如图1所示,该实施环境包括区块链平台100和分布式文件存储系统200。
如图所示,区块链平台100包括多个区块链节点110、111、112、113、114、115等等,每个区块链节点存储有区块链平台的总账本,多个区块链节点可通过有线或无线网络同步总账本。
例如,当区块链节点110中存储的总账本发生变更时,区块链节点110向区块链平台100中其它区块链节点广播变更后的总账本,其它区块链节点接收到该广播后,更新其存储的总账本。其中,总账本包括分布式文件存储系统200中的每个存储节点对分布式文件存储系统200中存储的文件的操作记录,区块链平台100通过和分布式文件存储系统200中的存储节点的通信连接获取存储节点发送的账本,从而得到每个存储节点对分布式文件存储系统200中存储的文件的操作记录。
分布式文件存储系统200包括多个存储节点210、211、212、213、214等等,用户可将需要存储的目标文件分割成至少两个目标文件片段存储在至少两个存储节点中。分布式文件存储系统200中的每个存储节存储有该存储节点自身的账本。
例如,存储节点210向存储节点211发送了文件片段X,则在存储节点210的账本中的发送清单中存储有文件片段X的哈希值及存储节点211的设备标识,表示已向存储节点211发送文件片段X;同时,存储节点211的账本中的已获取清单中存储有文件片段X的哈希值及存储节点210的设备标识,表示已从存储节点210获取文件片段X。存储节点对文件片段进行操作,例如发送文件片段,或对文件片段进行修改、删除、复制等,都会记录在账本中对账本进行更新,并将更新后的账本以广播的形式向区块链平台100发送,区块链平台100中至少一个区块链节点接收到更新后的账本后,对存储在该节点的总账本进行更新,并向其他区块链节点广播更新后的总账本,使得每个区块链节点上保存的总账本是同步且一致的。
请参考图2,其示出了本申请一个示例性实施例提供的文件获取方法的方法流程图。该方法可应用于如图1所示的实施环境中的分布式存储节点的第一存储节点中,该方法包括:
步骤201,向分布式文件存储系统中的第二存储节点发送第一账本。
第一存储节点向第二存储节点发送第一账本。通常来说,第一存储节点向至少两个第二存储节点发送第一账本,但是在特定的情况下,例如,在第一存储节点仅剩一个文件片段未能获取到,且已经获取到其它的文件片段时,向一个第二存储节点发送第一账本。
可选的,第一账本中包含第一存储节点对分布式文件存储系统中存储的文件片段的操作记录。例如,第一存储节点接收了第三存储节点发送的文件片段X,且第一存储节点对文件片段X做出了修改,则在第一账本中的已获取清单中存储有文件片段X的唯一识别信息,以及第三存储节点的设备标识;在第一账本的修改清单中存储有文件片段X的唯一识别信息和/或修改后的文件片段X的唯一识别信息。
需要说明的是,存储节点既可以是请求获取文件片段的存储节点,也可以是发送文件片段或存储文件片段的存储节点,本申请中仅为了表述上的区别,用第一存储节点指代请求获取文件片段的存储节点,用第二存储节点指代发送文件片段和存储文件片段的存储节点。
步骤202,接收第二存储节点发送的连接建立指令,该连接建立指令是第二存储节点确定第一账本和第二账本匹配后发送的。
第一存储节点接收第二存储节点发送的连接建立指令。
示例性的,第二存储节点在接收到第一账本后,检测第一账本是否和第二存储节点中存储的第二账本匹配,若第一账本和第二账本匹配,则向第一存储节点发送连接建立指令,该连接建立指令用于指示第一存储节点和第二存储节点建立连接。
第一账本和第二账本匹配是指第二账本中记录的第一存储节点的操作行为和第一账本中记录的第一存储节点的操作行为相同。
例如,若第一存储节点将文件片段Y发送至分布式文件存储系统中的第三存储节点后,第三存储节点中存储的第三账本的已获取清单中会记录文件片段Y的唯一识别信息以及第一存储节点的设备标识;若第三存储节点将文件片段Y发送至第二存储节点后,第二账本的已获取清单上会记录文件片段Y的唯一识别信息、第三存储节点的设备标识、以及第一存储节点的设备标识;因此,当第一账本的已发送清单上记录了文件片段Y的唯一识别信息和第三存储节点的设备标识,而第二账本的已获取清单上记录有文件片段Y的唯一识别信息、第三存储节点的设备标识以及第一存储节点的设备标识,说明第一账本中记录的第一存储节点对文件片段Y的操作(即发送文件片段Y至第三节点)和第二账本中记录的第一节点对文件片段Y的操作(即第二存储节点从第三存储节点接收文件片段Y,第三存储节点从第一存储节点接收文件片段Y)是匹配的,因此第一账本和第二账本匹配。
可选的,建立连接指令是第二存储节点确定第一账本和第二账本匹配,且第一存储节点的负债率不高于负债率阈值后发送的。负债率用于指示第一存储节点需要向分布式存储节点发送,但并未发送的文件片段在第一存储节点传输的文件片段中所占的比例。
示例性的,第二存储节点在确定第一账本和第二账本匹配后,根据第一账单中的已发送清单中的文件片段数目,以及未完成清单中的文件片段数据,计算第一存储节点的负债率。若该负债率高于负债率阈值,则确定第一存储节点为作恶节点,停止与第一存储节点的通信;若该负债率不高于负债率阈值,则向第一存储节点发送建立连接指令。其中,作恶节点是指负债率较高的存储节点。通常负债率较高的节点通常是存在系统故障的存储节点,作恶节点会向其他存储节点发送错误的账本,或,在响应了其他存储节点的传输请求后并没有发送其他存储节点请求的文件片段。
步骤203,根据连接建立指令和第二存储节点建立连接,向第二存储节点发送需求文件片段的唯一识别信息。
第一存储节点根据第二存储节点发送的建立连接指令,和第二存储节点建立连接后,向第二存储节点发送需求文件片段的唯一识别信息。可选的,该需求文件片段的唯一识别信息是需求文件片段的哈希值。
示例性的,当第一存储节点和第二存储节点建立连接后,若第一存储节点需求的为需求文件片段A、需求文件片段B以及需求文件片段C,则第一存储节点向第二存储节点发送需求文件片段A的唯一识别信息、需求文件片段B的唯一识别信息以及需求文件片段C的唯一识别信息。
步骤204,接收第二存储节点发送的需求文件片段,并合并得到需求文件。
第一存储节点接收第二存储节点发送的需求文件片段,将需求文件片段合并为需求文件。
示例性的,第二存储节点接收到需求文件片段A的唯一识别信息、需求文件片段B的唯一识别信息以及需求文件片段C的唯一识别信息后,根据获取的需求文件片段的唯一识别信息,通过第二账本中的已获取清单检测本地是否存储有需求文件片段A、需求文件片段B和/或需求文件片段C,若本地存储有需求文件片段A,则向第一存储节点发送需求文件片段A;若本地存储有需求文件片段A以及需求文件片段B,则向第一存储节点发送需求文件片段A以及需求文件片段B;若本地存储有需求文件片段A以及需求文件片段C,则向第一存储节点发送需求文件片段A以及需求文件片段C;若本地存储有需求文件片段B以及需求文件片段C,则向第一存储节点发送需求文件片段B以及需求文件片段C。第一存储节点接收到至少两个第二存储节点发送的需求文件片段A、需求文件片段B以及需求文件片段C,将需求文件片段A、需求文件片段B以及需求文件片段C合并为需求文件。
图3是本申请一个示例性实施例提供的文件获取方法的一个具体实施例的架构图。如图所示,分布式文件存储系统中的用户B在步骤1中首先初始化自身的账本;在步骤2中向存储节点发送公开信息和自身的账本,其中,公开信息用于向区块链平台广播用户B和存储节点将发生数据交换;在步骤3中,存储节点判断用户B的账本和自身的账本是否匹配;在步骤4中,存储节点判断用户B的账本和自身的账本匹配后,和用户B建立连接;在步骤5中,用户B向存储节点发送需求清单;在步骤6中,存储节点检测本地是否存储有需求清单中的内容;在步骤7中,存储节点计算用户B的负债率;在步骤8中,当存储节点中存储有需求清单中的内容且用户B的负债率不高,存储节点向用户B发送用户B需求的内容。
综上所述,本申请实施例中,通过当第二存储节点检测到第一存储节点的第一账本是和第二存储节点中的第二账本匹配时,向第一存储节点发送需求文件片段,由于第一账本中包含第一存储节点对分布式文件存储系统中存储的文件片段的操作记录,因此第二存储节点可根据判断第一账本是否和第二账本匹配从而判断第一节点是否是分布式文件存储系统中的合法用户,解决了相关技术中通过不定期修改文件名防盗链所可能导致的合法用户的访问和/或下载行为失败的问题,在实现防盗链的基础上,由于降低了合法用户下载和/或访问文件的失败率,提高了用户获取文件的流畅度。
可选地,本申请实施例中的第二存储节点通过第一账本计算第一存储节点的负债率,当负债率不高于负债率阈值时,向第一存储节点发送连接建立指令,避免了作恶节点占用分布式文件存储系统的资源,提高了分布式文件存储系统的工作效率。
由于每个文件存储在多个第二存储节点上,当第一存储节点需要获取需求文件时,第一存储节点可通过区块链平台查询到该需求文件对应的至少两个第二存储节点(也即存储有需求文件片段的第二存储节点),从而向至少两个存储节点发送第一账本建立连接。其中,区块链平台与分布式文件存储系统中至少一个存储节点通信连接,获取分布式文件存储系统中至少一个节点广播的账本。图3的实施例将对第一存储节点通过区块链平台确定需求文件对应的至少两个第二存储节点做阐述。
请参考图3,其示出了本申请一个示例性实施例提供的文件获取方法的方法流程图。该方法可应用于如图1所示的实施环境中的分布式存储节点的第一存储节点中,该方法可以是图1实施例步骤201之前的步骤,该方法包括:
步骤301,向区块链平台发送需求文件片段的哈希值。
第一存储节点向区块链平台广播需求文件片段的哈希值。其中,区块链平台与分布式文件存储系统中至少一个存储节点通信连接,获取分布式文件存储系统中至少一个节点广播的账本。
区块链平台存储有总账本,该总账本包括存入分布式文件存储系统中的每个文件的操作记录,其包括存储到分布式文件存储系统中的文件的哈希值、存储到分布式文件存储系统中的文件对应的文件片段的哈希值、分布式文件存储系统中每个存储节点中存储的账本、以及每个账本对应的存储节点的设备标识。
示例性的,分布式文件存储系统中的存储节点1将文件Z存储到分布式文件存储系统中时,会在区块链平台登记文件Z的哈希值,由于文件Z存入分布式文件存储系统需要分割为文件片段M和文件片段N,并将文件片段M存入存储节点2中,将文件片段M存入存储节点3中,则总账本中记录有文件Z的哈希值、文件Z的哈希值对应的存储节点1的设备标识、文件Z和文件片段M、文件片段N的对应关系、文件片段M和存储节点2的对应关系、以及文件片段N和存储节点3的对应关系。
示例性的,若第一存储节点需求的为需求文件X,则向区块链平台一个区块链节点发送需求文件X的名字,该区块链节点根据需求文件X的名字查询到对应的需求文件X的哈希值,以及需求文件X对应的需求文件片段A、需求文件片段B以及需求文件片段C的哈希值,向第一存储节点发送需求文件片段A、需求文件片段B以及需求文件片段C的哈希值,第一存储节点将需求文件片段A、需求文件片段B以及需求文件片段C的哈希值记录在需求文件清单中。
第一存储节点向区块链平台广播需求文件片段A的哈希值、需求文件片段B的哈希值以及需求文件C的哈希值,区块链平台中的一个区块链节点响应第一存储节点的广播吗,在总账本上查询到存储有需求文件片段A的第二存储节点4的设备标识、存储有需求文件片段B和需求片段C的第二存储节点5的设备标识。
步骤302,接收区块链平台发送的至少两个第二存储节点的设备标识。
第一存储节点接收区块链平台发送的至少两个第二存储节点的设备标识。
示例性的,若区块链平台查询到第二存储节点4存储有需求文件片段A,第二存储节点5存储有需求文件片段B和需求文件片段C,则向第一存储节点发送第二存储节点4和第二存储节点5的设备标识。
步骤303,根据至少两个第二存储节点的设备标识,向至少两个第二存储节点发送第一账本。
第一存储节点根据至少两个第二存储节点的设备标识,向至少两个第二存储节点发送第一账本。
示例性的,第一存储节点在接收到区块链平台发送的第二存储节点4和第二存储节点5的设备标识后,向第二存储节点4和第二存储节点5发送第一账本。
综上所述,本申请实施例中,第一存储节点通过向区块链平台发送需求文件片段的哈希值,区块链平台根据需求片段的哈希值在总账中查询存储有需求文件片段的至少两个第二存储节点,向第一存储节点发送至少两个第二存储节点的设备标识,从而使第一存储节点能够准确的和存储有需求文件片段的至少两个第二存储节点建立连接。
请参考图5,其示出了本申请一个示例性实施例提供的文件获取方法的方法流程图。该方法可应用于如图1所示的实施环境中的分布式存储节点的第一存储节点中,该方法可以是图1实施例步骤204之后的步骤,该方法包括:
步骤401,接收第二存储节点发送的需求文件片段的哈希值。
第二存储节点向第一存储节点发送需求文件片段的同时,发送该需求文件片段的哈希值。
步骤402,根据第二存储节点发送的需求文件片段的哈希值,检测第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段。
第一存储节点根据第二存储节点发送的需求文件片段的哈希值,通过第一账本中的需求清单,检测第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段。
步骤403,若确定第二存储节点发送的需求文件片段是第一存储节点需要获取的需求文件片段,则将需求文件片段的哈希值从需求清单中删除,并将需求文件片段的哈希值添加到已获取清单中,得到更新后的第一账本。
若第二存储节点发送的需求文件片段的哈希值和需求清单中存储的需求文件片段的哈希值匹配,则确定第二存储节点发送的需求文件片段是第一存储节点需要获取的需求文件片段,将需求文件片段的哈希值从需求清单中删除,并将需求文件片段的哈希值添加到已获取清单中,得到更新后的第一账本。
步骤404,向区块链平台发送更新后的第一账本,用于使区块链平台更新总账本。
第一存储节点向区块链平台广播更新后的第一账本,区块链平台中的一个区块链节点响应该广播后,根据更新后的第一账本更新本地存储的总账本,并向区块链平台中的其它区块链节点广播更新后的总账本以同步总账本。
图6是本申请一个示例性实施例提供的文件获取方法的一个具体实施例的架构图。如图所示,在步骤1中,分布式文件存储系统中的用户B校验从存储节点中接收到的内容的哈希值是否存在于需求清单中;在步骤2中,若校验通过,则向存储节点返回认证;在步骤3中,存储节点根据用户B返回的认证更新自身的账本;在步骤4中,存储节点向区块链平台广播更新后的自身账本,以更新区块链平台的总账本;在步骤5中,用户B把接收内容从需求清单中删除,增加到已获取清单中;在步骤6中,用户B更新自身的账本;在步骤7中,用户B向区块链平台广播更新后的自身账本,以更新区块链平台的总账本。
综上所述,本申请实施例中,第一存储节点通过第二存储节点发送的需求文件片段的哈希值验证第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段,提高了文件片段获取的准确度。
进一步的,本申请实施例中,通过第一存储节点向区块链平台广播更新后的第一账本,区块链平台根据更新后的第一账本更新总账本,提高了区块链平台中存储的总账本的时效性。
请参考图7,其示出了本申请一个示例性实施例提供的文件获取方法的方法流程图。该方法可应用于如图1所示的实施环境中的分布式存储节点的第一存储节点中,该方法包括:
步骤501,第一存储节点向区块链平台发送需求文件片段的哈希值。
第一存储节点向区块链平台广播需求文件片段的哈希值。其中,需求文件片段是第一存储节点所需要获取文件的文件片段。
步骤502,区块链平台根据需求文件片段的哈希值,通过总账本查询到存储有需求文件片段的至少两个第二存储节点的设备标识。
区块链平台中的一个区块链节点响应第一存储节点的广播,根据需求文件片段的哈希值,在总账本中查询到存储有需求文件片段的至少两个第二存储节点的设备标识。
步骤503,区块链平台向第一存储节点发送至少两个第二存储节点的设备标识。
区块链平台中的一个区块链节点向第一存储节点发送至少两个第二存储节点的标识。
步骤504,第一存储节点根据至少两个第二存储节点的设备标识,向该至少两个第二存储节点发送第一账本。
第一存储节点根据区块链平台发送的至少两个第二存储节点的设备标识,向该至少两个第二存储节点发送第一账本。
步骤505,第二存储节点在确定第一账本是和第二账本匹配后,根据第一账本计算第一存储节点的负债率。
第二存储节点在接收到第一账本后,检测第一账本是否和第二存储节点中存储的第二账本匹配,若第一账本和第二账本匹配,则根据第一账单中的已发送清单中的文件片段数目,以及未完成清单中的文件片段数据,计算第一存储节点的负债率。
其中,第一账本和第二账本匹配是指第二账本中记录的第一存储节点的操作行为和第一账本中记录的第一存储节点的操作行为相同。
步骤506,若第一账本和第二账本匹配,且第一存储节点的负债率不高于负债率阈值,则第二存储节点向第一存储节点发送连接建立指令。
确定第一账本和第二账本匹配,则确定第一存储节点是分布式文件存储系统中的合法用户,不是盗链用户,确定第一存储节点的负债率不高于负债率阈值,则确定第一存储节点不是作恶节点,则第二存储节点向第一存储节点发送连接建立指令。
可选的,第二存储节点根据第一存储节点的负债率在所有有效节点中排名,按照排名从后到前的顺序向第一存储节点发送连接建立指令。其中,有效节点是分布式文件存储系统中,向第二存储节点发送了账本且负债率不高于负债率阈值的节点。
第二存储节点可能响应了多个其它存储节点的发送请求,因此第二存储节点需要对发送文件片段的顺序进行排序。第二存储节点在计算了所有有效节点的负债率之后,得到第一存储节点的负债率在所有有效节点中排名,若有效节点为10个,第一存储节点的的负债率在所有有效节点中排名第3,则第二存储节点向第一存储节点发送文件片段的顺位是第7。
步骤507,第一存储节点根据连接建立指令和第二存储节点建立连接,向第二存储节点发送需求文件片段的哈希值。
第一存储节点根据第二存储节点发送的建立连接指令,和第二存储节点建立连接后,向第二存储节点发送需求文件片段的哈希值。
步骤508,第二存储节点根据第一存储节点发送的需求文件片段的哈希值,向第一存储节点发送需求文件片段以及需求文件片段的哈希值。
示例性的,第二存储节点接收到需求文件片段的哈希值后,通过第二账本中的已获取清单检测本地是否存储有需求文件片段,若本地存储有需求文件片段,则向第一存储节点发送该需求文件片段以及该需求文件片段的哈希值。
步骤509,第一存储节点接收第二存储节点发送的需求文件片段,并合并得到需求文件。
第一存储节点接收到至少两个第二存储节点发送的需求文件片段后,将需求文件片段合并为需求文件。
步骤510,第一存储节点根据第二存储节点发送的需求文件片段的哈希值,检测第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段。
第一存储节点根据第二存储节点发送的需求文件片段的哈希值,通过第一账本中的需求清单,检测第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段。
若需求文件片段是第一存储节点需要获取的需求文件片段,则进入步骤511;若需求文件片段不是第一存储节点需要获取的需求文件片段,则向区块链平台重新发送传送错误的需求文件片段的哈希值。
步骤511,第一存储节点确定第二存储节点发送的需求文件片段是第一存储节点需要获取的需求文件片段后,将需求文件片段的哈希值从需求清单中删除,并将需求文件片段的哈希值添加到已获取清单中,得到更新后的第一账本。
若第二存储节点发送的需求文件片段的哈希值和需求清单中存储的需求文件片段的哈希值匹配,则确定第二存储节点发送的需求文件片段是第一存储节点需要获取的需求文件片段,将需求文件片段的哈希值从需求清单中删除,并将需求文件片段的哈希值添加到已获取清单中,得到更新后的第一账本。
步骤512,第一存储节点向区块链平台发送更新后的第一账本,用于使区块链平台更新总账本。
第一存储节点向区块链平台广播更新后的第一账本,区块链平台中的多个区块链节点在查询区块链平台中的广播内容,其中的一个区块链节点响应第一存储节点的广播后,根据更新后的第一账本更新本地存储的总账本,并向区块链平台中的其它区块链节点广播更新后的总账本以同步总账本。
步骤513,第一存储节点向第二存储节点发送确认结果。
第一存储节点确定第二存储节点发送的需求文件片段是第一存储节点需要获取的需求文件片段后,向第二存储节点发送确认结果,该确认结果用于告知第二存储节点其发送的需求文件片段是第一存储节点需求的需求文件片段。
步骤514,第二存储节点将需求文件片段的哈希值添加到第二账本的发送清单中,得到更新后的第二账本。
第二存储节点接收到第一存储节点发送的确认结果后,将需求文件片段的哈希值添加到第二账本的发送清单中,得到更新后的第二账本。
步骤515,发送更新后的第二账本。
第二存储节点向区块链平台广播更新后的第二账本,区块链平台中的多个区块链节点在查询区块链平台中的广播内容,其中的一个区块链节点响应第二存储节点的广播后,根据更新后的第二账本更新本地存储的总账本,并向区块链平台中的其它区块链节点广播更新后的总账本以同步总账本。
综上所述,本申请实施例中,通过当第二存储节点检测到第一存储节点的第一账本是和第二存储节点中的第二账本匹配时,向第一存储节点发送需求文件片段,由于第一账本中包含第一存储节点对分布式文件存储系统中存储的文件片段的操作记录,因此第二存储节点可根据判断第一账本是否和第二账本匹配从而判断第一节点是否是分布式文件存储系统中的合法用户,解决了相关技术中通过不定期修改文件名防盗链所可能导致的合法用户的访问和/或下载行为失败的问题,在实现防盗链的基础上,由于降低了合法用户下载和/或访问文件的失败率,提高了用户获取文件的流畅度。
可选的,本申请实施例中的第二存储节点通过第一账本计算第一存储节点的负债率,当负债率不高于负债率阈值时,向第一存储节点发送连接建立指令,避免了作恶节点占用分布式文件存储系统的资源,提高了分布式文件存储系统的工作效率。
可选地,本申请实施例中的第一存储节点通过向区块链平台发送需求文件片段的哈希值,区块链平台根据需求片段的哈希值在总账中查询存储有需求文件片段的至少两个第二存储节点,向第一存储节点发送至少两个第二存储节点的设备标识,从而使第一存储节点能够准确的和存储有需求文件片段的至少两个第二存储节点建立连接。
可选地,本申请实施例中的第一存储节点通过第二存储节点发送的需求文件片段的哈希值验证第二存储节点发送的需求文件片段是否是第一存储节点需要获取的需求文件片段,避免了因为第二存储节点的系统故障导致第一存储节点接收到错误文件片段,提高了文件片段获取的准确度。
可选地,本申请实施例中,通过第一存储节点和第二存储节点向区块链平台广播更新后的第一账本和更新后的第二账本,区块链平台根据更新后的第一账本和更新后的第二账本更新总账本,提高了区块链平台中存储的总账本的时效性。
在第一存储节点从至少两个第二存储节点获取需求文件片段之前,至少两个第二存储节点中的一个第二存储节点可以将目标文件存储至分布式文件存储系统中。图8和图9的实施例将对第二存储节点将目标文件存入分布式文件存储系统的存储过程做阐述。
请参考图8,其示出了本申请一个示例性实施例提供的文件存储方法的方法流程图。该方法可应用于如图1所示的实施环境中的分布式存储节点的一个第二存储节点中,该方法可以是图2实施例中的步骤201之前的方法,该方法包括:
步骤601,第二存储节点向区块链平台发送存放请求。
第二存储节点向区块链平台广播存放请求,该存放请求用于向区块链平台告知第二存储节点请求在分布式文件存储系统中存储目标文件。
步骤602,区块链平台中的n个区块链节点根据存放请求启动一个随机时长的计时器,n为自然数,n≥2。
示例性的,n个区块链节点响应第二存储节点的存放请求,在经过第一时间段后,n个区块链节点进入激活状态,相互之间发送激活信令;在经过第二时间段后,处于激活状态的n个区块链节点在同一时刻启动一个随机时长的计时器。
步骤603,n个区块链节点中的第i个区块链节点在计时器超时后,向n个区块链节点中除去第i个区块链节点的其它n-1个区块链节点发送第i个计时完成信令,i为自然数,1≤i≤n。
第i个区块链节点在计时器超时后,向n个区块链节点中的其它n-1个区块链节点发送第i个计时完成信令。其中,第i个计时完成信令携带有第i个区块链节点的计时器超时的时刻和第i个区块链节点的设备标识。
步骤604,n个区块链节点中的第j个区块链节点在接收到计时完成信令时,若第j个区块链节点的计时器没有超时,则停止计时器,向n个区块链节点中除去第j个区块链节点的其它n-1个区块链节点发送已接收信令,j为自然数,1≤j≤n。
第j个区块链节点在接收到其它区块链节点发送的计时完成信令时,若第j个区块链节点的计时器没有超时,则停止计时器,向其它n-1个区块链节点发送已接收信令。其中,第j个已接收信令携带有第j个区块链节点的设备标识。
步骤605,n个区块链节点两两之间在接收到计时完成信令和已接收信令后,根据计时完成信令,将计时器超时时刻最早的区块链节点作为领导节点。
n个区块链节点中的任一区块链节点在接收到其它区块链节点发送的信令后,根据计时完成信令中携带的计时完成时刻和区块链节点的设备标识,将计时完成时刻最早的区块链节点选举为领导节点,该领导节点用于和第二存储节点进行通信和转发第二存储节点发送的信息。
步骤606,第二存储节点向领导节点发送目标文件的哈希值。
第二存储节点计算得到需要存储的目标文件的哈希值,向领导节点发送该目标文件片段的哈希值。
步骤607,领导节点向区块链平台中的其它区块链节点发送目标文件的哈希值。
领导节点接收到目标文件的哈希值后,向其它(n-1)个区块链节点发送目标文件的哈希值。
步骤608,领导节点和其它区块链节点分别检测目标文件的哈希值是否存在于区块链平台中,得到节点核验结果。
领导节点和其它区块链节点分别检测目标文件的哈希值是否存在总账本中,得到节点核验结果。若领导节点或其它区块链节点确定总账本中不包含目标文件片段的哈希值,则节点核验结果为通过。目标文件片段的哈希值不存在于总账本上,说明分布式文件存储系统上任一存储节点均没有存储目标文件片段,从而确定目标文件是第二存储节点原创的,而不是剽窃的内容。
区块链平台的总账本中记录了存储到分布式文件存储系统中的文件的哈希值,领导节点和其它区块链节点通过查询自身的总账本中是否存在目标文件的哈希值判断是否有其它存储节点将目标文件存储到分布式文件存储系统中,从而判断目标文件的原创性。
步骤609,领导节点确定节点核验结果中包含(n/2+1)个节点核验结果为通过时,则确定核验结果为通过,向第二存储节点发送用于表示通过的核验结果。
领导节点统计领导节点和其它区块链节点的节点核验结果,若确定节点核验结果中包含(n/2+1)个节点核验结果为通过,则确定核验结果为通过,向第二存储节点发送用于表示通过的核验结果;若确定节点核验结果中不包含(n/2+1)个节点核验结果为通过,则确定核验结果为不通过,向第二存储节点发送用于表示不通过的核验结果,该不通过的核验结果用于禁止第二存储节点在分布式文件存储系统中存储目标文件片段。
步骤610,第二存储节点根据通过的核验结果在分布式文件存储系统存储目标文件片段。
第二存储节点根据用于表示通过的核验结果,在分布式文件存储系统存储目标文件片段。
图9是本申请一个示例性实施例提供的文件存储方法的一个具体实施例的架构图。如图所示,在步骤1中,用户A生产内容并计算内容的哈希值;在步骤2中,用户A向区块链平台广播存放请求,至少一个区块链节点组成的验证组响应其广播;在步骤3中,验证组选举产生领导节点;在步骤4中,领导节点回复用户A的存放请求;在步骤5中,用户A向领导节点发送核验请求,该请求携带有需要存放的内容的哈希值;在步骤7和步骤8中,验证组中的各个区块链节点核验区块链总账本中是否保存有需要存放的内容的哈希值;在步骤8中,验证组两两之间发送各自的验证结果,开始形成共识;在步骤9中,领导节点统计核验结果;在步骤10中,领导节点向用户A发送核验结果。
图10是本申请一个示例性实施例提供的文件存储和获取方法的一个具体实施例的架构图。如图所示,该架构分为两部分,一个部分是用户A将产生的内容存储到IPFS系统中,另一个部分是用户B从IPFS系统中获取用户A存储的内容,具体实现方式可参考图3、图6以及图9中的实施方式,在此不做赘述。
综上所述,本申请实施例中,通过第二存储节点向领导节点发送目标文件的哈希值,领导节点和其它区块链节点检测目标文件的哈希值是否存在于区块链平台上得到核验结果,若目标文件的哈希值不存在于区块链平台上,则说明目标文件是第二存储节点原创的而不是剽窃,进而允许第二存储节点在分布式文件存储系统上存储目标文件,降低了分布式文件存储系统上存储的文件的侵权风险。
请参考图11,其示出了本申请一个示例性的实施例提供的文件获取装置的结构框图,如图所示,该装置可应用于如图1所示的实施环境中的存储节点的一个第一存储节点中,该装置包括发送模块810、接收模块820以及处理模块830:
发送模块810,用于执行实现上述图2、图3、图5或图7实施例中的步骤201、步骤203、步骤301、步骤303、步骤404、步骤501、步骤504、步骤507、步骤512、步骤513等发送步骤,以及其它隐含的发送步骤。
接收模块820,用于执行实现上述图2、图3、图5或图7实施例中的步骤202、步骤204、步骤302、步骤401、步骤503、步骤506、步骤508,以及其它隐含的接收步骤。
处理模块830,用于执行实现上述图5或图7实施例中的步骤402、步骤403、步骤509、步骤510、步骤511,以及其它隐含的处理步骤。
请参考图12,其示出了本申请一个示例性的实施例提供的文件获取装置的结构框图,如图所示,该装置可应用于如图1所示的实施环境中的存储节点的一个第二存储节点中,该装置包括发送模块910、接收模块920以及处理模块930:
发送模块910,用于执行实现上述图7实施例中的步骤506、步骤508、步骤515等发送步骤,以及其它隐含的发送步骤。
接收模块920,用于执行实现上述图7实施例中的步骤504、步骤507、步骤513,以及其它隐含的接收步骤。
处理模块930,用于执行实现上述图7实施例中的步骤505,以及其它隐含的处理步骤。
请参见图13,其示出了本申请一个示例性的实施例提供的电子设备的结构框图。该设备包括:处理器1010、存储器1020以及通信接口1030。
处理器1010可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP)或者CPU和NP的组合。处理器1010还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integratedcircuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。
存储器1020通过总线或其它方式与处理器1010相连,存储器1020中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集由处理器1010加载并执行以实现上述实施例中的文件获取方法。存储器1020可以为易失性存储器(英文:volatile memory),非易失性存储器(英文:non-volatile memory)或者它们的组合。易失性存储器可以为随机存取存储器(英文:random-access memory,RAM),例如静态随机存取存储器(英文:static random access memory,SRAM),动态随机存取存储器(英文:dynamic random access memory,DRAM)。非易失性存储器可以为只读存储器(英文:read only memory image,ROM),例如可编程只读存储器(英文:programmable read onlymemory,PROM),可擦除可编程只读存储器(英文:erasable programmable read onlymemory,EPROM),电可擦除可编程只读存储器(英文:electrically erasableprogrammable read-only memory,EEPROM)。非易失性存储器也可以为快闪存储器(英文:flash memory),磁存储器,例如磁带(英文:magnetic tape),软盘(英文:floppy disk),硬盘。非易失性存储器也可以为光盘。
通信接口1030通过总线或其它方式与存储器1020和处理器1010相连,电子设备可通过通信接口1030向其它存储节点或区块链节点发送信息,或,通过通信接口1030接收其它存储节点或区块链节点发送的信息。
本申请还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的文件获取方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的文件获取方法。
请参见图14,其示出了本申请一个示例性的实施例提供的电子设备的结构框图。该设备包括:处理器1110、存储器1120以及通信接口1130。
处理器1110可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP)或者CPU和NP的组合。处理器1110还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integratedcircuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。
存储器1120通过总线或其它方式与处理器1110相连,存储器1120中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集由处理器1110加载并执行以实现上述实施例中的文件存储方法。存储器1120可以为易失性存储器(英文:volatile memory),非易失性存储器(英文:non-volatile memory)或者它们的组合。易失性存储器可以为随机存取存储器(英文:random-access memory,RAM),例如静态随机存取存储器(英文:static random access memory,SRAM),动态随机存取存储器(英文:dynamic random access memory,DRAM)。非易失性存储器可以为只读存储器(英文:read only memory image,ROM),例如可编程只读存储器(英文:programmable read onlymemory,PROM),可擦除可编程只读存储器(英文:erasable programmable read onlymemory,EPROM),电可擦除可编程只读存储器(英文:electrically erasableprogrammable read-only memory,EEPROM)。非易失性存储器也可以为快闪存储器(英文:flash memory),磁存储器,例如磁带(英文:magnetic tape),软盘(英文:floppy disk),硬盘。非易失性存储器也可以为光盘。
通信接口1130通过总线或其它方式与存储器1120和处理器1110相连,电子设备可通过通信接口1130向其它存储节点或区块链节点发送信息,或,通过通信接口1130接收其它存储节点或区块链节点发送的信息。
本申请还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的文件存储方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的文件存储方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。

Claims (11)

1.一种基于区块链的文件获取方法,其特征在于,所述方法应用于区块链平台中,所述区块链平台与分布式文件存储系统中的至少一个存储节点通信连接,所述方法包括:
接收第一存储节点发送的需求文件片段的哈希值;
根据所述需求文件片段的哈希值,通过总账本查询到存储有所述需求文件片段的至少两个第二存储节点的设备标识,所述总账本包括所述分布式文件存储系统中的每个存储节点存储的账本,以及所述账本对应的所述存储节点的设备标识;
向所述第一存储节点发送所述至少两个第二存储节点的设备标识;
其中,所述至少两个第二存储节点的设备标识用于供所述第一存储节点获取所述需求文件片段,所述需求文件片段是所述第一存储节点接收所述第二存储节点发送的所述需求文件片段得到的;所述第一存储节点通过和所述第二存储节点之间建立的连接向所述第二存储节点发送所述需求文件片段的唯一识别信息,所述第一存储节点和所述第二存储节点之间建立的连接是基于所述第二存储节点发送的连接建立指令建立的,所述连接建立指令是所述第二存储节点确定第一账本和第二账本匹配后发送的,所述第二账本是所述第二存储节点中存储的所述账本;所述第一账本是所述第一存储节点向至少两个第二存储节点发送的,所述第一账本是所述第一存储节点中存储的所述账本。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第一存储节点发送的更新后的第一账本,所述更新后的第一账本是所述第一存储节点在获取到所述需求文件片段后,将所述需求文件片段的哈希值从需求清单中删除,并将所述需求文件片段的哈希值添加到已获取清单中后得到的;
根据所述更新后的第一账本更新所述总账本,得到更新后的总账本。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第二存储节点发送的更新后的第二账本,所述更新后的第二账本是所述第二存储节点将所述需求文件片段发送给所述第一存储节点后,将所述需求文件片段的哈希值添加到第二账本的发送清单中得到的;
根据所述更新后的第二账本更新所述总账本,得到更新后的总账本。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
向其他区块链节点广播更新后的总账本,使得每个所述区块链节点上保存的所述总账本是同步且一致的。
5.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
接收所述第二存储节点登记的文件的哈希值,所述需求文件片段是所述文件的文件片段;
记录所述第二存储节点的设备标识、所述文件和所述需求文件片段之间的对应关系。
6.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述电子设备是区块链平台中的区块链节点,所述区块链平台与分布式文件存储系统中的至少一个存储节点通信连接所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如下步骤:
接收第一存储节点发送的需求文件片段的哈希值;
根据所述需求文件片段的哈希值,通过总账本查询到存储有所述需求文件片段的至少两个第二存储节点的设备标识,所述总账本包括所述分布式文件存储系统中的每个存储节点存储的账本,以及所述账本对应的所述存储节点的设备标识;
向所述第一存储节点发送所述至少两个第二存储节点的设备标识;
其中,所述至少两个第二存储节点的设备标识用于供所述第一存储节点获取所述需求文件片段,所述需求文件片段是所述第一存储节点接收所述第二存储节点发送的所述需求文件片段得到的;所述第一存储节点通过和所述第二存储节点之间建立的连接向所述第二存储节点发送所述需求文件片段的唯一识别信息,所述第一存储节点和所述第二存储节点之间建立的连接是基于所述第二存储节点发送的连接建立指令建立的,所述连接建立指令是所述第二存储节点确定第一账本和第二账本匹配后发送的,所述第二账本是所述第二存储节点中存储的所述账本;所述第一账本是所述第一存储节点向至少两个第二存储节点发送的,所述第一账本是所述第一存储节点中存储的所述账本。
7.根据权利要求6所述的电子设备,其特征在于,所述至少一条指令还由所述处理器加载并执行以实现如下步骤:
接收所述第一存储节点发送的更新后的第一账本,所述更新后的第一账本是所述第一存储节点在获取到所述需求文件片段后,将所述需求文件片段的哈希值从需求清单中删除,并将所述需求文件片段的哈希值添加到已获取清单中后得到的;
根据所述更新后的第一账本更新所述总账本,得到更新后的总账本。
8.根据权利要求6所述的电子设备,其特征在于,所述至少一条指令还由所述处理器加载并执行以实现如下步骤:
接收所述第二存储节点发送的更新后的第二账本,所述更新后的第二账本是所述第二存储节点将所述需求文件片段发送给所述第一存储节点后,将所述需求文件片段的哈希值添加到第二账本的发送清单中得到的;
根据所述更新后的第二账本更新所述总账本,得到更新后的总账本。
9.根据权利要求7或8所述的电子设备,其特征在于,所述至少一条指令还由所述处理器加载并执行以实现如下步骤:
向其他区块链节点广播更新后的总账本,使得每个所述区块链节点上保存的所述总账本是同步且一致的。
10.根据权利要求6至8任一所述的电子设备,其特征在于,所述至少一条指令还由所述处理器加载并执行以实现如下步骤:
接收所述第二存储节点登记的文件的哈希值,所述需求文件片段是所述文件的文件片段;
记录所述第二存储节点的设备标识、所述文件和所述需求文件片段之间的对应关系。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现权利要求1至5任一所述的基于区块链的文件获取方法。
CN202010047750.XA 2018-05-18 2018-05-18 基于区块链的文件获取方法、设备及存储介质 Active CN111291000B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010047750.XA CN111291000B (zh) 2018-05-18 2018-05-18 基于区块链的文件获取方法、设备及存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810482561.8A CN108710681B (zh) 2018-05-18 2018-05-18 文件获取方法、装置、设备及存储介质
CN202010047750.XA CN111291000B (zh) 2018-05-18 2018-05-18 基于区块链的文件获取方法、设备及存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201810482561.8A Division CN108710681B (zh) 2018-05-18 2018-05-18 文件获取方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111291000A CN111291000A (zh) 2020-06-16
CN111291000B true CN111291000B (zh) 2023-11-03

Family

ID=63869123

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810482561.8A Active CN108710681B (zh) 2018-05-18 2018-05-18 文件获取方法、装置、设备及存储介质
CN202010047750.XA Active CN111291000B (zh) 2018-05-18 2018-05-18 基于区块链的文件获取方法、设备及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810482561.8A Active CN108710681B (zh) 2018-05-18 2018-05-18 文件获取方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (2) CN108710681B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109831527B (zh) * 2019-03-13 2021-12-28 试金石信用服务有限公司 文件处理方法、用户端、服务器及可读存储介质
CN111767427B (zh) * 2019-04-02 2024-04-05 浙江宇视科技有限公司 视频信息存储方法及数据存储域
US20200394321A1 (en) * 2019-06-11 2020-12-17 International Business Machines Corporation Document redaction and reconciliation
CN111563083B (zh) * 2020-04-30 2023-04-28 中国银行股份有限公司 报表数据查询方法、装置及系统
CN112054990B (zh) * 2020-07-21 2022-09-16 杜晓楠 区块链系统中预防哈希洪水攻击的方法、计算机可读介质和区块链系统
CN112100171B (zh) * 2020-08-12 2021-06-25 北京大学 一种对随机共识的图式账本建立内容索引的方法和装置
CN112311798A (zh) * 2020-11-02 2021-02-02 大连理工大学 一种基于对等超媒体分发协议的数据块交换方法
CN112749144B (zh) * 2021-01-15 2023-06-30 云南云电同方科技有限公司 一种基于区块链的持久化文件存储系统及方法
EP4191976A1 (en) * 2021-12-06 2023-06-07 Wyplay Methods and devices for content distribution

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599994A (zh) * 2009-06-01 2009-12-09 中兴通讯股份有限公司 分布式文件系统、接入节点及节点间传输文件数据的方法
CN104731516A (zh) * 2013-12-18 2015-06-24 腾讯科技(深圳)有限公司 一种存取文件的方法、装置及分布式存储系统
CN106815530A (zh) * 2016-12-26 2017-06-09 北京爱接力科技发展有限公司 数据存证方法、数据校验方法及装置
CN107147704A (zh) * 2017-04-21 2017-09-08 杭州趣链科技有限公司 一种面向区块链的通用服务中间件系统
CN107147735A (zh) * 2017-05-12 2017-09-08 北京博晨技术有限公司 一种基于分层结构的分布式账本系统
CN107172090A (zh) * 2017-07-03 2017-09-15 郑州云海信息技术有限公司 一种文件的获取方法及获取装置
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107239940A (zh) * 2017-05-11 2017-10-10 北京博晨技术有限公司 基于区块链系统的网络交易方法及装置
CN107273410A (zh) * 2017-05-03 2017-10-20 上海点融信息科技有限责任公司 基于区块链的分布式存储
CN107819891A (zh) * 2017-10-16 2018-03-20 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN107819789A (zh) * 2017-12-07 2018-03-20 北京泛融科技有限公司 一种基于区块链的内容反劫持系统及方法
CN107944868A (zh) * 2017-12-07 2018-04-20 杭州趣链科技有限公司 一种基于区块链智能合约的电子存证系统和管理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990248B1 (en) * 2006-12-13 2015-03-24 Cisco Technology, Inc. Peer-to-peer network image distribution hierarchy
CN102752326B (zh) * 2011-04-19 2016-05-25 腾讯科技(深圳)有限公司 在下载文件时处理数据的方法、服务器和系统
US9881176B2 (en) * 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
CN105068757B (zh) * 2015-07-23 2017-12-22 浙江大学 一种基于文件语义和系统实时状态的冗余数据去重方法
CN106911751A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 文件获取方法、装置与系统
US10491378B2 (en) * 2016-11-16 2019-11-26 StreamSpace, LLC Decentralized nodal network for providing security of files in distributed filesystems

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599994A (zh) * 2009-06-01 2009-12-09 中兴通讯股份有限公司 分布式文件系统、接入节点及节点间传输文件数据的方法
CN104731516A (zh) * 2013-12-18 2015-06-24 腾讯科技(深圳)有限公司 一种存取文件的方法、装置及分布式存储系统
CN106815530A (zh) * 2016-12-26 2017-06-09 北京爱接力科技发展有限公司 数据存证方法、数据校验方法及装置
CN107147704A (zh) * 2017-04-21 2017-09-08 杭州趣链科技有限公司 一种面向区块链的通用服务中间件系统
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107273410A (zh) * 2017-05-03 2017-10-20 上海点融信息科技有限责任公司 基于区块链的分布式存储
CN107239940A (zh) * 2017-05-11 2017-10-10 北京博晨技术有限公司 基于区块链系统的网络交易方法及装置
CN107147735A (zh) * 2017-05-12 2017-09-08 北京博晨技术有限公司 一种基于分层结构的分布式账本系统
CN107172090A (zh) * 2017-07-03 2017-09-15 郑州云海信息技术有限公司 一种文件的获取方法及获取装置
CN107819891A (zh) * 2017-10-16 2018-03-20 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN107819789A (zh) * 2017-12-07 2018-03-20 北京泛融科技有限公司 一种基于区块链的内容反劫持系统及方法
CN107944868A (zh) * 2017-12-07 2018-04-20 杭州趣链科技有限公司 一种基于区块链智能合约的电子存证系统和管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
An improved P2P file system scheme based on IPFS and Blockchain;Yongle Chen 等;《2017 IEEE International Conference on Big Data (Big Data)》;2652-2657 *
基于HDFS的分布式存储系统的研究与实现;李鸣;《中国优秀硕士学位论文全文数据库 信息科技辑》(第05期);I137-63 *

Also Published As

Publication number Publication date
CN108710681A (zh) 2018-10-26
CN111291000A (zh) 2020-06-16
CN108710681B (zh) 2022-02-22

Similar Documents

Publication Publication Date Title
CN111291000B (zh) 基于区块链的文件获取方法、设备及存储介质
JP7222036B2 (ja) モデルトレーニングシステムおよび方法および記憶媒体
CN101217571B (zh) 用于多副本数据网格系统中的写/读文件操作的方法
CN102752326B (zh) 在下载文件时处理数据的方法、服务器和系统
CN111242620A (zh) 区块链交易系统的数据缓存及查询方法、终端及存储介质
CN102307210A (zh) 一种数据下载系统及其数据管理和下载方法
CN111447069B (zh) 一种基于区块链的低频访问数据处理方法
CN110597918A (zh) 一种账户管理方法、装置及计算机可读存储介质
CN112069169A (zh) 区块数据存储方法、装置、电子设备及可读存储介质
CN113821478A (zh) 一种基于区块链的大文件存储方法及系统
CN110597820B (zh) 基于区块链的信息处理方法、装置、存储介质和设备
CN110162274B (zh) 一种基于区块链的数据处理方法、装置及设备
CN111353177A (zh) 一种基于区块链的隐私大文件存储系统
CN111026711A (zh) 基于区块链数据存储方法、装置、计算机设备及存储介质
CN116070294B (zh) 一种权限管理方法、系统、装置、服务器及存储介质
CN112258184B (zh) 冻结区块链网络的方法、装置、电子设备及可读存储介质
CN113824738A (zh) 一种区块链中节点通讯管理方法及系统
CN113094754A (zh) 大数据平台数据修改系统及修改、响应、缓存、校验方法
CN108268207B (zh) 一种基于云存储的元数据管理方法及装置
US9830207B2 (en) Message communication system and operation method thereof
CN114513501B (zh) 目标分发方法和系统
CN113691614B (zh) 资讯处理方法和装置
CN101854267B (zh) 内容分发中的统计方法、内容分发的设备及系统
CN116546006A (zh) 文件分片续传方法、装置、设备、介质及产品
CN116962403A (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
GR01 Patent grant
GR01 Patent grant