CN110532237B - 格式数据文件的并发处理方法、装置及*** - Google Patents
格式数据文件的并发处理方法、装置及*** Download PDFInfo
- Publication number
- CN110532237B CN110532237B CN201910837014.1A CN201910837014A CN110532237B CN 110532237 B CN110532237 B CN 110532237B CN 201910837014 A CN201910837014 A CN 201910837014A CN 110532237 B CN110532237 B CN 110532237B
- Authority
- CN
- China
- Prior art keywords
- file
- file fragment
- content
- format
- fragment
- 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
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/14—Details of searching files based on file metadata
-
- 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
- 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/1858—Parallel file systems, i.e. file systems supporting multiple processors
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)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供格式数据文件的并发处理方法、装置及***,客户端获取服务端发送的文件分片元信息;客户端从格式记录文件中利用缓存窗口逐步读取文件分片元信息对应的文件分片内容,使得读取的文件分片内容于文件分片起始处确保多读取一个分隔符长度内容,于文件分片末尾处至少多读取一个缓存窗口的内容;在已读取的文件分片内容中逐条解析文件分片内容并删除首条格式记录,当文件分片已解析的内容总长度等于文件分片长度且文件分片末条格式记录解析尚未遇到分隔符时,继续解析直到解析到分隔符时停止解析操作,将解析操作后多条格式记录确定为文件分片的格式记录集。本申请能并发读取格式数据文件又能保证格式记录的完整性,提高速率时保证可靠性。
Description
技术领域
本申请涉及通信技术领域,尤其涉及格式数据文件的并发处理方法、装置及***。
背景技术
在异构平台之间通常会采用格式数据文件进行数据交互,格式数据文件由多条格式记录组成,是一类专门用于存放格式记录的文件。格式数据文件中不同格式记录之间采用预定义的分隔符(例如换行符[\n])分隔。
随着通信技术的逐步发展,格式数据文件的数据量也逐渐增加(例如,逐渐增加为上百G数据量乃至上T数据量)。为了方便异构平台之间传输格式数据文件,通常会对格式数据文件进行分片处理。
目前一种分片处理方案为,客户端对格式数据文件执行分片读取操作,调用多个线程并发读取格式数据文件的多个文件分片并缓存至客户端本地。但是本方案在执行读取操作时并未考虑格式记录的完整性,由于不同格式记录的大小不一,所以本方案基于固定窗口大小来读取文件分片,会导致读取到的部分格式记录是不完整的,可靠性较低。
目前另一种分片处理方案为,客户端对格式数据文件进行串行读取操作,每次读取时会读取完整的格式记录。本方案中虽然可以保证格式记录的完整性,但是串行处理的速度较低。
发明内容
鉴于此,本申请提供一种格式数据文件的并发处理方法、装置及***,可以并发读取格式数据文件又能保证格式记录的完整性,提高速率同时保证可靠性。
为了实现上述目的,本申请提供了下述技术特征:
一种格式数据文件的并发处理方法,应用于客户端,包括:
在服务端对格式记录文件执行逻辑分片处理获得多个文件分片元信息后,获取所述服务端发送的一文件分片元信息;
从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取到的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;
解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析,直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;
将所述多条格式记录确定为所述文件分片对应的格式记录集。
可选的,所述文件分片元信息包括:
用于唯一表示所述格式记录文件的文件标识;
用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;
用于表示一文件分片字节长度的文件分片长度;
用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;
用于表示分隔符样式或形式的分隔符样式。
可选的,从所述服务端存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容,包括:
依据所述文件标识确定所述格式记录文件;
依据服务端设置的配置文件确定缓存窗口的大小和分隔符长度;
将所述文件分片起始位移减去分隔符长度,设置为缓存窗口读取所述文件分片的起始位置;
从所述起始位置开始,循环利用所述缓存窗口读取所述格式记录文件的内容,直到多个缓存窗口读取内容总长度大于文件分片长度,以确定到达所述文件分片的末尾;
在所述文件分片的末尾处追加读取一个缓存窗口的内容;
将针对所述文件分片所读取的内容确定为文件分片内容。
可选的,还包括:
若所述文件分片为所述格式记录文件的第一个分片,则在利用缓存窗口第一次读取该文件分片时,将格式记录文件的起始位置设置为缓存窗口读取所述文件分片的起始位置,并于缓存窗口开始处补充一分隔符。
可选的,所述解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析,直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录,包括:
按字节识别所述文件分片内容,并统计解析内容长度;
当识别到分隔符时生成一条格式记录,并丢弃该文件分片的首条生成的格式记录;
循环解析所述文件分片内容并统计解析内容长度;
当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;
获得解析操作后的多条格式记录。
可选的,还包括:
向所述服务端反馈所述文件分片的读取进度信息;
向所述服务端反馈所述文件分片的解析进度信息;
其中,所述读取进度信息包括:文件标识、文件分片序号和文件分片的读取结果;所述解析进度信息包括:文件标识、文件分片序号和文件分片的解析结果。
可选的,还包括:
在所述文件分片读取结果为失败或解析结果为失败后,接收服务端发送的所述文件分片的文件分片元信息,重新基于文件分片元信息执行读取操作和解析操作。
一种格式数据文件的并发处理装置,集成于客户端,包括:
文件分片内容传输模块,用于在服务端对格式记录文件执行逻辑分片处理获得多个文件分片元信息后,获取所述服务端发送的一文件分片元信息;从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取到的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;
文件内容解析模块,用于解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集。
一种格式数据文件的并发处理***,包括:
文件存储设备,用于存储格式记录文件;
服务端,用于接收对所述格式记录文件的分片请求,对所述格式记录文件执行逻辑分片处理获得多个文件分片元信息,将所述多个文件分片信息分发至客户端集群中的客户端;
客户端集群中的客户端,用于获取所述服务端发送的一文件分片元信息;从所述文件存储设备存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集;将所述格式记录集发送至后端数据消费方;
后端数据消费方,用于获得多个客户端发送的格式记录集,合并多条格式记录集,获得所述格式记录文件。
一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行格式数据文件的并发处理方法。
一种存储介质,所述存储介质用于存储软件程序,该软件程序可用于实现格式数据文件的并发处理方法。
通过以上技术手段,可以实现以下有益效果:
本申请可以从格式记录文件中,客户端利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少确保多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容,以此方式来保证读取文件分片时能够完整的读取到格式记录起始位置和结尾位置。
本申请执行解析所述文件分片内容并删除首条格式记录,当文件分片已解析的内容总长度等于文件分片长度且文件分片末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多个格式记录,以此来删除文件分片起始处不完整的格式记录,并保证文件分片末尾处是完整的格式记录。
通过本申请可以并发读取格式数据文件又能保证格式记录的完整性,提高速率同时保证可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种格式数据文件的并发处理***的结构示意图;
图2为本申请实施例公开的一种格式数据文件的并发处理方法的流程图;
图3为本申请实施例公开的一种格式数据文件的并发处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请的实施例,提供一种格式数据文件的并发处理***。参见图1,包括:
文件存储设备100,用于存储格式记录文件;
服务端200,用于接收对所述格式记录文件的分片请求,对所述格式记录文件执行逻辑分片处理获得多个文件分片元信息,将所述多个文件分片信息分发至客户端集群中的客户端;
客户端集群中的客户端300,用于获取所述服务端发送的一文件分片元信息;从所述文件存储设备存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;解析所述文件分片内容并删除首条格式记录,当文件分片已解析的内容总长度等于文件分片长度时且文件分片末条格式记录解析尚未遇到分隔符继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集;将所述格式记录集发送至后端数据消费方;
后端数据消费方400,用于获得多个客户端发送的格式记录集,合并多个格式记录集,获得所述格式记录文件。
其中,服务端200可以包括:分片处理模块201、分片元信息分发模块202和分片处理控制器模块203。
各个客户端300可以包括:文件分片内容传输模块301和文件内容解析模块302。
下面详细介绍本申请的执行过程,参见图2,提供了一种格式数据文件的并发处理方法,可以包括以下步骤:
步骤S201:服务端200接收对所述格式记录文件的分片请求。
服务端接收请求方发送的对格式记录文件的分片请求,分片处理模块201开始对格式记录文件进行文件分片处理。
服务端预先存储有配置文件,配置文件包括:分片策略(定长策略或定量策略)、分片最小长度(定量策略下生效)、分片最大长度(定长策略下生效)、分片元信息发送方式(消息队列或远程过程调用协议方式)、缓存窗口大小和分隔符样式。
步骤S202:服务端200对所述格式记录文件执行逻辑分片处理获得多个文件分片元信息。
分片处理模块201依据配置文件的不同配置可以采用两种不同分片策略:
第一种策略指定分片长度:于配置文件中设定分片最大长度,按此分片最大长度对格式记录文件进行分片计算,最后一个文件分片长度取实际剩余内容长度,采用此方式将格式记录文件从逻辑层面划分为多个文件分片。
第二种策略指定分片数量:于配置文件中设定文件分片数量,通过[文件总长度/文件分片数量]计算得到文件分片长度,然后按此文件分片长度进行分片计算,采用此方式将格式记录文件从逻辑层面划分为多个文件分片。
关于文件分片处理已为成熟技术,在此不再详细赘述。
不管是指定分片长度拆分,还是指定分片数量拆分,在拆分过程中均未考虑格式记录的完成性,因此拆分后会导致一个文件分片的开头和结尾处很大程度上会产生不完整的格式记录。
在执行分片处理后,为每个文件分片生成文件分片元信息。其中,文件分片元信息包括:
用于唯一表示所述格式记录文件的文件标识;
用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;
用于表示一文件分片字节长度的文件分片长度;
用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;
用于表示分隔符样式或形式的分隔符样式。
步骤S203:服务端200将所述多个文件分片信息分发至客户端集群中的客户端。
分片处理模块201将多个文件分片元信息传输至分片元信息分发模块202。分片元信息分发模块202通过消息队列或远程过程调用协议方式,将文件分片元信息分发给客户端集群中的各个客户端进程。
可以理解的是,分片信息分发模块202可以通过负载均衡方式分发文件分片元信息至各个客户端进程。
由于各个客户端处理过程是一致的,所以以一个客户端为例对客户端的处理过程进行说明。鉴于客户端一个进程处理一个文件分片元信息,其余进程处理文件分片元信息的过程也是一致的,所以一个文件分片元信息为例进行详细说明。
步骤S204:客户端获取所述服务端发送的一文件分片元信息。
客户端接收一文件分片元信息后,传输至分片文件内容传输模块301。
其中,文件分片元信息包括:用于唯一表示所述格式记录文件的文件标识;用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;用于表示一文件分片字节长度的文件分片长度;用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;用于表示分隔符样式或形式的分隔符样式。
步骤S205:从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容。
S1:依据所述文件标识确定所述格式记录文件。
依据文件标识从文件存储设备中查询到格式记录文件的存储位置。
S2:依据服务端设置的配置文件确定缓存窗口的大小和分隔符长度;
从服务端的配置文件中获取缓存窗口的大小,和分隔符长度。
缓存窗口长度小于文件分片长度,所以后续需要利用缓存窗口循环读取多次才能够完成文件分片的读取。
分隔符长度为分隔符所占的字节长度,以分隔符为回车符为例,占用1个字节长度。
S3:将所述文件分片起始位移减去分隔符长度,设置为缓存窗口读取所述文件分片的起始位置;
可以理解的是,不管是指定分片长度拆分,还是指定分片数量拆分,在拆分过程中均未考虑格式记录的完成性,因此拆分后会导致一个文件分片的开头和结尾处很大程度上会产生不完整的格式记录。
以一个文件分片的起始位置为例,拆分后会有以下情况:
第一种情况:文件分片起始位置位于一条格式记录中。
(1)文件分片起始位置刚好位于分隔符之前,即起始位置刚好位于一条格式记录的最后末尾处。
(2)文件分片起始位置刚好位于第一个字节之后,即起始位置刚好位于一条格式记录的开头处。
(3)文件分片起始位置位于一条格式记录的中间位置处。
第二种情况:文件分片起始位置刚好介于两条格式记录之间。
该情况出现概率比较小,不过也是可以出现情况,文件起始位置刚好位于前一条格式记录的分隔符之后,下一条格式记录之前,使得格式记录是完整的。
鉴于大多数情况下出现的是第一种情况,也即文件分片起始处是不完整的格式记录,所以在后续步骤S206中会删除首条格式记录,也即删除不完整的格式记录。
由于第二种情况下,首条格式记录是完整的,为了保护第二情况下首条完整的格式记录,将所述文件分片起始位移-分隔符长度,设置为缓存窗口读取所述文件分片的起始位置,以便在第二种情况下,可以至少多读取一个分隔符长度,以便补充一个不完整格式记录,方便后续步骤S206中删除首条格式记录时是删除不完整的格式记录,而非完整的格式记录。
S4:从所述起始位置开始,循环利用所述缓存窗口读取所述格式记录文件,直到多个缓存窗口读取内容总长度大于文件分片长度,以确定到达所述文件分片的末尾;
从文件存储设备中读取格式记录文件,在读取时从所述文件分片的起始位置处开始读取,由于缓存窗口大小小于文件分片长度,所以需要循环利用缓存窗口多次读取格式记录文件,并在读取过程中记录读取内容长度。
在读取内容长度大于文件分片长度时,说明经过多次缓存窗口的读取操作,已经到达该文件分片的末尾处。
S5:在所述文件分片的末尾处追加读取一个缓存窗口的内容;
由于在文件末尾处可能会出现不完整记录,所以为了保证格式记录的完整性,此处追加一个缓存窗口,也即再多利用缓存窗口读取下一个文件分片的部分内容,由于多读取一部分内容,所以可以保证该文件分片中文件末尾处格式记录的完整性。
S6:将针对所述文件分片所读取的内容确定为文件分片内容。
将针对文件分片的所有读取内容确定为文件分片内容,由于多读取一部分内容,所以文件分片内容长度大于文件分片长度。
步骤S206:解析所述文件分片内容并删除首条格式记录,当解析内容长度大于文件分片长度时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;
S1:按字节识别所述文件分片内容,并统计解析内容长度。
S2:当识别到分隔符时生成一条格式记录,并丢弃首条生成的格式记录。
结合步骤S205可以得知,第一条格式记录是不完整的格式记录,所以丢弃首条生成的格式记录,以保证格式记录的完整性。
S3:循环解析所述文件内容并统计解析内容长度;
S4:当解析内容长度大于文件分片长度的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;
当解析内容长度大于文件分片长度的情况下,说明解析到文件分片末尾处,为了保证最后一条格式记录的完整性,会继续执行解析操作,直到识别到分隔符,即将最后一条格式记录补充完整。
S5:获得解析操作后的多条格式记录。
步骤S207:客户端将所述多条格式记录确定为所述文件分片对应的格式记录集。
本实施例中通过客户端一些处理操作,可以保证文件分片对应的多条格式记录均是完整的格式记录。
步骤S208:客户端将所述格式记录集发送至后端数据消费方。
客户端将解析所得的格式记录通过消息队列(或者进程间RPC通讯、线程间API调用)输出至后端数据消费方。在输出格式记录的过程中,可以携带格式记录内容、文件分片序号、分片内记录序号信息,以表示各个格式记录在完整格式记录问文件中的具体顺序位置。
步骤S209:后端数据消费方获得多条客户端发送的格式记录集,合并多条格式记录集,获得所述格式记录文件。
后端数据消费方依据多条客户端发送的格式记录集以及格式记录内容、文件分片序号、分片内记录序号信息,按顺序合并格式记录,从而获得格式记录文件。
通过上述技术特征可知本申请具有以下有益效果:
本申请可以从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容,以此方式来保证读取文件分片时能够完整的读取到格式记录起始位置和结尾位置。
本申请执行解析所述文件分片内容并删除首条格式记录,当解析内容长度大于文件分片长度时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录,以此来删除不完整的格式记录,并保证文件末尾处是完整的格式记录。
通过本申请可以并发读取格式数据文件又能保证格式记录的完整性,提高速率同时保证可靠性。
根据本申请提供的另一个实施例,客户端在读取文件分片的同时可以向所述服务端反馈所述文件分片的读取进度信息;
客户端在解析文件分片的同时,可以向所述服务端反馈所述文件分片的解析进度信息;
其中,所述读取进度信息包括:文件标识、文件分片序号和文件分片的读取结果;所述解析进度信息包括:文件标识、文件分片序号和文件分片的解析结果。
服务端200的分片处理控制器模块203接收并记录文件分片的读取进度信息和文件分片的解析进度信息。当发现文件分片的进度状态存在读取失败或解析失败时,可以向客户端发起该分片的重新处理指令,确保所有的文件分片能够被完整、可靠的进行处理。
也即,在所述文件分片读取结果为失败或解析结果为失败后,接收服务端发送的所述文件分片的文件分片元信息,重新基于文件分片元信息执行读取操作和解析操作。
根据本申请提供的另一个实施例,分片元信息分发模块在分发文件分片元信息之外,还可以负责客户端集群中各个客户端的负载均衡;当客户端集群资源处理能力不足时,可以进行客户端扩展。客户端扩展过程可以通过以下步骤完成:
S1:管理人员通过分片处理控制器模块查询分发分片的消息队列是否存在积压,且积压数量是否超出正常阈值。
S2:当队列积压严重时,表示处理分片的客户端集群处理能力不足以在估算范围内完成文件处理。此时,管理人员可以通过运维平台为文件处理任务分配更多处理客户端资源。
格式记录文件中单条格式记录的大小和处理时间是可测的,因此,管理人员可以根据格式记录文件大小除以记录大小估算出格式记录数量,然后根据格式记录文件的处理时间来计算单位时间需要处理的记录数量;最后根据单台处理客户端的吞吐量来计算所需客户端数量。
S3:当新分配的处理客户端加入集群后,消息队列会将积压的分片任务推送至新加入的处理客户端。
S4:格式记录文件处理完毕后,管理人员可以通过运维平台释放新增资源。
通过上述技术内容可知,本申请具有以下有益效果:
本方案可以并发处理格式数据文件,并且,在并发处理格式数据文件时,能够保证格式记录的完整性,在保证格式文件处理速率同时也能够保证可靠性。
本方案可以根据格式记录文件大小弹性调整处理客户端的数量,确保在可控的时间范围内完成对超大格式记录文件的协同处理工作。
本方案可以控制客户端的内存资源使用,解析成功的文件内容便可以淘汰出本地内存,交由后端数据消费方处理,缓解客户端的内存压力。
本方案可以跟踪文件分片处理进度,对处理失败的文件分片进行干预或重做,可以进一步提高格式记录文件处理的可靠性。
参见图3,本申请还提供了一种格式数据文件的并发处理装置,本装置集成于客户端,包括:
文件分片内容传输模块31,用于在服务端对格式记录文件执行逻辑分片处理获得多个文件分片元信息后,获取所述服务端发送的一文件分片元信息;从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取到的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;
文件内容解析模块32,用于解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集。
其中,所述文件分片元信息包括:
用于唯一表示所述格式记录文件的文件标识;
用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;
用于表示一文件分片字节长度的文件分片长度;
用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;
用于表示分隔符样式或形式的分隔符样式。
其中,文件分片内容传输模块31,包括:
确定文件单元311,用于依据所述文件标识确定所述格式记录文件;
确定缓存窗口单元312,用于依据服务端设置的配置文件确定缓存窗口的大小和分隔符长度;
确定起始位置单元313,用于将所述文件分片起始位移减去分隔符长度,设置为缓存窗口读取所述文件分片的起始位置;
循环读取单元314,用于从所述起始位置开始,循环利用所述缓存窗口读取所述格式记录文件的内容,直到多个缓存窗口读取内容总长度大于文件分片长度,以确定到达所述文件分片的末尾;
追加单元315,用于在所述文件分片的末尾处追加读取一个缓存窗口的内容;
确定内容单元316,用于将针对所述文件分片所读取的内容确定为文件分片内容。
其中,格式数据文件的并发处理装置还包括:
特殊处理单元317,用于若所述文件分片为所述格式记录文件的第一个分片,则在利用缓存窗口第一次读取该文件分片时,将格式记录文件的起始位置设置为缓存窗口读取所述文件分片的起始位置,并于缓存窗口开始处补充一分隔符。
其中,所述文件内容解析模块32,包括:
识别并统计单元321,用于按字节识别所述文件分片内容,并统计解析内容长度;
丢弃单元322,用于当识别到分隔符时生成一条格式记录,并丢弃该文件分片的首条生成的格式记录;
循环解析单元323,用于循环解析所述文件分片内容并统计解析内容长度;
分隔符识别单元324,用于当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;
获得单元325,用于获得解析操作后的多条格式记录。
其中,格式数据文件的并发处理装置还包括:
读取单元33,用于向所述服务端反馈所述文件分片的读取进度信息;
反馈单元34,用于向所述服务端反馈所述文件分片的解析进度信息;
其中,所述读取进度信息包括:文件标识、文件分片序号和文件分片的读取结果;所述解析进度信息包括:文件标识、文件分片序号和文件分片的解析结果。
重读单元35,用于在所述文件分片读取结果为失败或解析结果为失败后,接收服务端发送的所述文件分片的文件分片元信息,重新基于文件分片元信息执行读取操作和解析操作。
本申请还提供了一种格式数据文件的并发处理***,其特征在于,包括:
文件存储设备100,用于存储格式记录文件;
服务端200,用于接收对所述格式记录文件的分片请求,对所述格式记录文件执行逻辑分片处理获得多个文件分片元信息,将所述多个文件分片信息分发至客户端集群中的客户端;
客户端集群中的客户端300,用于获取所述服务端发送的一文件分片元信息;从所述文件存储设备存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集;将所述格式记录集发送至后端数据消费方;
后端数据消费方400,用于获得多个客户端发送的格式记录集,合并多条格式记录集,获得所述格式记录文件。
本申请还提供了一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如图1所示的格式数据文件的并发处理方法。
本申请还提供了一种存储介质,所述存储介质用于存储软件程序,该软件程序可用于实现如图1所示的格式数据文件的并发处理方法。
本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种格式数据文件的并发处理方法,其特征在于,应用于客户端,包括:
在服务端对格式记录文件执行逻辑分片处理获得多个文件分片元信息后,获取所述服务端发送的一文件分片元信息;
从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取到的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;
解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析,直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;
将所述多条格式记录确定为所述文件分片对应的格式记录集;
其中,所述解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析,直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录,包括:
按字节识别所述文件分片内容,并统计解析内容长度;
当识别到分隔符时生成一条格式记录,并丢弃该文件分片的首条生成的格式记录;
循环解析所述文件分片内容并统计解析内容长度;
当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;
获得解析操作后的多条格式记录。
2.如权利要求1所述的方法,其特征在于,所述文件分片元信息包括:
用于唯一表示所述格式记录文件的文件标识;
用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;
用于表示一文件分片字节长度的文件分片长度;
用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;
用于表示分隔符样式或形式的分隔符样式。
3.如权利要求2所述的方法,其特征在于,从所述服务端存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容,包括:
依据所述文件标识确定所述格式记录文件;
依据服务端设置的配置文件确定缓存窗口的大小和分隔符长度;
将所述文件分片起始位移减去分隔符长度,设置为缓存窗口读取所述文件分片的起始位置;
从所述起始位置开始,循环利用所述缓存窗口读取所述格式记录文件的内容,直到多个缓存窗口读取内容总长度大于文件分片长度,以确定到达所述文件分片的末尾;
在所述文件分片的末尾处追加读取一个缓存窗口的内容;
将针对所述文件分片所读取的内容确定为文件分片内容。
4.如权利要求3所述的方法,其特征在于,还包括:
若所述文件分片为所述格式记录文件的第一个分片,则在利用缓存窗口第一次读取该文件分片时,将格式记录文件的起始位置设置为缓存窗口读取所述文件分片的起始位置,并于缓存窗口开始处补充一分隔符。
5.如权利要求2所述的方法,其特征在于,还包括:
向所述服务端反馈所述文件分片的读取进度信息;
向所述服务端反馈所述文件分片的解析进度信息;
其中,所述读取进度信息包括:文件标识、文件分片序号和文件分片的读取结果;所述解析进度信息包括:文件标识、文件分片序号和文件分片的解析结果。
6.如权利要求5所述的方法,其特征在于,还包括:
在所述文件分片读取结果为失败或解析结果为失败后,接收服务端发送的所述文件分片的文件分片元信息,重新基于文件分片元信息执行读取操作和解析操作。
7.一种格式数据文件的并发处理装置,其特征在于,集成于客户端,包括:
文件分片内容传输模块,用于在服务端对格式记录文件执行逻辑分片处理获得多个文件分片元信息后,获取所述服务端发送的一文件分片元信息;从格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取到的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;
文件内容解析模块,用于解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集;
所述文件内容解析模块,包括:
识别并统计单元,用于按字节识别所述文件分片内容,并统计解析内容长度;
丢弃单元,用于当识别到分隔符时生成一条格式记录,并丢弃该文件分片的首条生成的格式记录;
循环解析单元,用于循环解析所述文件分片内容并统计解析内容长度;
分隔符识别单元,用于当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;
获得单元,用于获得解析操作后的多条格式记录。
8.如权利要求7所述的装置,其特征在于,所述文件分片元信息包括:
用于唯一表示所述格式记录文件的文件标识;
用于表示一文件分片于所述格式记录文件中排列位置的文件分片序号;
用于表示一文件分片字节长度的文件分片长度;
用于表示一文件分片起始位置相对于所述格式记录文件起始位置偏移量的文件分片起始位移;
用于表示分隔符样式或形式的分隔符样式。
9.如权利要求8所述的装置,其特征在于,文件分片内容传输模块,包括:
确定文件单元,用于依据所述文件标识确定所述格式记录文件;
确定缓存窗口单元,用于依据服务端设置的配置文件确定缓存窗口的大小和分隔符长度;
确定起始位置单元,用于将所述文件分片起始位移减去分隔符长度,设置为缓存窗口读取所述文件分片的起始位置;
循环读取单元,用于从所述起始位置开始,循环利用所述缓存窗口读取所述格式记录文件的内容,直到多个缓存窗口读取内容总长度大于文件分片长度,以确定到达所述文件分片的末尾;
追加单元,用于在所述文件分片的末尾处追加读取一个缓存窗口的内容;
确定内容单元,用于将针对所述文件分片所读取的内容确定为文件分片内容。
10.如权利要求9所述的装置,其特征在于,还包括:
特殊处理单元,用于若所述文件分片为所述格式记录文件的第一个分片,则在利用缓存窗口第一次读取该文件分片时,将格式记录文件的起始位置设置为缓存窗口读取所述文件分片的起始位置,并于缓存窗口开始处补充一分隔符。
11.如权利要求8所述的装置,其特征在于,还包括:
读取单元,用于向所述服务端反馈所述文件分片的读取进度信息;
反馈单元,用于向所述服务端反馈所述文件分片的解析进度信息;
其中,所述读取进度信息包括:文件标识、文件分片序号和文件分片的读取结果;所述解析进度信息包括:文件标识、文件分片序号和文件分片的解析结果。
12.如权利要求11所述的装置,其特征在于,还包括:
重读单元,用于在所述文件分片读取结果为失败或解析结果为失败后,接收服务端发送的所述文件分片的文件分片元信息,重新基于文件分片元信息执行读取操作和解析操作。
13.一种格式数据文件的并发处理***,其特征在于,包括:
文件存储设备,用于存储格式记录文件;
服务端,用于接收对所述格式记录文件的分片请求,对所述格式记录文件执行逻辑分片处理获得多个文件分片元信息,将所述多个文件分片信息分发至客户端集群中的客户端;
客户端集群中的客户端,用于获取所述服务端发送的一文件分片元信息;从所述文件存储设备存储的格式记录文件中,利用缓存窗口逐步读取所述文件分片元信息对应的文件分片的内容,使得读取的文件分片内容于所述文件分片起始处至少多读取一个分隔符长度内容,于所述文件分片末尾处至少多读取一个缓存窗口的内容;解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片末条格式记录解析尚未遇到分隔符时继续解析直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录;将所述多条格式记录确定为所述文件分片对应的格式记录集;将所述格式记录集发送至后端数据消费方;其中,所述解析所述文件分片内容并删除首条格式记录,当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符时继续解析,直到解析到分隔符时停止解析操作,获得解析操作后多条格式记录,包括:按字节识别所述文件分片内容,并统计解析内容长度;当识别到分隔符时生成一条格式记录,并丢弃该文件分片的首条生成的格式记录;循环解析所述文件分片内容并统计解析内容长度;当解析内容长度等于文件分片长度且文件分片的末条格式记录解析尚未遇到分隔符的情况下,继续识别所述文件分片内容直到识别到分隔符时停止解析操作;获得解析操作后的多条格式记录;
后端数据消费方,用于获得多个客户端发送的格式记录集,合并多条格式记录集,获得所述格式记录文件。
14.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如权利要求1~6任一项所述的格式数据文件的并发处理方法。
15.一种存储介质,其特征在于,所述存储介质用于存储软件程序,该软件程序可用于实现如权利要求1~6任一项所述的格式数据文件的并发处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910837014.1A CN110532237B (zh) | 2019-09-05 | 2019-09-05 | 格式数据文件的并发处理方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910837014.1A CN110532237B (zh) | 2019-09-05 | 2019-09-05 | 格式数据文件的并发处理方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532237A CN110532237A (zh) | 2019-12-03 |
CN110532237B true CN110532237B (zh) | 2022-02-08 |
Family
ID=68666946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910837014.1A Active CN110532237B (zh) | 2019-09-05 | 2019-09-05 | 格式数据文件的并发处理方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532237B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256634B (zh) * | 2020-10-14 | 2024-03-26 | 杭州当虹科技股份有限公司 | 一种基于http的低内存大文件解析方法 |
CN112559482B (zh) * | 2020-12-17 | 2022-10-14 | 中国电子科技集团公司第五十二研究所 | 一种基于分布式的二进制数据分类处理方法和*** |
CN114598669B (zh) * | 2022-03-07 | 2024-03-19 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
CN114915622B (zh) * | 2022-05-31 | 2024-01-30 | 广东三维睿新科技有限公司 | 一种web端基于http的文件传输方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651895A1 (en) * | 1993-05-24 | 1995-05-10 | Hughes Aircraft Company | Sequential information integration service for integrating transfer of files or other data entities between a plurality of program modules and a storage in a computer |
CN101140548A (zh) * | 2007-10-23 | 2008-03-12 | 北京握奇数据***有限公司 | 一种卡片操作***对数据文件进行操作的方法及智能卡 |
CN109086307A (zh) * | 2018-06-22 | 2018-12-25 | 阿里巴巴集团控股有限公司 | 文件处理的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621210B2 (en) * | 2016-11-27 | 2020-04-14 | Amazon Technologies, Inc. | Recognizing unknown data objects |
-
2019
- 2019-09-05 CN CN201910837014.1A patent/CN110532237B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651895A1 (en) * | 1993-05-24 | 1995-05-10 | Hughes Aircraft Company | Sequential information integration service for integrating transfer of files or other data entities between a plurality of program modules and a storage in a computer |
CN101140548A (zh) * | 2007-10-23 | 2008-03-12 | 北京握奇数据***有限公司 | 一种卡片操作***对数据文件进行操作的方法及智能卡 |
CN109086307A (zh) * | 2018-06-22 | 2018-12-25 | 阿里巴巴集团控股有限公司 | 文件处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110532237A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532237B (zh) | 格式数据文件的并发处理方法、装置及*** | |
CN107483627B (zh) | 一种文件分发、下载方法、分发服务器、客户端及*** | |
US9514209B2 (en) | Data processing method and data processing device | |
US11190576B2 (en) | File distribution and download method, distribution server, client terminal and system | |
CN105511812B (zh) | 一种存储***大数据优化方法及装置 | |
CN112165436B (zh) | 流量控制方法、装置及*** | |
US9769241B2 (en) | Data transfer device, data transfer method, and program storage medium | |
CN109361772A (zh) | 一种分布式对象存储***中文件上传方法及装置 | |
CN113111043B (zh) | 一种中台源数据文件的处理方法、装置、***及存储介质 | |
US20230185772A1 (en) | Inode number distribution management method for distributed storage system and related component | |
CN112256551A (zh) | 一种远程日志抓取方法、装置、电子设备和存储介质 | |
CN114647698A (zh) | 数据同步方法、装置及计算机存储介质 | |
CN112153132A (zh) | 基于虚拟化管理平台的文件上传方法、装置及设备 | |
CN116016549A (zh) | 数据文件动态分片上传的方法及其*** | |
CN103841144A (zh) | 云存储***、方法、用户端及云存储服务器 | |
CN114020716A (zh) | 对账***中的大文件分布式处理方法及装置 | |
CN110602229A (zh) | 基于动态切片的终端***版本下载方法、装置及*** | |
CN111831954B (zh) | 内容数据更新方法、装置、计算机设备及存储介质 | |
CN115617760B (zh) | 一种大批量文件快速上传的方法 | |
CN115190083B (zh) | 应用于智能设备的数据传输方法及装置 | |
CN108830724B (zh) | 一种资源数据包处理方法及终端设备 | |
CN112100556B (zh) | 优化消息推送方式的方法及其*** | |
CN114979094A (zh) | 一种基于rtp的数据传输方法、装置、设备和介质 | |
CN114328081A (zh) | 一种存储节点性能数据传输方法、装置、设备及介质 | |
CN113111040A (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 |