CN115630026A - 一种文件读写方法、***、计算机设备和存储介质 - Google Patents
一种文件读写方法、***、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115630026A CN115630026A CN202211084478.8A CN202211084478A CN115630026A CN 115630026 A CN115630026 A CN 115630026A CN 202211084478 A CN202211084478 A CN 202211084478A CN 115630026 A CN115630026 A CN 115630026A
- Authority
- CN
- China
- Prior art keywords
- file
- storage
- node
- target
- storage block
- 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.)
- Pending
Links
Images
Classifications
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种文件读写方法、***、计算机设备和存储介质通过本发明,通过将储存块的状态加入到储存队列中,并通过心跳检测包实时将可以储存的储存节点加入到交互节点位置创建储存节点队列,同时在储存后创建索引,因此,可以解决在存入和使用文件时需要在服务器中多次读写的问题,达到在存入文件时只需要按照储存队列直接存入即可,同时在获取文件时使用索引,达到在存取文件时在使用时只需一次读取的效果。
Description
技术领域
本申请涉及文件储存技术领域,特别是涉及一种文件读写方法、***、计算 机设备和存储介质。
背景技术
目前较常用的文件存储技术,是将图片作为单独的文件存储,会导致同时存 储过多的元数据,同时每个图片都是存储在目录下的,文件***每次读取文件需 要先读取文件的元数据信息等,导致多次磁盘IO,当目录下文件数是K级别是, 读取一次文件需要超过10次的文件IO,即使目录下的文件数是0.1K级别时,也 需要3次的文件IO。对于海量数据来说,非常消耗性能。
针对上述问题,目前并没有提出较好的解决办法。
发明内容
本发明实施例提供了一种文件读写方法、***、计算机设备和存储介质,以 至少解决相关技术中海量数据储存时需要多次磁盘读写的问题。
根据本发明的一个实施例,提供了一种文件读写方法,包括以下步骤:
检测存储节点对应的存储文件夹中的存储块及所述存储块的关联文件;
将所述存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状 态,所述存储状态包括只读和可写入;
向文件交互节点发送心跳检测包;其中,所述心跳检测包包含所述存储节点 的信息;所述文件交互节点对外提供文件服务接口;
将所述心跳检测包中的存储节点加入到存储节点队列;
通过所述文件服务接口获取目标文件的写入请求,并根据所述存储节点队列 和存储块队列将所述目标文件写入存储状态为可写入的存储块;
在所述目标文件写入成功后,将所述目标文件的文件索引信息返回至所述文 件服务接口,并将所述文件索引信息缓存于所述文件交互节点以供外部通过所述 文件服务接口直接读取文件。
进一步地,所述标记所述存储块的存储状态,包括:
校验所述存储块的剩余存储空间是否符合预设规则;
如符合所述预设规则,则将所述存储块标记为可写入状态;
否则,则将所述存储块标记为只读状态。
进一步地,所述检测存储节点对应的存储文件夹中的存储块及所述存储块的 关联文件,包括:
校验存储节点对应的存储文件夹中是否存在存储块及所述存储块的关联文 件;
若存在,则执行所述将所述存储块及所述关联文件加入存储块队列,并标记 所述存储块的存储状态的步骤;
若不存在,则初始化存储块及所述存储块的关联文件,再则执行所述将所述 存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状态的步骤。
进一步地,所述通过所述文件服务接口获取目标文件的写入请求,并根据所 述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块, 包括:
验证所述目标文件是否符合上传配置要求;
若符合,则将所述目标文件转化为字节流信息。
进一步地,所述通过所述文件服务接口获取目标文件的写入请求,并根据所 述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块, 包括:
查找数据库中与所述目标文件相同的已存文件;
如查找到,将所述已存文件的信息返回至所述文件服务接口;
如未查找到,从所述存储节点队列中查找满足所述目标文件的目标存储节点;
将所述目标文件写入所述目标存储节点内的存储块中。
进一步地,所述查找数据库中与所述目标文件相同的已存文件,包括:
根据所述目标文件的字节流信息计算所述目标文件的唯一标识;
在数据库中查找标识与所述唯一标识相同的已存文件。
进一步地,所述通过所述文件服务接口获取目标文件的写入请求,并根据所 述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块, 包括:
如在未接收到任何包含存储节点的信息的心跳检测包或所述存储节点队列 中没有可写入的存储节点时,接收到所述写入请求会通过所述文件服务接口返回 提示信息。
进一步地,所述将所述目标文件写入所述目标存储节点内的存储块中,包括:
将所述目标文件的字节流信息发送至所述目标存储节点;
从目标存储节点的存储块队列中确定符合所述目标文件要求的目标存储块;
将所述目标文件写入所述目标存储块。
进一步地,所述在所述目标文件写入成功后,将所述目标文件的文件索引信 息返回至所述文件服务接口,并将所述文件索引信息缓存于所述文件交互节点以 供外部通过所述文件服务接口直接读取文件,包括:
当所述文件交互节点通过所述文件服务接口接收到关于所述目标文件的查 找请求时,所述文件交互节点根据已缓存的所述目标文件的文件索引信息直接通 过所述文件服务接返回。
进一步地,当所述文件交互节点通过所述文件服务接口接收到删除目标文件 的请求时,具体包括以下步骤:
根据文件交互节点缓存的文件索引信息确定所述目标文件是否已保存;
如已保存,获取所述目标文件所在的存储块的位置,在存储节点列表中查找 所述存储块所在的存储节点;
向所述存储节点发送删除请求;
所述存储节点在接收到所述删除请求后,验证所述需要目标文件是否存在, 如存在,将所述目标文件的标识更新为删除状态,向所述交互节点返回删除成功 信息。
根据本发明的另一个实施例,提供了一种文件读写***,包括:
获取模块:获取存储节点对应的存储文件夹中的存储块及所述存储块的关联 文件;
存储状态模块:将所述存储块及所述关联文件加入存储块队列,并标记所述 存储块的存储状态,所述存储状态包括只读和可写入;
心跳检测发送模块:向文件交互节点发送心跳检测包,所述心跳检测包包含 心跳数据,所述心跳数据包含所述存储节点的信息;所述文件交互节点提供外部 文件服务接口;
存储队列模块:将所述心跳数据中的存储节点加入到存储节点队列;
写入模块:通过外部文件服务接口获取文件的写入请求,并根据所述存储节 点队列和存储块队列将文件写入存储状态为可写入的存储块;
返回模块:文件写入成功后,将文件索引信息通过外部文件服务接口返回, 并将所述文件索引信息缓存于所述文件交互节点以供外部文件服务接口直接读 取文件。
根据本发明的又一个实施例,还提供了一种计算机设备,包括存储器和处理 器,所述处理器与存储器耦合,其特征在于,所述存储器中存储有至少一条程序 指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述 计算机设备实现文件读写方法。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,其上存储 有计算机程序,所述计算机程序被处理器执行时实现如文件读写方法的步骤。
通过本发明,由于通过将储存块的状态加入到储存队列中,并通过心跳检测 包实时将可以储存的储存节点加入到交互节点位置创建储存节点队列,同时在储 存后创建索引,因此,可以解决在存入和使用文件时需要在服务器中多次读写的 问题,达到在存入文件时只需要按照储存队列直接存入即可,同时在获取文件时 使用索引,达到在存取文件时在使用时只需一次读取的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分, 本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。 在附图中:
图1为本申请实施例提供的本申请的文件读写架构图;
图2为本申请实施例提供的应用环境的示意图;
图3为一个实施例中的一种文件读写方法的流程示意图;
图4为一个实施例中的一种文件储存方法的流程示意图;
图5为一个实施例中的一种文件删除方法的流程示意图;
图6为一个实施例中一种文件读写***的示意性结构框图;
图7为一个实施例中计算机设备的示意性结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述, 显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于 本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的 所有其他实施例,都属于本申请保护的范围。
请参阅图1,为本申请实施例提供的文件读写***的一个架构图,包括交互节 点和储存节点,其中交互节点与外部接口联通,向储存节点发送交互请求。
其中,该存储节点可以是计算机设备,例如服务器,台式计算机,笔记本电 脑等,或者还可以是其他具有存储功能的设备,具体此处不做限定。
需要说明的是,在实际应用过程中,该文件读写***还可以包括更多的设备。 例如,还可以包括用户设备,在需要使用该文件读写***时,用户设备会通过发 送指令来对交互节点和储存节点进行操作。
基于上述图2所示的文件读写***架构,以下对本申请实施例中的方法作详 细说明。
本申请提供的文件读写方法,可以全部在服务器一侧执行,也可以全部在客 户端一侧执行,还可以由服务器和客户端共同执行。在文件读写方法由服务器和 客户端共同执行时,可以应用于如图2所示的应用环境中。其中,客户端102与 服务器104通过网络进行通信。
服务器104可以获取到终端102发送的交互请求,且服务器104可以执行储 存块的读写。
其中,客户端102执行发送交互请求。
其中,客户端102可以但不限于是各种计算机、笔记本电脑、智能手机、平 板电脑和便携式智能设备,服务器104可以用独立的服务器或者是多个服务器组 成的服务器集群来实现。
请参阅图3,为本申请实施例提供的文件读写方法一个流程示意图
步骤301,检测存储节点对应的存储文件夹中的存储块及所述存储块的关联 文件;
在本实施例中,在文件存储节点启动后,根据配置文件,检测存储节点对应 的存储文件夹中的存储块及所述存储块的关联文件,预先检测储存文件夹中是否 有存储块及存储块的关联文件,目的时为了验证储存块是否可以加入储存块队列。
具体的,校验存储节点对应的存储文件夹中是否存在存储块及所述存储块的 关联文件;若存在,则执行所述将所述存储块及所述关联文件加入存储块队列, 并标记所述存储块的存储状态的步骤;若不存在,则初始化存储块及所述存储块 的关联文件,再则执行所述将所述存储块及所述关联文件加入存储块队列,并标 记所述存储块的存储状态的步骤。
其中,存储块的关联文件包括但不限于元数据缓存文件、存储块状态文件, 如不存在存储块文件,存储节点将会初始化存储块以及元数据缓存文件、存储块 状态文件,并将其加入存储队列中。
步骤302,将所述存储块及所述关联文件加入存储块队列,并标记所述存储 块的存储状态,所述存储状态包括只读和可写入;
在本实施例中,在检测完存储块及存储块的关联文件后,检测结果无误即可 将上述的储存块和存储块的关联文件加入到储存队列中,并同时根据当前储存块 的储存状态,进行标记。此部分对储存队列中的储存块进行标记是为了保证后续 的储存块进行储存时具有充足的储存空间,防止储存时空间不够的情况出现。
其中,标记所述存储块的存储状态包括:校验所述存储块的剩余存储空间是 否符合预设规则;如符合所述预设规则,则将所述存储块标记为可写入状态;否 则,则将所述存储块标记为只读状态。
具体的,根据配置文件设置的最大存储容量校验当前存储块是否还有剩余存 储空间,如有剩余存储空间,则将该存储块标识为可写入状态,如存储块容量大 于等于最大存储容量(理论上只会小于等于最大存储容量,可配置一个中间值, 当剩余可存储容量+中间值>=最大存储容量将该存储块状态变更为只读存储块), 则将该存储块标识为只读状态,并新增(初始化)一个可写存储块及相应的缓存 文件将其加入到存储队列。
步骤303,向文件交互节点发送心跳检测包;其中,所述心跳检测包包含所 述存储节点的信息;所述文件交互节点对外提供文件服务接口;
在本实施例中,文件交互节点保证与外部文件服务接口的交互情况,并接受 外部指令和外部文件,向文件交互节点发送心跳检测包的目的是为了让交互节点 实时的获取储存块的情况。
具体的,存储节点初始化结束后,开始向文件交互节点通过grpc服务发送 心跳检测包,等待文件交互节点返回响应。返回响应后,每30秒(可更改配置, 但最大时长要和文件交互节点统一,以保证存储节点在线)继续发送心跳包以保 持存储节点在线状态。
步骤304,将所述心跳检测包中的存储节点加入到存储节点队列;
在本实施例中,心跳检测包获取可以储存的储存节点,由于上述的验证储存 块的步骤,因此,此时储存节点均指向可以进行储存的储存块,并将储存节点加 入到储存队列中,保证文件的储存情况。
具体的,文件交互节点启动后,会根据配置文件开启HTTP服务提供外部上 传文件接口,grpc心跳检测服务,通过grpc心跳服务接收文件存储节点心跳数 据,并将心跳数据里存储节点的信息加入到存储队列中。如没有接收到任何存储 节点的心跳数据或者文件存储队列中没有可写入的存储节点,这时接收到文件上 传请求会返回无存储节点的错误信息。
步骤305,通过所述文件服务接口获取目标文件的写入请求,并根据所述存 储节点队列和存储块队列将目标文件写入存储状态为可写入的存储块;
在本实施例中,上述的步骤将储存节点发送到交互节点,并以储存节点队列 的方式提供可储存的储存节点,当有要存入目标文件的需求,直接将从储存节点 队列写入储存块。
具体的,验证目标文件是否符合上传配置要求;若符合,则将目标文件转化 为字节流信息。之后查找数据库中与目标文件相同的已存文件;如查找到,将已 存文件的信息返回至文件服务接口;如未查找到,从存储节点队列中查找满足目 标文件的目标存储节点;将目标文件写入目标存储节点内的存储块中。如在未接 收到任何包含存储节点的信息的心跳检测包或存储节点队列中没有可写入的存 储节点时,接收到写入请求会通过文件服务接口返回提示信息。
其中,查找数据库中与目标文件相同的已存文件,具体包括,根据目标文件 的字节流信息计算目标文件的唯一标识;在数据库中查找标识与唯一标识相同的 已存文件。将目标文件写入目标存储节点内的存储块中,具体包括,将目标文件 的字节流信息发送至目标存储节点;从目标存储节点的存储块队列中确定符合目 标文件要求的目标存储块;将目标文件写入目标存储块。
更具体的,参照图4,文件交互节点启动成功后,开始提供外部文件响应接 口,其步骤包括:
步骤401:文件交互节点接收到文件上传请求,首先验证文件到格式,文件 大小是否符合上传配置的要求,之后会将文件在交互节点转化为字节流的形式;
步骤402:根据文件的字节流,计算出文件的唯一标识;
步骤403:文件交互节点从数据库匹配文件唯一标识,验证文件是否已存在;
步骤404:如果文件存在,则将文件地址等信息入库保存后返回给前端接口;
步骤405:如果文件不存在,则从当前存储节点队列中查找是否存在在线状 态的存储节点并校验该节点剩余存储空间是否大于待上传的文件大小。如不满足 待上传文件存储大小,则继续循环存储节点队列进行验证。如果最终未找到满足 上传条件的存储节点,则返回相应错误信息。如果满足上传条件,则将文件字节 流通过grpc发送至该存储节点;
步骤406:存储节点接收到待上传文件的字节流信息后,查找自身存储块的offset标识,并将文件游标移动至offset处,在文件头尾写入文件id,并将文 件内容写入存储块相应位置;
步骤407:存储节点更新文件元数据信息及存储块offset信息;
步骤408:存储节点向冗余节点发送文件数据及信息,冗余节点实现文件备 份存放;
步骤409:返回文件状态至文件交互节点。
其中,唯一标识包括但不限于md5、sha1,只要能够实现文件唯一的识别标 识即可。
步骤306,在目标文件写入成功后,将目标文件的文件索引信息返回至文件 服务接口,并将文件索引信息缓存于文件交互节点以供外部通过文件服务接口直 接读取文件。
在本实施例中,写入后的文件建立索引,保证外部在读取文件时,只需按照 索引信息读取文件即可,不用进行文件搜索。
具体包括:文件交互节点通过文件服务接口接收到关于目标文件的查找请求 时,文件交互节点根据已缓存的目标文件的文件索引信息直接通过文件服务接返 回。
当文件交互节点通过文件服务接口接收到删除目标文件的请求时,具体包括 以下步骤:根据文件交互节点缓存的文件索引信息确定目标文件是否已保存;如 已保存,获取目标文件所在的存储块的位置,在存储节点列表中查找存储块所在 的存储节点;向存储节点发送删除请求;存储节点在接收到删除请求后,验证需 要目标文件是否存在,如存在,将目标文件的标识更新为删除状态,向交互节点 返回删除成功信息。
更具体的,当需要进行文件删除时,参照图5,具体包括以下步骤:
步骤501:文件交互节点接收到删除文件请求,根据交互节点文件索引信息 判断文件是否已保存;
步骤502:获取该文件存储块的位置,在存储节点列表中查找该存储块所在 存储节点是否在线状态;
步骤503:通过grpc通信向该存储节点发送删除请求;
步骤504:存储节点验证文件是否存在,如存在,则更新文件元数据信息, 将其flag标识更新为删除状态。向交互服务器返回删除成功消息;
步骤505:存储节点异步检查删除文件总数量、删除文件总大小,与配置文 件阈值对比,如达到删除文件总大小/删除文件总数量阈值要求,则将该存储块 状态变更为只读,新增一个存储块,将原存储块内flag标识状态为正常的文件 转移到新的存储块中,全部转移完毕后更新存储块元数据信息,向交互节点发送 索引更新请求以更新文件存储块索引地址。全部处理完毕后,将新存储块信息加 入到存储节点列表中;
在一个实施例中,提供了一种文件读写***/装置,如图6所示,包括:
获取模块:用于获取存储节点对应的存储文件夹中的存储块及所述存储块的 关联文件;
存储状态模块:用于将所述存储块及所述关联文件加入存储块队列,并标记 所述存储块的存储状态,所述存储状态包括只读和可写入;
心跳检测发送模块:用于向文件交互节点发送心跳检测包,所述心跳检测包 包含心跳数据,所述心跳数据包含所述存储节点的信息;所述文件交互节点提供 外部文件服务接口;
存储队列模块:用于将所述心跳数据中的存储节点加入到存储节点队列;
写入模块:用于通过外部文件服务接口获取文件的写入请求,并根据所述存 储节点队列和存储块队列将文件写入存储状态为可写入的存储块;
返回模块:用于文件写入成功后,将文件索引信息通过外部文件服务接口返 回,并将所述文件索引信息缓存于所述文件交互节点以供外部文件服务接口直接 读取文件。
关于文件读写***的具体限定可参见上文中对于文件读写方法的限定,在此 不再赘述。上述文件读写***中的各个模块可全部或部分通过软件、硬件及其组 合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中, 也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上 各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,本申请实施例提供的计算机设备, 可以是服务器,也可以是客户端:如图7所示,为本申请实施例提供的计算机设 备的结构示意图。
处理器1701、存储器1702、总线1705、接口1704,处理器1701与存储器 1702、接口1704相连,总线1705分别连接处理器1701、存储器1702以及接口 1704,接口1704用于接收或者发送数据,处理器1701是单核或多核中央处理单 元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成 电路。存储器1702可以为随机存取存储器(random access memory,RAM),也 可以为非易失性存储器(non-volatile memory),例如至少一个硬盘存储器。 存储器1702用于存储计算机执行指令。具体的,计算机执行指令中可以包括程 序1703。
本实施例中,该处理器1701调用程序1703时,可以使图7中的管理服务器 执行操作,具体此处不再赘述。
应理解,本申请上述实施例提供的处理器,可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用 处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请中以上实施例中的计算机设备中的处理器的数量可以是一 个,也可以是多个,可以根据实际应用场景调整,此处仅仅是示例性说明,并不 作限定。本申请实施例中的存储器的数量可以是一个,也可以是多个,可以根据 实际应用场景调整,此处仅仅是示例性说明,并不作限定。
还需要说明的是,当计算机设备包括处理器(或处理单元)与存储器时,本申 请中的处理器可以是与存储器集成在一起的,也可以是处理器与存储器通过接口 连接,可以根据实际应用场景调整,并不作限定。
本申请提供了一种芯片***,该芯片***包括处理器,用于支持计算机设备 (客户端或服务器)实现上述方法中所涉及的控制器的功能,例如处理上述方法 中所涉及的数据和/或信息。在一种可能的设计中,芯片***还包括存储器,存 储器,用于保存必要的程序指令和数据。该芯片***,可以由芯片构成,也可以 包括芯片和其他分立器件。
在另一种可能的设计中,当该芯片***为用户设备或接入网等内的芯片时, 芯片包括:处理单元和通信单元,处理单元例如可以是处理器,通信单元例如可 以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机 执行指令,以使该客户端或管理服务器等内的芯片执行文件读写方法的步骤。可 选地,存储单元为芯片内的存储单元,如寄存器、缓存等,存储单元还可以是客 户端或管理服务器等内的位于芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存 储器(random access memory,RAM)等。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序, 该计算机程序被计算机执行时实现上述任一方法实施例中与客户端或管理服务 器的控制器执行的方法流程。对应的,该计算机可以为上述计算机设备(客户端 或服务器)。
应理解,本申请以上实施例中的提及的控制器或处理器,可以是中央处理单 元(central processing unit,CPU),还可以是其他通用处理器、数字信号处 理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件 组件等中的一种或多种的组合。通用处理器可以是微处理器或者该处理器也可以 是任何常规的处理器等。
还应理解,本申请中以上实施例中的计算机设备(客户端或服务器)或芯片 ***等中的处理器或控制器的数量可以是一个,也可以是多个,可以根据实际应 用场景调整,此处仅仅是示例性说明,并不作限定。本申请实施例中的存储器的 数量可以是一个,也可以是多个,可以根据实际应用场景调整,此处仅仅是示例 性说明,并不作限定。
还应理解,本申请实施例中以上实施例中的计算机设备(客户端或服务器) 等中提及的存储器或可读存储介质等,可以是易失性存储器或非易失性存储器, 或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储 器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、 可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储 器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制 性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、 动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM, ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存 总线随机存取存储器(direct rambus RAM,DR RAM)。
本领域普通技术人员可以理解实现上述实施例的全部或部分由计算机设备 (客户端或服务器)或者处理器执行的步骤可以通过硬件或程序来指令相关的硬 件完成。程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以 是只读存储器,随机接入存储器等。具体地,例如:上述处理单元或处理器可以 是中央处理器,通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现 场可编程门阵列(FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或 者其任意组合。上述的这些功能究竟以硬件还是软件方式来执行,取决于技术方 案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同 方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
当使用软件实现时,上述实施例描述的方法步骤可以全部或部分地以计算机 程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上 加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功 能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。 计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质 向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、 计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数 据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或 者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半 导体介质等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用 于区别
类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的 术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象 在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变 形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产 品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方 法、产品或设备固有的其它单元。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在 限制本发明。在本申请实施例中所使用的单数形式的“一种”、“”和“该”也旨 在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,在本申请的描 述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B 可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表 示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和 B,单独存在B这三种情况,其中A,B可以是单数或者复数。
取决于语境,如在此所使用的词语“如果”或“若”可以被解释成为“在…… 时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境, 短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定 时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈 述的条件或事件)”。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照 前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依 然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进 行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实 施例技术方案的范围。
Claims (13)
1.一种文件读写方法,其特征在于,包括以下步骤:
检测存储节点对应的存储文件夹中的存储块及所述存储块的关联文件;
将所述存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状态,所述存储状态包括只读和可写入;
向文件交互节点发送心跳检测包;其中,所述心跳检测包包含所述存储节点的信息;所述文件交互节点对外提供文件服务接口;
将所述心跳检测包中的存储节点加入到存储节点队列;
通过所述文件服务接口获取目标文件的写入请求,并根据所述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块;
在所述目标文件写入成功后,将所述目标文件的文件索引信息返回至所述文件服务接口,并将所述文件索引信息缓存于所述文件交互节点以供外部通过所述文件服务接口直接读取文件。
2.根据权利要求1所述的方法,其特征在于,所述标记所述存储块的存储状态,包括:
校验所述存储块的剩余存储空间是否符合预设规则;
如符合所述预设规则,则将所述存储块标记为可写入状态;
否则,则将所述存储块标记为只读状态。
3.根据权利要求1所述的方法,其特征在于,所述检测存储节点对应的存储文件夹中的存储块及所述存储块的关联文件,包括:
校验存储节点对应的存储文件夹中是否存在存储块及所述存储块的关联文件;
若存在,则执行所述将所述存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状态的步骤;
若不存在,则初始化存储块及所述存储块的关联文件,再则执行所述将所述存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状态的步骤。
4.根据权利要求1所述的方法,其特征在于,所述通过所述文件服务接口获取目标文件的写入请求,并根据所述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块,包括:
验证所述目标文件是否符合上传配置要求;
若符合,则将所述目标文件转化为字节流信息。
5.根据权利要求1至4任一项所述的方法,其特征在于,根据权利要求1所述的方法,其特征在于:所述通过所述文件服务接口获取目标文件的写入请求,并根据所述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块,包括:
查找数据库中与所述目标文件相同的已存文件;
如查找到,将所述已存文件的信息返回至所述文件服务接口;
如未查找到,从所述存储节点队列中查找满足所述目标文件的目标存储节点;
将所述目标文件写入所述目标存储节点内的存储块中。
6.根据权利要求5所述的方法,其特征在于,所述查找数据库中与所述目标文件相同的已存文件,包括:
根据所述目标文件的字节流信息计算所述目标文件的唯一标识;
在数据库中查找标识与所述唯一标识相同的已存文件。
7.根据权利要求1所述的方法,其特征在于,所述通过所述文件服务接口获取目标文件的写入请求,并根据所述存储节点队列和存储块队列将所述目标文件写入存储状态为可写入的存储块,包括:
如在未接收到任何包含存储节点的信息的心跳检测包或所述存储节点队列中没有可写入的存储节点时,接收到所述写入请求会通过所述文件服务接口返回提示信息。
8.根据权利要求5所述的方法,其特征在于,所述将所述目标文件写入所述目标存储节点内的存储块中,包括:
将所述目标文件的字节流信息发送至所述目标存储节点;
从目标存储节点的存储块队列中确定符合所述目标文件要求的目标存储块;
将所述目标文件写入所述目标存储块。
9.根据权利要求1所述的方法,其特征在于,所述在所述目标文件写入成功后,将所述目标文件的文件索引信息返回至所述文件服务接口,并将所述文件索引信息缓存于所述文件交互节点以供外部通过所述文件服务接口直接读取文件,包括:
当所述文件交互节点通过所述文件服务接口接收到关于所述目标文件的查找请求时,所述文件交互节点根据已缓存的所述目标文件的文件索引信息直接通过所述文件服务接返回。
10.根据权利要求1所述的方法,其特征在于,当所述文件交互节点通过所述文件服务接口接收到删除目标文件的请求时,具体包括以下步骤:
根据文件交互节点缓存的文件索引信息确定所述目标文件是否已保存;
如已保存,获取所述目标文件所在的存储块的位置,在存储节点列表中查找所述存储块所在的存储节点;
向所述存储节点发送删除请求;
所述存储节点在接收到所述删除请求后,验证所述需要目标文件是否存在,如存在,将所述目标文件的标识更新为删除状态,向所述交互节点返回删除成功信息。
11.一种文件读写***,其特征在于,包括:
获取模块:获取存储节点对应的存储文件夹中的存储块及所述存储块的关联文件;
存储状态模块:将所述存储块及所述关联文件加入存储块队列,并标记所述存储块的存储状态,所述存储状态包括只读和可写入;
心跳检测发送模块:向文件交互节点发送心跳检测包,所述心跳检测包包含心跳数据,所述心跳数据包含所述存储节点的信息;所述文件交互节点提供外部文件服务接口;
存储队列模块:将所述心跳数据中的存储节点加入到存储节点队列;
写入模块:通过外部文件服务接口获取文件的写入请求,并根据所述存储节点队列和存储块队列将文件写入存储状态为可写入的存储块;
返回模块:文件写入成功后,将文件索引信息通过外部文件服务接口返回,并将所述文件索引信息缓存于所述文件交互节点以供外部文件服务接口直接读取文件。
12.一种计算机设备,包括存储器和处理器,所述处理器与存储器耦合,其特征在于,所述存储器中存储有至少一条程序指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述计算机设备实现权利要求1-10任一项所述的文件读写方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一所述的文件读写方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211084478.8A CN115630026A (zh) | 2022-09-06 | 2022-09-06 | 一种文件读写方法、***、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211084478.8A CN115630026A (zh) | 2022-09-06 | 2022-09-06 | 一种文件读写方法、***、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115630026A true CN115630026A (zh) | 2023-01-20 |
Family
ID=84903048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211084478.8A Pending CN115630026A (zh) | 2022-09-06 | 2022-09-06 | 一种文件读写方法、***、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115630026A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541348A (zh) * | 2023-03-22 | 2023-08-04 | 河北热点科技股份有限公司 | 数据智能存储方法及终端查询一体机 |
-
2022
- 2022-09-06 CN CN202211084478.8A patent/CN115630026A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541348A (zh) * | 2023-03-22 | 2023-08-04 | 河北热点科技股份有限公司 | 数据智能存储方法及终端查询一体机 |
CN116541348B (zh) * | 2023-03-22 | 2023-09-26 | 河北热点科技股份有限公司 | 数据智能存储方法及终端查询一体机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019136800A1 (zh) | 业务处理方法、装置、设备及计算机可读存储介质 | |
US10891074B2 (en) | Key-value storage device supporting snapshot function and operating method thereof | |
US20200349113A1 (en) | File storage method, deletion method, server and storage medium | |
US20200153889A1 (en) | Method for uploading and downloading file, and server for executing the same | |
CN113157487B (zh) | 数据恢复方法及其设备 | |
CN112199342A (zh) | 一种文件上传方法、装置及计算机设备 | |
CN107577775B (zh) | 一种读取数据方法、装置、电子设备及可读存储介质 | |
CN115630026A (zh) | 一种文件读写方法、***、计算机设备和存储介质 | |
CN112748877A (zh) | 一种文件的整合上传方法及装置、文件的下载方法及装置 | |
CN115470156A (zh) | 基于rdma的内存使用方法、***、电子设备和存储介质 | |
CN111803917A (zh) | 资源的处理方法和装置 | |
CN112286457B (zh) | 对象重删方法、装置、电子设备及机器可读存储介质 | |
CN112148206A (zh) | 一种数据读写方法、装置、电子设备及介质 | |
CN112115521B (zh) | 数据访问方法及装置 | |
CN117131014A (zh) | 数据库迁移方法、装置、设备及存储介质 | |
CN108491160B (zh) | 一种数据写入方法及装置 | |
CN113360095B (zh) | 硬盘数据管理方法、装置、设备及介质 | |
CN114792016A (zh) | 一种处理方法及电子设备 | |
CN114817154A (zh) | 共享文件的操作方法、装置、计算机设备和共享文件*** | |
CN108959405B (zh) | 数据的强一致性读取方法及终端设备 | |
CN114550773A (zh) | 存储器控制器、存储***和数据处理方法 | |
CN115544489A (zh) | 一种认证方法、装置和存储*** | |
CN114675776A (zh) | 资源存储方法和装置、存储介质和电子设备 | |
CN113364875B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 | |
CN110888643A (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 |