CN114356850A - 文件读取方法、装置和电子设备 - Google Patents
文件读取方法、装置和电子设备 Download PDFInfo
- Publication number
- CN114356850A CN114356850A CN202210028391.2A CN202210028391A CN114356850A CN 114356850 A CN114356850 A CN 114356850A CN 202210028391 A CN202210028391 A CN 202210028391A CN 114356850 A CN114356850 A CN 114356850A
- Authority
- CN
- China
- Prior art keywords
- file
- object data
- reading
- client
- unit
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种文件读取方法、装置和电子设备。其中,该确定客户端待读取的目标文件对应的文件句柄和多个文件单元;对于每个文件单元,判断文件单元是否具有对应的对象数据;如果是,读取文件句柄和文件单元对应的对象数据;将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。于待读取的目标文件对应的每个文件单元,可以判断文件单元是否具有对应的对象数据;读取具有对应的对象数据的文件单元的对象数据,并将读取的对象数据发送至客户端,由客户端将文件数据组合为目标文件。该方式中,对于不具有对应的对象数据的文件单元可以不执行读取对象数据的步骤,可以节约文件读取的时间,提高文件读取的效率。
Description
技术领域
本发明涉及文件存储的技术领域,尤其是涉及一种文件读取方法、装置和电子设备。
背景技术
分布式文件存储服务是一款完全托管、可扩展的高性能文件存储产品,一般由客户端、网关、元数据管理模块、数据节点等模块组成。一般来说,分布式文件存储服务在读取文件时,需要读取该文件对应的多个文件单元的对象信息,并基于对象信息获取对象数据,组合对象数据为最终的文件。
如果待读取的文件存在空洞部分,文件的空洞部分的文件单元并不会存储有对象信息。然而,在上述读取文件的方式中,即使待读取的文件存在空洞部分,读取文件时仍然需要执行查询文件的空洞部分的文件单元对象信息的步骤,在得到查询失败的结果后才会认定无法读取该对象信息,文件读取消耗的时间较长,文件读取效率较低。
发明内容
有鉴于此,本发明的目的在于提供一种文件读取方法、装置和电子设备,以节约文件读取的时间,提高文件读取的效率。
第一方面,本发明实施例提供了一种文件读取方法,应用于服务器,服务器与客户端通信连接,方法包括:确定客户端待读取的目标文件对应的文件句柄和多个文件单元;对于每个文件单元,判断文件单元是否具有对应的对象数据;如果是,读取文件句柄和文件单元对应的对象数据;将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。
在本发明较佳的实施例中,上述服务器包括名称节点、元数据节点和对象存储服务。
在本发明较佳的实施例中,上述确定客户端待读取的目标文件对应的文件句柄和多个文件单元的步骤,包括:接收客户端发送的目标文件的文件名;通过名称节点将文件名转换为文件句柄;通过元数据节点确定目标文件对应的多个文件单元。
在本发明较佳的实施例中,上述名称节点预先存储有文件名与文件句柄的第一映射关系;通过名称节点将文件名转换为文件句柄的步骤,包括:通过名称节点基于第一映射关系确定文件名对应的文件句柄。
在本发明较佳的实施例中,上述通过元数据节点确定目标文件对应的多个文件单元的步骤,包括:确定多个文件单元的信息,其中,文件单元的信息包括文件单元的数据偏移信息和数据长度信息;通过元数据节点基于多个文件单元的信息确定多个文件单元。
在本发明较佳的实施例中,上述服务器的布隆过滤器预先存储有文件单元与对象数据的第二映射关系;判断文件单元是否具有对应的对象数据的步骤,包括:基于布隆过滤器存储的第二映射关系确定文件单元是否具有对应的对象数据。
在本发明较佳的实施例中,上述判断文件单元是否具有对应的对象数据的步骤之后,方法还包括:如果否,取消读取文件句柄和文件单元对应的对象数据的步骤。
在本发明较佳的实施例中,上述元数据节点预先存储有文件句柄、文件单元和对象信息的第三映射关系;读取文件句柄和文件单元对应的对象数据的步骤,包括:通过元数据节点基于第三映射关系读取文件句柄和文件单元对应的对象信息;基于对象信息从对象存储服务读取对象数据。
在本发明较佳的实施例中,上述读取文件句柄和文件单元对应的对象数据的步骤之后,方法还包括:将读取的对象数据组合为目标文件;将目标文件发送至客户端。
第二方面,本发明实施例还提供一种文件读取装置,应用于服务器,服务器与客户端通信连接,装置包括:文件句柄和文件单元确定模块,用于确定客户端待读取的目标文件对应的文件句柄和多个文件单元;对象数据判断模块,用于对于每个文件单元,判断文件单元是否具有对应的对象数据;对象数据读取模块,用于如果是,读取文件句柄和文件单元对应的对象数据;对象数据发送模块,用于将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。
第三方面,本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述的文件读取方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述的文件读取方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供的一种文件读取方法、装置和电子设备,对于待读取的目标文件对应的每个文件单元,可以判断文件单元是否具有对应的对象数据;读取具有对应的对象数据的文件单元的对象数据,并将读取的对象数据发送至客户端,由客户端将文件数据组合为目标文件。该方式中,对于不具有对应的对象数据的文件单元可以不执行读取对象数据的步骤,可以节约文件读取的时间,提高文件读取的效率。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件读取方法的流程图;
图2为本发明实施例提供的另一种文件读取方法的流程图;
图3为本发明实施例提供的一种服务器的示意图;
图4为本发明实施例提供的一种文件读取装置的结构示意图;
图5为本发明实施例提供的另一种文件读取装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
分布式文件存储服务是一款完全托管、可扩展的高性能文件存储产品,一般由客户端、网关、元数据管理模块、数据节点等模块组成。目前,分布式文件存储服务在读取文件时,需要读取该文件对应的多个文件单元的对象信息,并基于对象信息获取对象数据,组合对象数据为最终的文件。
在文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞,这一点是允许的。位于文件中但没有写过的字节都被设为0。
如果offset比文件的当前长度更大,下一个写操作就会把文件“撑大”。这就是所谓的在文件里创造“空洞”。没有被实际写入文件的所有字节由重复的0表示。空洞是否占用硬盘空间是由文件系统决定的。
如果待读取的文件存在空洞部分,文件的空洞部分的文件单元并不会存储有对象信息。然而,在上述读取文件的方式中,即使待读取的文件存在空洞部分,读取文件时仍然需要执行查询文件的空洞部分的文件单元对象信息的步骤,在得到查询失败的结果后才会认定无法读取该对象信息,文件读取消耗的时间较长,文件读取效率较低。
基于此,本发明实施例提供的一种文件读取方法、装置和电子设备,具体涉及一种分布式文件存储空洞读数据优化方案,提供了在分布式文件存储中,对于文件空洞部分数据读取的一种性能优化方案。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种文件读取方法进行详细介绍。
本实施例提供了一种文件读取方法,应用于服务器,服务器与客户端通信连接,参见图1所示的一种文件读取方法的流程图,该文件读取方法包括如下步骤:
步骤S100,确定客户端待读取的目标文件对应的文件句柄和多个文件单元。
用户想要从服务器读取的文件可以称为目标文件。用户可以通过客户端将目标文件的文件名发送至服务器,服务器可以基于目标文件的文件名查找对应的文件句柄和多个文件单元。
在文件I/O(Input/Output,输入/输出)中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄,该文件句柄对于打开的文件是唯一的识别依据。
本实施例中的服务器在存储文件时,可以通过多个文件单元进行存储,每个文件单元存储目标文件的一部分。例如:可以按照指定的大小分割目标文件,将分割后的目标文件分别存储于文件单元中。假设指定的大小是4MB,目标文件为14MB,则可以将目标文件分割为3个4MB的文件单元和1个2MB的文件单元,分别进行存储。
本实施例中的服务器可以预先存储有文件名、文件句柄和多个文件单元的对应关系,服务器在获取目标文件的文件名后,可以根据上述对应关系文件名确定对应的文件句柄和多个文件单元。
步骤S102,对于每个文件单元,判断文件单元是否具有对应的对象数据。
本实施例中的服务器对于每个文件单元都需要判断其是否具有对应的对象数据,具体地,服务器中可以预先存储有文件单元与对象数据的对象信息的对应关系,服务器可以通过上述对应关系确定每个文件单元是否具有对应的对象信息,即是否具有对应的对象数据。
步骤S104,如果是,读取文件句柄和文件单元对应的对象数据。
如果文件单元具有对应的对象数据,则可以根据文件句柄和文件单元读取对应的对象数据;如果文件单元不具有对应的对象数据,则不执行读取文件句柄和文件单元对应的对象数据的步骤。通过上述步骤,对于没有对象数据的文件单元不再执行读取的步骤,可以节约文件读取的时间,提高文件读取的效率。
步骤S106,将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。
当读取完毕所有文件单元对应的对象数据之后,服务器可以将读取的对象数据发送至客户端,客户端将文件数据组合为目标文件。
本发明实施例提供的一种文件读取方法,对于待读取的目标文件对应的每个文件单元,可以判断文件单元是否具有对应的对象数据;读取具有对应的对象数据的文件单元的对象数据,并将读取的对象数据发送至客户端,由客户端将文件数据组合为目标文件。该方式中,对于不具有对应的对象数据的文件单元可以不执行读取对象数据的步骤,可以节约文件读取的时间,提高文件读取的效率。
本实施例提供了另一种文件读取方法,该方法在上述实施例的基础上实现;本实施例重点描述判断文件单元是否具有对应的对象数据的具体实施方式。参见图2所示的另一种文件读取方法的流程图,本实施例中的文件读取方法包括如下步骤:
步骤S200,确定客户端待读取的目标文件对应的文件句柄和多个文件单元。
分布式文件存储服务(KPFS)是一个基于对象存储而构建的对外提供文件存储的服务,用户通过支持POSIX(Portable Operating System Interface of UNIX,可移植操作系统接口)标准的KPFS客户端或NFS(Network File System网络文件系统)客户端与KPFS服务端交互,实现文件数据的存储、提取和删除。
参见图3的一种服务器的示意图,本实施例中的服务器包括名称节点、元数据节点和对象存储服务。即KPFS服务端主要包括三个模块,分别是名称节点(namenode)、元数据节点(metanode)和对象存储服务。其中,namenode构建了文件系统目录树结构及文件名与文件句柄(inode)的映射关系。metanode构建了文件句柄与对象数据的映射关系。对象存储服务中以对象的方式存储文件真实数据,每个对象为一个object,根据对象信息(object_id)可以读取object的数据。
具体地,用户在读取数据时,可以在namenode中将请求中的文件名转换为文件句柄,可以在metanode中根据文件句柄、读取数据偏移及长度等信息获取对象信息(也可以称为object信息),然后根据对象信息从对象存储服务中读取数据。
目前,metanode中进行文件存储和读取的方式可以为:metanode中将文件以一定的长度(例如4MB)分割成若干个文件单元,并将文件单元进行编号(例如,cell_0、cell_1、cell_N)。metanode中以inode+cell_N为关键字(key),以object信息(一个cell可对应多个object)为值(value)存储文件的元数据。用户读数据的请求到达metanode时,metanode根据读请求的偏移和长度计算出相应的cell序列并根据cell序列查询并读取对应的object信息。
然而,上述读取方式当一个文件存在空洞时,空洞的cell没有存储object信息,而读空洞时还是会查询object信息,在查询失败后才认定为是空洞的cell,这个过程中查询是主要耗时点,会增加文件读取消耗的时间,降低文件读取效率。
具体地,本发明实施例中可以通过下述步骤确定客户端待读取的目标文件对应的文件句柄和多个文件单元:接收客户端发送的目标文件的文件名;通过名称节点将文件名转换为文件句柄;通过元数据节点确定目标文件对应的多个文件单元。
服务器在接收到读取文件的请求后,可以确定上述请求的目标文件的文件名,通过名称节点可以将文件名转换为文件句柄;通过元数据节点可以确定目标文件对应的多个文件单元。
具体地,名称节点预先存储有文件名与文件句柄的第一映射关系;可以通过名称节点基于第一映射关系确定文件名对应的文件句柄。
例如:第一映射关系可以包括,文件名A与文件句柄X对应,当服务器的目标文件的文件名为A时,名称节点可以基于第一映射关系确定文件名A对应的文件句柄为X。
具体地,元数据节点可以通过下述步骤确定目标文件对应的多个文件单元:确定多个文件单元的信息,其中,文件单元的信息包括文件单元的数据偏移信息和数据长度信息;通过元数据节点基于多个文件单元的信息确定多个文件单元。
上文已经提到,元数据节点中将文件以一定的长度(例如4MB)分割成若干个单元,并将单元进行编号(例如,cell_0、cell_1、cell_N)。元数据节点中以inode+cell_N为key,以对象信息(一个cell可对应多个object)为value存储文件的元数据。
因此,元数据节点中可以根据数据偏移信息和数据长度信息,计算得到文件单元的信息,并根据文件单元的信息确定多个文件单元。
步骤S202,对于每个文件单元,基于布隆过滤器存储的第二映射关系确定文件单元是否具有对应的对象数据。
布隆过滤器是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。本发明实施例中,可以在文件单元与对象信息的存储引擎中增加布隆过滤器,有对象信息的文件单元在布隆过滤器中映射为true,没有对象信息的文件单元很大可能性映射为false,组建第二映射关系。
例如:布隆过滤器中存储的第二映射关系可以包括:文件单元T映射为true,因此,对于文件单元T,则文件单元T基于布隆过滤器存储的第二映射关系确定文件单元可以确定映射为true。具有对应的对象数据。
又例如,布隆过滤器中存储的第二映射关系可以包括:文件单元Y映射为false,因此,对于文件单元Y,则文件单元Y基于布隆过滤器存储的第二映射关系确定文件单元可以确定映射为false。具没有对应的对象数据。
步骤S204,如果是,读取文件句柄和文件单元对应的对象数据。
在读取数据时,先查询布隆过滤器,确认该文件单元是否有对象数据,如果有,则继续在存储引擎中查询并读取对象信息,如果没有,则直接返回,这样就很大程度上减少了空洞读时的查询过程,有利于提高读取性能。即断文件单元是否具有对应的对象数据的步骤之后,上述方法还包括:如果否,取消读取文件句柄和文件单元对应的对象数据的步骤。
具体地,元数据节点预先存储有文件句柄、文件单元和对象信息的第三映射关系,可以通过下述步骤读取文件句柄和文件单元对应的对象数据:通过元数据节点基于第三映射关系读取文件句柄和文件单元对应的对象信息;基于对象信息从对象存储服务读取对象数据。
上文已经提到,元数据节点中以inode+cell_N为key,以对象信息(一个cell可对应多个object)为value存储文件的元数据,可以组建第三映射关系。在确定文件句柄inode和文件单元cell_N之后,可以根据第三映射关系确定inode+cell_N为key对应的对象信息。例如:假设文件句柄为inode P和文件单元cell_3,则可以通过第三映射关系确定inode P+cell_3为key时对应的value,将该value作为对象信息,并通过对象存储服务基于该对象信息读取对象数据。
步骤S206,将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。
在确定所有的对象数据之后,除了将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件的步骤之外,还可以有服务将对象数据组合,例如:将读取的对象数据组合为目标文件;将目标文件发送至客户端。
服务器可以将对象数据组合为目标文件,将目标文件发送至客户端;可以直接将对象数据发送至客户端,由客户端将对象数据组合为目标文件。
本发明实施例提供的上述方法,对于待读取的目标文件对应的每个文件单元,可以判断文件单元是否具有对应的对象数据;读取具有对应的对象数据的文件单元的对象数据,并将读取的对象数据发送至客户端,由客户端将文件数据组合为目标文件。
具体地,可以通过基隆过滤器存储的第二映射关系确定文件单元是否具有对应的对象数据,对于具有对应的对象数据的文件单元可以执行读取对象数据的步骤,对于不具有对应的对象数据的文件单元可以不执行读取对象数据的步骤,从而节约文件读取的时间,提高文件读取的效率。
对应于上述方法实施例,本发明实施例提供了一种文件读取装置,应用于服务器,服务器与客户端通信连接,参见图4所示的一种文件读取装置的结构示意图,该文件读取装置包括:
文件句柄和文件单元确定模块41,用于确定客户端待读取的目标文件对应的文件句柄和多个文件单元;
对象数据判断模块42,用于对于每个文件单元,判断文件单元是否具有对应的对象数据;
对象数据读取模块43,用于如果是,读取文件句柄和文件单元对应的对象数据;
对象数据发送模块44,用于将读取的对象数据发送至客户端,以使客户端将文件数据组合为目标文件。
本发明实施例提供的一种文件读取装置,对于待读取的目标文件对应的每个文件单元,可以判断文件单元是否具有对应的对象数据;读取具有对应的对象数据的文件单元的对象数据,并将读取的对象数据发送至客户端,由客户端将文件数据组合为目标文件。该方式中,对于不具有对应的对象数据的文件单元可以不执行读取对象数据的步骤,可以节约文件读取的时间,提高文件读取的效率。
上述服务器包括名称节点、元数据节点和对象存储服务。
上述文件句柄和文件单元确定模块,用于接收客户端发送的目标文件的文件名;通过名称节点将文件名转换为文件句柄;通过元数据节点确定目标文件对应的多个文件单元。
上述名称节点预先存储有文件名与文件句柄的第一映射关系;上述文件句柄和文件单元确定模块,用于通过名称节点基于第一映射关系确定文件名对应的文件句柄。
上述文件句柄和文件单元确定模块,用于确定多个文件单元的信息,其中,文件单元的信息包括文件单元的数据偏移信息和数据长度信息;通过元数据节点基于多个文件单元的信息确定多个文件单元。
上述服务器的布隆过滤器预先存储有文件单元与对象数据的第二映射关系;上述对象数据判断模块,用于基于布隆过滤器存储的第二映射关系确定文件单元是否具有对应的对象数据。
上述对象数据读取模块,还用于如果否,取消读取文件句柄和文件单元对应的对象数据的步骤。
上述元数据节点预先存储有文件句柄、文件单元和对象信息的第三映射关系;上述对象数据读取模块,用于通过元数据节点基于第三映射关系读取文件句柄和文件单元对应的对象信息;基于对象信息从对象存储服务读取对象数据。
参见图5所示的另一种文件读取装置的结构示意图,该文件读取装置还包括:目标文件组合模块45,与对象数据读取模块43连接,目标文件组合模块45,用于将读取的对象数据组合为目标文件;将目标文件发送至客户端。
本发明实施例所提供的文件读取装置,其实现原理及产生的技术效果和前述文件读取方法实施例相同,为简要描述,文件读取装置实施例部分未提及之处,可参考前述文件读取方法实施例中相应内容。
本发明实施例还提供了一种电子设备,用于运行上述文件读取方法;参见图6所示的一种电子设备的结构示意图,该电子设备包括存储器100和处理器101,其中,存储器100用于存储一条或多条计算机指令,一条或多条计算机指令被处理器101执行,以实现上述文件读取方法。
进一步地,图6所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述文件读取方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的文件读取方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和/或装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种文件读取方法,其特征在于,应用于服务器,所述服务器与客户端通信连接,所述方法包括:
确定所述客户端待读取的目标文件对应的文件句柄和多个文件单元;
对于每个所述文件单元,判断所述文件单元是否具有对应的对象数据;
如果是,读取所述文件句柄和所述文件单元对应的对象数据;
将读取的所述对象数据发送至所述客户端,以使所述客户端将所述文件数据组合为所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述服务器包括名称节点、元数据节点和对象存储服务。
3.根据权利要求2所述的方法,其特征在于,确定所述客户端待读取的目标文件对应的文件句柄和多个文件单元的步骤,包括:
接收客户端发送的目标文件的文件名;
通过所述名称节点将所述文件名转换为文件句柄;
通过所述元数据节点确定所述目标文件对应的多个文件单元。
4.根据权利要求3所述的方法,其特征在于,所述名称节点预先存储有文件名与文件句柄的第一映射关系;通过所述名称节点将所述文件名转换为文件句柄的步骤,包括:
通过所述名称节点基于所述第一映射关系确定所述文件名对应的文件句柄。
5.根据权利要求3所述的方法,其特征在于,通过所述元数据节点确定所述目标文件对应的多个文件单元的步骤,包括:
确定多个所述文件单元的信息,其中,所述文件单元的信息包括文件单元的数据偏移信息和数据长度信息;
通过所述元数据节点基于多个所述文件单元的信息确定多个所述文件单元。
6.根据权利要求1所述的方法,其特征在于,所述服务器的布隆过滤器预先存储有文件单元与对象数据的第二映射关系;判断所述文件单元是否具有对应的对象数据的步骤,包括:
基于所述布隆过滤器存储的第二映射关系确定所述文件单元是否具有对应的对象数据。
7.根据权利要求1所述的方法,其特征在于,判断所述文件单元是否具有对应的对象数据的步骤之后,所述方法还包括:
如果否,取消所述读取所述文件句柄和所述文件单元对应的对象数据的步骤。
8.根据权利要求2所述的方法,其特征在于,所述元数据节点预先存储有文件句柄、文件单元和对象信息的第三映射关系;读取所述文件句柄和所述文件单元对应的对象数据的步骤,包括:
通过所述元数据节点基于所述第三映射关系读取所述文件句柄和所述文件单元对应的对象信息;
基于所述对象信息从所述对象存储服务读取对象数据。
9.根据权利要求1所述的方法,其特征在于,读取所述文件句柄和所述文件单元对应的对象数据的步骤之后,所述方法还包括:
将读取的所述对象数据组合为所述目标文件;
将所述目标文件发送至所述客户端。
10.一种文件读取装置,其特征在于,应用于服务器,所述服务器与客户端通信连接,所述装置包括:
文件句柄和文件单元确定模块,用于确定所述客户端待读取的目标文件对应的文件句柄和多个文件单元;
对象数据判断模块,用于对于每个所述文件单元,判断所述文件单元是否具有对应的对象数据;
对象数据读取模块,用于如果是,读取所述文件句柄和所述文件单元对应的对象数据;
对象数据发送模块,用于将读取的所述对象数据发送至所述客户端,以使所述客户端将所述文件数据组合为所述目标文件。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1-9任一项所述的文件读取方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使处理器实现权利要求1-9任一项所述的文件读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210028391.2A CN114356850A (zh) | 2022-01-11 | 2022-01-11 | 文件读取方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210028391.2A CN114356850A (zh) | 2022-01-11 | 2022-01-11 | 文件读取方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356850A true CN114356850A (zh) | 2022-04-15 |
Family
ID=81109625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210028391.2A Pending CN114356850A (zh) | 2022-01-11 | 2022-01-11 | 文件读取方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356850A (zh) |
-
2022
- 2022-01-11 CN CN202210028391.2A patent/CN114356850A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10747951B2 (en) | Webpage template generating method and server | |
US11876909B2 (en) | Verification system and method for chaining data | |
CN111858520B (zh) | 一种区块链节点数据分离存储的方法和装置 | |
CN111159219B (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
CN110704439B (zh) | 数据存储方法及装置 | |
CN111008200A (zh) | 数据查询方法、装置和服务器 | |
CN113609347A (zh) | 数据存储及查询方法、装置及数据库系统 | |
CN110413711B (zh) | 一种差异数据获取方法及其存储介质 | |
CN111782707A (zh) | 一种数据查询方法及系统 | |
CN111061681A (zh) | 一种基于大小写不敏感的目录分片方法、装置及存储介质 | |
CN107741968B (zh) | 一种文件检索的方法、系统、装置及计算机可读存储介质 | |
CN114356850A (zh) | 文件读取方法、装置和电子设备 | |
CN116841978A (zh) | 基于分布式文件系统的路径解析方法、装置及存储介质 | |
CN115391355B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111506750A (zh) | 图片检索方法、装置及电子设备 | |
CN111310076A (zh) | 地理位置查询方法、装置、介质及电子设备 | |
CN113505142B (zh) | 数据查询方法、装置及服务器 | |
CN113342813B (zh) | 键值数据处理方法、装置、计算机设备及可读存储介质 | |
CN115442439A (zh) | 分布式缓存集群管理方法、系统、终端及存储介质 | |
CN114816219A (zh) | 数据写入和读取方法、装置及数据读写系统 | |
CN111382120B (zh) | 一种小文件管理方法、系统和计算机设备 | |
CN113051498A (zh) | 一种基于多重布隆过滤的url去重方法及系统 | |
CN110647568A (zh) | 一种图数据库数据转化为编程语言数据方法及装置 | |
CN115905120B (zh) | 档案文件管理方法、装置、计算机设备和存储介质 | |
CN118337873A (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 |