CN113259449A - 分布式存储方法、装置、设备及存储介质 - Google Patents
分布式存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113259449A CN113259449A CN202110584483.4A CN202110584483A CN113259449A CN 113259449 A CN113259449 A CN 113259449A CN 202110584483 A CN202110584483 A CN 202110584483A CN 113259449 A CN113259449 A CN 113259449A
- Authority
- CN
- China
- Prior art keywords
- file
- uploaded
- storage node
- block chain
- access path
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于区块链技术领域,公开了一种分布式存储方法、装置、设备及存储介质。本发明通过在检测到文件上传请求时,对文件上传请求进行解析,以获得待上传文件及请求网络地址;根据请求网络地址在区块链中查找对应的文件存储节点组;在文件存储节点组中选取对应的目标文件存储节点;在待上传文件满足预设上传条件时,将待上传文件发送至目标存储节点进行存储;将接收到的文件访问路径在所述区块链中进行广播,以使区块链中的区块链节点保存文件访问路径。由于在获取到文件访问路径之后将文件访问路径广播至区块链中的其他区块链节点进行保存,即使某一区块链节点宕机,依旧可以从其他区块链节点获取文件访问路径,上传的文件依旧可以正常访问。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种分布式存储方法、装置、设备及存储介质。
背景技术
目前,随着计算机行业的快速发展,文件存储也是广泛应用,但是,目前,文件存储一般都是采用控制中心的方式进行存储,即存在一个总的文件控制中心,搭配文件存储服务器进行文件存储,而此种存储方式存在巨大缺陷,在用户群体较大时,控制中心极容易宕机,且控制中心一旦宕机,则会造成整体文件存储服务器无法访问,用户体验差。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种分布式存储方法、装置、设备及存储介质,旨在解决现有技术控制中心宕机后所有上传的文件均无法正常访问的技术问题。
为实现上述目的,本发明提供了一种分布式存储方法,所述方法包括以下步骤:
在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址;
根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组;
在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点;
在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径;
将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
可选的,所述在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点的步骤之后,还包括:
在所述待上传文件不满足预设上传条件时,将所述待上传文件存储在本地缓存中,生成临时文件访问路径;
将所述临时文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述临时文件访问路径;
根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件;
将文件上传事件添加至预设事件库。
可选的,所述将文件上传事件添加至预设事件库的步骤之后,还包括:
实时监测系统运行环境,在所述系统运行环境满足所述预设事件库中任一预设事件执行条件时,获取满足的预设事件执行条件对应的文件上传事件;
对所述文件上传事件进行解析,以确定事件待上传文件、事件文件存储节点及事件临时文件访问路径;
将所述事件待上传文件发送至所述事件文件存储节点进行保存,并获取所述事件文件存储节点反馈的事件文件访问路径;
将所述事件临时文件访问路径及所述事件文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点进行路径更新操作。
可选的,所述在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径的步骤之前,还包括:
在当前时刻处于预设上传时间段内时,获取所述待上传文件的文件大小;
若所述文件大小大于预设阈值,则获取当前的网络信号强度及网络流量;
在所述网络信号强度大于预设强度阈值且所述网络流量小于预设流量阈值时,判定所述待上传文件满足预设上传条件。
可选的,所述根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组的步骤,包括:
获取区块链中的预设存储节点信息表,根据所述请求网络地址确定请求发起区域;
根据所述请求发起区域在预设存储节点信息表中查找对应的文件存储节点,以获得文件存储节点组。
可选的,所述在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点的步骤,包括:
获取所述待上传文件的文件类型;
根据所述文件类型对所述文件存储节点组进行过滤,以获得文件存储节点子集;
通过预设索引算法对所述待上传文件进行索引计算,以获得节点索引;
根据所述节点索引在所述文件存储节点子集中选取目标文件存储节点。
可选的,所述将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径的步骤,包括:
在接收到所述目标存储节点反馈的文件访问路径时,验证根据所述文件访问路径是否可访问到对应的上传文件;
若根据所述文件访问路径可访问到对应的上传文件,则获取所述上传文件的文件内容;
在所述文件内容与所述待上传文件的文件内容一致时,通过节点私钥对所述文件访问路径进行签名,以获得签名信息;
将所述签名信息及所述文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点对所述签名信息进行验证,并在验证通过时保存所述文件访问路径。
此外,为实现上述目的,本发明还提出一种分布式存储装置,所述分布式存储装置包括以下模块:
信息获取模块,用于在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址;
节点查找模块,用于根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组;
节点选择模块,用于在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点;
文件存储模块,用于在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径;
路径广播模块,用于将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
此外,为实现上述目的,本发明还提出一种分布式存储设备,所述分布式存储设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的分布式存储程序,所述分布式存储程序被所述处理器执行时实现如上所述的分布式存储方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式存储程序,所述分布式存储程序执行时实现如上所述的分布式存储方法的步骤。
本发明通过在检测到文件上传请求时,对文件上传请求进行解析,以获得待上传文件及请求网络地址;根据请求网络地址在区块链中查找对应的文件存储节点组;在文件存储节点组中选取对应的目标文件存储节点;在待上传文件满足预设上传条件时,将待上传文件发送至目标存储节点进行存储;将接收到的文件访问路径在所述区块链中进行广播,以使区块链中的区块链节点保存文件访问路径。由于在选择目标文件存储节点时是根据请求网络地址在区块链中查找对应的文件存储节点,以获得文件存储节点组,并在获得文件存储节点组之后再在文件存储节点组中选取目标文件存储节点,在存在新加入文件存储节点时,在下一次进行文件存储时也可以被快速利用上,十分便于进行文件存储节点扩容,且在获取到文件访问路径之后将文件访问路径广播至区块链中的其他区块链节点进行保存,即使某一区块链节点宕机,依旧可以从其他区块链节点获取文件访问路径,上传的文件依旧可以正常访问。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
图2为本发明分布式存储方法第一实施例的流程示意图;
图3为本发明分布式存储方法第二实施例的流程示意图;
图4为本发明分布式存储装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的分布式存储设备结构示意图。
如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及分布式存储程序。
在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在分布式存储设备中,所述电子设备通过处理器1001调用存储器1005中存储的分布式存储程序,并执行本发明实施例提供的分布式存储方法。
本发明实施例提供了一种分布式存储方法,参照图2,图2为本发明一种分布式存储方法第一实施例的流程示意图。
本实施例中,所述分布式存储方法包括以下步骤:
步骤S10:在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址。
需要说明的是,本实施例的执行主体可以是所述分布式存储设备,所述分布式存储设备可以是个人电脑、服务器等电子设备,还可以为其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以分布式存储设备为例对本发明分布式存储方法进行说明。
需要说明的是,所述分布式存储设备可以是区块链中的区块链节点,其上可以运行有区块链特有的应用程序。文件上传请求可以是由其他设备发送至分布式存储设备的请求,文件上传请求内可以包括待上传文件及请求网络地址,待上传文件可以是等待上传的文件,请求网络地址可以是发起文件上传请求的设备的网络地址(IP地址)。
步骤S20:根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组。
需要说明的是,区块链中可以包含多个区块链节点,而各区块链节点根据实际需要可以设定是否存储文件,其中,具备文件存储功能的区块链节点为文件存储节点,各个文件存储节点均有对应的网络地址。文件存储节点组中可以包含多个文件存储节点。
可以理解的是,每个文件存储节点均有对应的网络地址,根据网络地址可以对文件存储节点进行区域划分。根据请求网络地址在区块链中进行查找,以获得文件存储节点组可以是根据请求网络地址确定对应的区域,获取对应的区域中的文件存储节点,以获得文件存储节点组。
进一步地,为了可以快速获取文件存储节点组,本实施例步骤S20,可以包括:
获取区块链中的预设存储节点信息表,根据所述请求网络地址确定请求发起区域;根据所述请求发起区域在预设存储节点信息表中查找对应的文件存储节点,以获得文件存储节点组。
需要说明的是,预设存储节点信息表可以是预先设置的数据库表,其中,预设存储节点信息表中可以包含各个文件存储节点的节点信息,节点信息可以包括节点标识、网络地址、节点所属区域等信息。
可以理解的是,若每次查找均需要获取各个文件存储节点的网络地址,再根据网络地址进行区域划分确定各个文件存储节点的节点所属区域,会浪费大量的计算性能,因此,可以预先在文件存储节点加入区块链时为文件存储节点分配节点标识,获取文件存储节点的网络地址,根据网络地址划分文件存储节点的节点所属区域,并将节点标识、网络地址及节点所属区域存储至预设存储节点信息表,之后在需要查找文件存储节点组时即可根据预设存储节点信息表进行查找,可以提高查找效率,减少不必要的性能开销。
需要说明的是,根据请求网络地址确定请求发起区域,根据请求发起区域在预设存储节点信息表中查找对应的文件存储节点,以获得文件存储节点组可以是对请求网络地址进行区域划分,获得请求发起区域,将请求发起区域与预设存储节点信息表中各个文件存储节点对应的节点所属区域进行匹配,根据匹配结果确定请求发起区域对应的各个文件存储节点,以获得文件存储节点组。
步骤S30:在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点。
可以理解的是,在经过查找获取到文件存储节点组之后,还需要在文件存储节点组包含的多个文件存储节点中选择一个文件存储节点作为待上传文件对应的目标文件存储节点,以便于进行文件存储。在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点可以是获取请求网络地址与文件存储节点组中各个文件存储节点的网络地址之间的相对距离,将与请求网络地址的相对距离最小的文件存储节点作为待上传文件对应的目标文件存储节点。在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点还可以是对待上传文件进行索引计算,获得索引下标,根据索引下标在文件存储节点组中选取待上传文件对应的目标文件存储节点,其中,对待上传文件进行索引计算,获得索引下标可以是计算待上传文件的哈希值,根据预设数值对哈希值取余,以获得索引下标,预设数值可以是文件存储节点组中的文件存储节点的数量,也可以是自行设置的整数值。
进一步地,为了合理进行文件存储,便于进行文件管理,本实施例步骤S30,可以包括:
获取所述待上传文件的文件类型;根据所述文件类型对所述文件存储节点组进行过滤,以获得文件存储节点子集;通过预设索引算法对所述待上传文件进行索引计算,以获得节点索引;根据所述节点索引在所述文件存储节点子集中选取目标文件存储节点。
需要说明的是,文件类型可以包括视频类型、图片类型、文档类型等类型。若文件存储节点中存储有多个类型的文件,因文件类型的差异,文件的管理会极为不便,因此,为了便于进行文件管理,一个文件存储节点中可以仅存储单一文件类型的文件,文件存储节点中在仅存储单一文件类型的文件时,因文件类型一致,文件存储节点在操作文件时可以采用相同的处理方式,不必有多种不同的文件处理方式,便于进行文件管理。
可以理解的是,若各个文件存储节点仅存储单一文件类型的文件,则可以获取待上传文件的文件类型,根据文件类型将文件存储节点组中的文件存储节点进行筛选,将文件类型不符的文件存储节点清除,以获得文件存储节点子集。通过预设索引算法对所述待上传文件进行索引计算,以获得节点索引可以是通过预设索引算法计算待上传文件的哈希值,并对哈希值以取余数值进行取余,以获得索引下标,其中,取余数值可以是文件存储节点子集中的文件存储节点的数量。根据所述节点索引在所述文件存储节点子集中选取目标文件存储节点可以是根据节点索引获取文件存储节点子集中集合下标与节点索引一致的文件存储节点作为目标文件存储节点。
步骤S40:在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径。
可以理解的是,在选取了待上传文件的文件存储节点时,可以判断待上传文件是否满足预设上传条件,在待上传文件满足预设上传条件时,可以将待上传文件发送至目标存储节点进行存储,并且令目标存储节点在存储成功时反馈文件访问路径。其中,预设上传条件可以是预先设置的条件。
在实际使用中,将待上传文件发送至目标存储节点时可以进行计时并设置一预设时间,在计时达到预设时间时还未接收到目标存储节点反馈的文件访问路径,则可以判定文件存储失败,此时,可以不再接收目标文件存储节点反馈的文件访问路径,并重新选取目标存储节点或重新发送待上传文件进行存储。
进一步地,为了合理利用空闲网络,提高用户体验,本实施例步骤S40之前,还可以包括:
在当前时刻处于预设上传时间段内时,获取所述待上传文件的文件大小;若所述文件大小大于预设阈值,则获取当前的网络信号强度及网络流量;在所述网络信号强度大于预设强度阈值且所述网络流量小于预设流量阈值时,判定所述待上传文件满足预设上传条件。
需要说明的是,预设上传时间段可以是预先设置的允许进行文件上传的时间段,预设上传时间段可以是用户主动进行设置的时间段,也可以是根据用户的历史使用记录统计用户的使用习惯进行设置的时间段。预设阈值可以是预先设置用来区分大小文件的阈值,预设阈值可以是根据分布式存储设备的网络带宽进行设置的值,网络带宽越大则预设阈值越大。预设强度阈值及预设流量阈值可以根据实际需要预先进行设置。
可以理解的是,在进行文件上传操作时,文件上传会占用大量的网络带宽,可能会导致其他的应用卡顿或网络堵塞,因此,为了提高用户体验,文件上传可以在网络空闲时进行上传。在当前时刻处于预设上传时间段内,则说明当前时刻允许进行文件上传操作,则可以判断待上传文件的文件大小是否大于预设阈值,若文件大小小于预设阈值,则说明文件较小,直接上传并不会占用大量网络宽带,不会出现卡顿等现象,若文件大小大于预设阈值,则说明文件较大,若直接进行上传时用户正在使用其他应用,则可能导致其他应用卡顿,若用户正在使用网络宽带,则可能导致网络堵塞,因此,在确定文件大小大于预设阈值时,还需要获取当前的网络信号强度及网络流量,若网络信号强度大于预设强度阈值,则说明当前网络信号强,宽带利用率高,可以快速上传,若网络流量小于预设流量阈值,则说明用户当前并未使用网络宽带,则此时可以进行文件上传,因此,可以判定所述待上传文件满足预设上传条件。
可以理解的是,在用户并未使用网络宽带,或对网络宽带使用率较低时进行文件上传,即利用空闲宽带进行文件上传,可以尽可能减少对用户的影响,可以提高用户的使用体验。
步骤S50:将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
需要说明的是,若接收到文件访问路径,则说明文件存储已经成功,此时需要将文件访问路径同步至区块链中的所有区块链节点,因此,可以将接收到的文件访问路径在区块链中进行广播,区块链中的各个区块链节点在接收到广播的文件访问路径时,可以确定区块链中有区块链节点进行了文件上传,因此,可以保存文件访问路径,以便于后续根据区块链中的任一区块链节点均可根据文件访问路径查找到上传的文件。
进一步地,为了保证文件上传成功,并提高安全性,本实施例步骤S50,可以包括:
在接收到所述目标存储节点反馈的文件访问路径时,验证根据所述文件访问路径是否可访问到对应的上传文件;若根据所述文件访问路径可访问到对应的上传文件,则获取所述上传文件的文件内容;在所述文件内容与所述待上传文件的文件内容一致时,通过节点私钥对所述文件访问路径进行签名,以获得签名信息;将所述签名信息及所述文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点对所述签名信息进行验证,并在验证通过时保存所述文件访问路径。
需要说明的是,节点私钥可以是分布式存储设备在作为区块链节点加入区块链时分配的密钥。验证根据文件访问路径是否可访问到对应的上传文件可以是向文件访问路径发送请求,确定是否可以访问到对应的上传文件。若上传文件的文件内容与待上传文件的文件内容一致,则说明文件上传已经成功,因此,可以通过节点私钥对文件访问路径进行签名,获得签名信息,将签名信息将文件访问路径在区块链中进行广播,由于区块链中的各个区块链节点中可以保存有其他区块链节点的节点私钥对应的节点公钥,因此,区块链节点在接收到签名信息及文件访问路径时可以进行验证,确定签名信息是否为区块链中的区块链节点发送的,在验证通过时,则可以保存文件访问路径。
本实施例通过在检测到文件上传请求时,对文件上传请求进行解析,以获得待上传文件及请求网络地址;根据请求网络地址在区块链中查找对应的文件存储节点组;在文件存储节点组中选取对应的目标文件存储节点;在待上传文件满足预设上传条件时,将待上传文件发送至目标存储节点进行存储;将接收到的文件访问路径在所述区块链中进行广播,以使区块链中的区块链节点保存文件访问路径。由于在选择目标文件存储节点时是根据请求网络地址在区块链中查找对应的文件存储节点,以获得文件存储节点组,并在获得文件存储节点组之后再在文件存储节点组中选取目标文件存储节点,在存在新加入文件存储节点时,在下一次进行文件存储时也可以被快速利用上,十分便于进行文件存储节点扩容,且在获取到文件访问路径之后将文件访问路径广播至区块链中的其他区块链节点进行保存,即使某一区块链节点宕机,依旧可以从其他区块链节点获取文件访问路径,上传的文件依旧可以正常访问。
参考图3,图3为本发明一种分布式存储方法第二实施例的流程示意图。
基于上述第一实施例,本实施例分布式存储方法在所述步骤S30之后,还包括:
步骤S40':在所述待上传文件不满足预设上传条件时,将所述待上传文件存储在本地缓存中,生成临时文件访问路径。
需要说明的是,若待上传文件不满足预设上传条件,则说明可能是当前时刻并不处于允许进行文件上传的预设上传时间段内,或此时上传待上文件会出现应用卡顿或网络堵塞,因此,可以将待上传文件在本地缓存中进行暂时存储,并生成一个临时文件访问路径。通过临时文件访问路径可以访问到本地缓存中的待上传文件。
步骤S50':将所述临时文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述临时文件访问路径。
可以理解的是,在生成临时文件访问路径之后,可以将临时文件访问路径在区块链中进行广播,区块链中的区块链节点在接收到临时文件访问路径之后,可以确定发生了临时文件存储事件,可以保存临时文件访问路径。
可以理解的是,在将临时文件访问路径进行广播之前,也可以通过节点私钥对临时文件访问路径进行签名,并将签名得到的签名信息与临时文件访问路径一同进行广播,以便于区块链中的区块链节点进行验证并在验证通过后保存临时文件访问路径。
步骤S60':根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件。
可以理解的是,在生成临时文件访问路径之后可以根据临时文件访问路径、待上传文件及目标文件存储节点生成文件上传事件,以便于后续可进行文件上传之后,执行文件上传事件,将待上传文件发送至目标文件存储节点进行保存。缓存存储文件因存在文件丢失的可能性,因此,可以在确定可进行文件上传之后,执行文件上传事件,将文件发送至文件存储节点进行保存,可以避免文件丢失。
步骤S70':将文件上传事件添加至预设事件库。
需要说明的是,预设事件库可以是预先设置的,预设事件库中可以存储有多个待执行的文件上传事件。将文件上传事件添加至预设事件库可以是为文件上传事件设置一预设事件执行条件,再将文件上传事件添加至预设事件库,例如:为文件上传事件A设置预设事件执行条件为检测到系统时刻处于预设文件上传事件段且网络空闲(网络信号强度高于一定强度且网络流量低于一定值),再将文件上传事件A添加至预设事件库中。预设事件库中的各个文件上传事件会在满足预设事件执行条件时被执行。
进一步地,为了对添加至预设事件库中的文件上传事件进行处理,本实施例步骤S70'之后,还可以包括:
实时监测系统运行环境,在所述系统运行环境满足所述预设事件库中任一预设事件执行条件时,获取满足的预设事件执行条件对应的文件上传事件;对所述文件上传事件进行解析,以确定事件待上传文件、事件文件存储节点及事件临时文件访问路径;将所述事件待上传文件发送至所述事件文件存储节点进行保存,并获取所述事件文件存储节点反馈的事件文件访问路径;将所述事件临时文件访问路径及所述事件文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点进行路径更新操作。
需要说明的是,系统运行环境可以是分布式存储设备的运行环境,可以包括系统时间、网络信号强度及网络流量。在监测到系统运行环境满足预设事件库中任一预设事件执行条件时,可以获取满足的预设事件执行条件对应的文件上传事件。对文件上传事件解析可以获得文件上传事件中记录的事件待上传文件、事件文件存储节点及事件临时文件访问路径,其中,事件待上传文件可以是生成文件上传事件时使用的待上传文件,事件文件存储节点可以是生成文件上传事件时使用的目标文件存储节点,事件临时文件访问路径可以是生成文件上传事件时使用的临时文件访问路径。
需要说明的是,在将事件待上传文件发送至事件文件存储节点进行保存之后,可以获取事件文件存储节点在存储成功时反馈的事件文件访问路径,将事件临时文件访问路径及事件文件访问路径在区块链中进行广播,以使区块链中接收到的广播信息的区块链节点进行路径更新操作,其中,区块链节点进行路径更新操作可以是先查找到事件临时文件访问路径进行清除,再将事件文件访问路径进行保存。
可以理解的是,在将事件临时文件访问路径及事件文件访问路径在区块链中进行广播之前还可以通过节点私钥对事件临时文件访问路径及事件文件访问路径进行签名,并将签名获得的签名信息、事件临时访问路径及事件文件访问路径一通进行广播,以使区块链中接收到广播信息的区块链节点对签名信息进行验证,并在验证通过时进行路径更新操作。
本实施例通过在所述待上传文件不满足预设上传条件时,将所述待上传文件存储在本地缓存中,生成临时文件访问路径;根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件;根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件;将文件上传事件添加至预设事件库。由于在待上传文件不满足预设上传条件时,将待上传文件存储在本地缓存中并提供对应的临时文件访问路径,可以避免应用卡顿或网络堵塞的现象,提高用户使用体验,而之后生成文件上传事件,并在检测到文件上传事件的预设事件执行条件时执行文件上传事件,将事件待上传文件上传至对应的事件文件存储节点,并将事件临时文件存储路径更新为事件文件存储节点反馈的事件文件存储路径,可以保证文件存储的可靠性。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有分布式存储程序,所述分布式存储程序被处理器执行时实现如上文所述的分布式存储方法的步骤。
参照图4,图4为本发明分布式存储装置第一实施例的结构框图。
如图4所示,本发明实施例提出的分布式存储装置包括:
信息获取模块401,用于在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址;
节点查找模块402,用于根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组;
节点选择模块403,用于在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点;
文件存储模块404,用于在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径;
路径广播模块405,用于将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
本实施例通过在检测到文件上传请求时,对文件上传请求进行解析,以获得待上传文件及请求网络地址;根据请求网络地址在区块链中查找对应的文件存储节点组;在文件存储节点组中选取对应的目标文件存储节点;在待上传文件满足预设上传条件时,将待上传文件发送至目标存储节点进行存储;将接收到的文件访问路径在所述区块链中进行广播,以使区块链中的区块链节点保存文件访问路径。由于在选择目标文件存储节点时是根据请求网络地址在区块链中查找对应的文件存储节点,以获得文件存储节点组,并在获得文件存储节点组之后再在文件存储节点组中选取目标文件存储节点,在存在新加入文件存储节点时,在下一次进行文件存储时也可以被快速利用上,十分便于进行文件存储节点扩容,且在获取到文件访问路径之后将文件访问路径广播至区块链中的其他区块链节点进行保存,即使某一区块链节点宕机,依旧可以从其他区块链节点获取文件访问路径,上传的文件依旧可以正常访问。
进一步地,所述文件存储模块404,还用于在所述待上传文件不满足预设上传条件时,将所述待上传文件存储在本地缓存中,生成临时文件访问路径;将所述临时文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述临时文件访问路径;根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件;将文件上传事件添加至预设事件库。
进一步地,所述文件存储模块404,还用于实时监测系统运行环境,在所述系统运行环境满足所述预设事件库中任一预设事件执行条件时,获取满足的预设事件执行条件对应的文件上传事件;对所述文件上传事件进行解析,以确定事件待上传文件、事件文件存储节点及事件临时文件访问路径;将所述事件待上传文件发送至所述事件文件存储节点进行保存,并获取所述事件文件存储节点反馈的事件文件访问路径;将所述事件临时文件访问路径及所述事件文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点进行路径更新操作。
进一步地,所述文件存储模块404,还用于在当前时刻处于预设上传时间段内时,获取所述待上传文件的文件大小;若所述文件大小大于预设阈值,则获取当前的网络信号强度及网络流量;在所述网络信号强度大于预设强度阈值且所述网络流量小于预设流量阈值时,判定所述待上传文件满足预设上传条件。
进一步地,所述节点查找模块402,还用于获取区块链中的预设存储节点信息表,根据所述请求网络地址确定请求发起区域;根据所述请求发起区域在预设存储节点信息表中查找对应的文件存储节点,以获得文件存储节点组。
进一步地,所述节点选择模块403,还用于获取所述待上传文件的文件类型;根据所述文件类型对所述文件存储节点组进行过滤,以获得文件存储节点子集;通过预设索引算法对所述待上传文件进行索引计算,以获得节点索引;根据所述节点索引在所述文件存储节点子集中选取目标文件存储节点。
进一步地,所述路径广播模块405,还用于在接收到所述目标存储节点反馈的文件访问路径时,验证根据所述文件访问路径是否可访问到对应的上传文件;若根据所述文件访问路径可访问到对应的上传文件,则获取所述上传文件的文件内容;在所述文件内容与所述待上传文件的文件内容一致时,通过节点私钥对所述文件访问路径进行签名,以获得签名信息;将所述签名信息及所述文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点对所述签名信息进行验证,并在验证通过时保存所述文件访问路径。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的分布式存储方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种分布式存储方法,其特征在于,所述分布式存储方法包括以下步骤:
在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址;
根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组;
在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点;
在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径;
将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
2.如权利要求1所述的分布式存储方法,其特征在于,所述在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点的步骤之后,还包括:
在所述待上传文件不满足预设上传条件时,将所述待上传文件存储在本地缓存中,生成临时文件访问路径;
将所述临时文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述临时文件访问路径;
根据所述临时文件访问路径、所述待上传文件及所述目标文件存储节点生成文件上传事件;
将文件上传事件添加至预设事件库。
3.如权利要求2所述的分布式存储方法,其特征在于,所述将文件上传事件添加至预设事件库的步骤之后,还包括:
实时监测系统运行环境,在所述系统运行环境满足所述预设事件库中任一预设事件执行条件时,获取满足的预设事件执行条件对应的文件上传事件;
对所述文件上传事件进行解析,以确定事件待上传文件、事件文件存储节点及事件临时文件访问路径;
将所述事件待上传文件发送至所述事件文件存储节点进行保存,并获取所述事件文件存储节点反馈的事件文件访问路径;
将所述事件临时文件访问路径及所述事件文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点进行路径更新操作。
4.如权利要求1所述的分布式存储方法,其特征在于,所述在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径的步骤之前,还包括:
在当前时刻处于预设上传时间段内时,获取所述待上传文件的文件大小;
若所述文件大小大于预设阈值,则获取当前的网络信号强度及网络流量;
在所述网络信号强度大于预设强度阈值且所述网络流量小于预设流量阈值时,判定所述待上传文件满足预设上传条件。
5.如权利要求1所述的分布式存储方法,其特征在于,所述根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组的步骤,包括:
获取区块链中的预设存储节点信息表,根据所述请求网络地址确定请求发起区域;
根据所述请求发起区域在预设存储节点信息表中查找对应的文件存储节点,以获得文件存储节点组。
6.如权利要求1所述的分布式存储方法,其特征在于,所述在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点的步骤,包括:
获取所述待上传文件的文件类型;
根据所述文件类型对所述文件存储节点组进行过滤,以获得文件存储节点子集;
通过预设索引算法对所述待上传文件进行索引计算,以获得节点索引;
根据所述节点索引在所述文件存储节点子集中选取目标文件存储节点。
7.如权利要求1-6任一项所述的分布式存储方法,其特征在于,所述将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径的步骤,包括:
在接收到所述目标存储节点反馈的文件访问路径时,验证根据所述文件访问路径是否可访问到对应的上传文件;
若根据所述文件访问路径可访问到对应的上传文件,则获取所述上传文件的文件内容;
在所述文件内容与所述待上传文件的文件内容一致时,通过节点私钥对所述文件访问路径进行签名,以获得签名信息;
将所述签名信息及所述文件访问路径在所述区块链中进行广播,以使所述区块链中接收到广播信息的区块链节点对所述签名信息进行验证,并在验证通过时保存所述文件访问路径。
8.一种分布式存储装置,其特征在于,所述分布式存储装置包括以下模块:
信息获取模块,用于在检测到文件上传请求时,对所述文件上传请求进行解析,以获得待上传文件及请求网络地址;
节点查找模块,用于根据所述请求网络地址在区块链中进行查找,以获得文件存储节点组;
节点选择模块,用于在所述文件存储节点组中选取所述待上传文件对应的目标文件存储节点;
文件存储模块,用于在所述待上传文件满足预设上传条件时,将所述待上传文件发送至所述目标存储节点进行存储,以使所述目标存储节点在存储成功时反馈文件访问路径;
路径广播模块,用于将接收到的所述文件访问路径在所述区块链中进行广播,以使所述区块链中的区块链节点保存所述文件访问路径。
9.一种分布式存储设备,其特征在于,所述分布式存储设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的分布式存储程序,所述分布式存储程序被所述处理器执行时实现如权利要求1-7中任一项所述的分布式存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式存储程序,所述分布式存储程序执行时实现如权利要求1-7中任一项所述的分布式存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584483.4A CN113259449A (zh) | 2021-05-27 | 2021-05-27 | 分布式存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584483.4A CN113259449A (zh) | 2021-05-27 | 2021-05-27 | 分布式存储方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113259449A true CN113259449A (zh) | 2021-08-13 |
Family
ID=77184813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110584483.4A Withdrawn CN113259449A (zh) | 2021-05-27 | 2021-05-27 | 分布式存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113259449A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115623080A (zh) * | 2022-11-30 | 2023-01-17 | 四川汉唐云分布式存储技术有限公司 | 基于区块链的分布式存储方法、装置及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107249046A (zh) * | 2017-08-15 | 2017-10-13 | 李俊庄 | 一种基于区块链的分布式云存储系统构建方法 |
CN108595126A (zh) * | 2018-04-27 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 数据存储系统、查询方法、查询装置、服务器及存储介质 |
CN109413207A (zh) * | 2018-12-11 | 2019-03-01 | 深圳市网心科技有限公司 | 一种文件上传方法、系统、装置及计算机可读存储介质 |
CN109871715A (zh) * | 2019-03-12 | 2019-06-11 | 深圳市网心科技有限公司 | 分布式存储文件的访问方法、装置及存储介质 |
CN110298194A (zh) * | 2019-06-11 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于区块链的文件处理方法、装置、设备及存储介质 |
CN111159100A (zh) * | 2019-11-21 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 区块链文件存取方法、装置、计算机设备及存储介质 |
CN112612769A (zh) * | 2020-12-16 | 2021-04-06 | 深圳前海微众银行股份有限公司 | 文件处理方法、装置及存储介质 |
CN112650721A (zh) * | 2020-12-29 | 2021-04-13 | 杭州趣链科技有限公司 | 一种文件存储方法、装置、系统以及设备 |
-
2021
- 2021-05-27 CN CN202110584483.4A patent/CN113259449A/zh not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107249046A (zh) * | 2017-08-15 | 2017-10-13 | 李俊庄 | 一种基于区块链的分布式云存储系统构建方法 |
CN108595126A (zh) * | 2018-04-27 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 数据存储系统、查询方法、查询装置、服务器及存储介质 |
CN109413207A (zh) * | 2018-12-11 | 2019-03-01 | 深圳市网心科技有限公司 | 一种文件上传方法、系统、装置及计算机可读存储介质 |
CN109871715A (zh) * | 2019-03-12 | 2019-06-11 | 深圳市网心科技有限公司 | 分布式存储文件的访问方法、装置及存储介质 |
CN110298194A (zh) * | 2019-06-11 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于区块链的文件处理方法、装置、设备及存储介质 |
CN111159100A (zh) * | 2019-11-21 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 区块链文件存取方法、装置、计算机设备及存储介质 |
CN112612769A (zh) * | 2020-12-16 | 2021-04-06 | 深圳前海微众银行股份有限公司 | 文件处理方法、装置及存储介质 |
CN112650721A (zh) * | 2020-12-29 | 2021-04-13 | 杭州趣链科技有限公司 | 一种文件存储方法、装置、系统以及设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115623080A (zh) * | 2022-11-30 | 2023-01-17 | 四川汉唐云分布式存储技术有限公司 | 基于区块链的分布式存储方法、装置及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
CN106657383B (zh) | 数据下载方法及相关设备 | |
CN110737658A (zh) | 数据分片存储方法、装置、终端及可读存储介质 | |
CN109815261B (zh) | 全局搜索功能实现及数据实时同步方法、装置及电子设备 | |
CN112422484B (zh) | 确定用于处理安全事件的剧本的方法、装置及存储介质 | |
CN106709341B (zh) | 一种针对文件包的病毒处理方法及装置 | |
CN108256353A (zh) | 一种数据完整性校验方法、装置及客户端 | |
CN112434039A (zh) | 数据的存储方法、装置、存储介质以及电子装置 | |
CN111338608B (zh) | 分布式应用开发方法、装置、节点设备及可读存储介质 | |
CN108063685B (zh) | 日志分析方法及装置 | |
CN112188247A (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN111984527A (zh) | 软件的性能测试方法、装置、设备和介质 | |
CN113259449A (zh) | 分布式存储方法、装置、设备及存储介质 | |
CN104503983A (zh) | 为搜索引擎提供网站认证数据的方法及装置 | |
CN112016027A (zh) | 监控访问数据运营平台的方法和装置 | |
CN112527543A (zh) | 客户端启动异常处理方法、装置、电子设备和存储介质 | |
CN111026669A (zh) | 测试日志管理方法、测试日志管理装置及存储介质 | |
CN114979109B (zh) | 行为轨迹检测方法、装置、计算机设备和存储介质 | |
CN110597820A (zh) | 基于区块链的信息处理方法、装置、存储介质和设备 | |
CN112131263B (zh) | 软件包获取方法、系统、装置、电子设备和存储介质 | |
CN114040378A (zh) | 应用的编排方法、装置、计算机设备和存储介质 | |
CN110798356B (zh) | 固件监控方法、装置、存储介质和计算机设备 | |
KR101582420B1 (ko) | 실행 모듈의 무결성 체크 방법 및 장치 | |
CN113434561A (zh) | 直播数据校验方法、系统、电子设备及存储介质 | |
CN112363940A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210813 |