CN112256634A - 一种基于http的低内存大文件解析方法 - Google Patents
一种基于http的低内存大文件解析方法 Download PDFInfo
- Publication number
- CN112256634A CN112256634A CN202011097223.6A CN202011097223A CN112256634A CN 112256634 A CN112256634 A CN 112256634A CN 202011097223 A CN202011097223 A CN 202011097223A CN 112256634 A CN112256634 A CN 112256634A
- Authority
- CN
- China
- Prior art keywords
- file
- module
- analyzed
- segmentation
- analysis
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 42
- 230000011218 segmentation Effects 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
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/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于http的低内存大文件解析方法。它具体操作步骤如下:通过定义模块定义大文件在分段读取时的分段大小;通过预设置模块设置文件第一次需要解析的标识;通过分段解析模块发送分段请求;通过第一计算模块计算文件内容是否符合预设置模块设置的解析标识;通过处理模块消费解析后的文件并且更新最后一次解析的标识;通过第二计算模块计算文件分段条件;第二计算模块计算完成之后,判断是否继续,如果是则返回分段解析模块,否则结束整个流程。本发明的有益效果是:保证使用较低配置的服务器也能够正常解析大文件,同时能保证解析文件的完整性,并且可以通过算法来排除已解析部分来达到硬件资源最大利用。
Description
技术领域
本发明涉及大文件处理相关技术领域,尤其是指一种基于http的低内存大文件解析方法。
背景技术
在实际的业务场景中,如果要分析GB、TB、PB级别的比如日志等文件时,一般所需的服务器内存要求都特别高,但是内存是有限的,如何在低内存的配置下也能够解决海量数据成了一个难题。目前在解决大文件解析时,基本都是对源文件进行分段存储的方式,影响了源文件的存储结构,且需要对生成源文件的服务进行改造或额外编写脚本进行文件分段。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种达到硬件资源最大利用的基于http的低内存大文件解析方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于http的低内存大文件解析方法,包括定义模块、预设置模块、分段解析模块、第一计算模块、处理模块、第二计算模块,具体操作步骤如下:
(1)通过定义模块定义大文件在分段读取时的分段大小;
(2)通过预设置模块设置文件第一次需要解析的标识;
(3)通过分段解析模块发送分段请求;
(4)通过第一计算模块计算文件内容是否符合预设置模块设置的解析标识;
(5)通过处理模块消费解析后的文件并且更新最后一次解析的标识;
(6)通过第二计算模块计算文件分段条件;
(7)第二计算模块计算完成之后,判断是否继续,如果是则返回步骤(3),否则结束整个流程。
本发明公开了一种基于http的低内存大文件解析方案,包括定义模块、预设置模块、分段解析模块、第一计算模块、处理模块、第二计算模块,通过基于http的低内存大文件解析,从而保证使用较低配置的服务器也能够正常解析大文件,同时能保证解析文件的完整性,并且可以通过算法来排除已解析部分来达到硬件资源最大利用。
作为优选,在步骤(1)中,分段的大小配置在处理模块中会直接映射到内存中,且根据当前服务器最大内存来决定分段大小。
作为优选,在步骤(2)中,预设置模块目的是为了首次解析文件时是否需要把部分内容排除掉,用文件内容中的位置、时间作为解析标识,要能够正确表示出先后顺序即可。
作为优选,在步骤(3)中,基于http的range规则,开始对文件进行附带range头的GET请求,格式为:Range:bytes=起始-结束,其中起始是指从文件第几个字节开始读取,首次从0开始;结束是指读取到文件的第几个字节,需要根据起始位置加上定义模块中定义的分段大小。
作为优选,在步骤(5)中,基于实际的业务场景对分段解析模块解析出的文件内容进行处理,处理完后释放本次的文件内容,并且记录该文件最后一次处理的标识,需要与预设置模块的标识保持一致;由于分段解析模块使用的range规则是按照字节大小来读取的,并不是按行处理,处理模块会根据第二计算模块得出的是否需要下一次分段请求来存储最后一行内容,且本次不处理,等待下次分段时和首行拼接处理。
作为优选,在步骤(6)中,从分段解析模块中获取请求响应头中的Content-Range标识,计算出是否已经对该文件请求完成,由于Content-Range响应头中包括文件的总大小,因此只需要拿分段解析模块中的结束字节与总大小进行对比,如果不匹配需要继续执行分段解析模块同时对起始位置的值进行更新,更新规则为上次结束位置加一;如果匹配则结束本次解析,后续可以根据业务来决定是否对该文件进行持续解析。
本发明的有益效果是:保证使用较低配置的服务器也能够正常解析大文件,同时能保证解析文件的完整性,并且可以通过算法来排除已解析部分来达到硬件资源最大利用。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所述的实施例中,一种基于http的低内存大文件解析方法,包括定义模块、预设置模块、分段解析模块、第一计算模块、处理模块、第二计算模块,具体操作步骤如下:
(1)通过定义模块定义大文件在分段读取时的分段大小;分段的大小配置在处理模块中会直接映射到内存中,且根据具体的消费情况有可能是成倍增长,因此需要根据当前服务器最大内存来决定分段大小。
(2)通过预设置模块设置文件第一次需要解析的标识;预设置模块目的是为了首次解析文件时是否需要把部分内容排除掉,比如之前已解析的或一些无用数据,可以用文件内容中的位置、时间等作为解析标识,要能够正确表示出先后顺序即可。
(3)通过分段解析模块发送分段请求;基于http的range规则,开始对文件进行附带range头的GET请求,格式为:Range:bytes=起始-结束,其中起始是指从文件第几个字节开始读取,首次从0开始;结束是指读取到文件的第几个字节,需要根据起始位置加上定义模块中定义的分段大小。
(4)通过第一计算模块计算文件内容是否符合预设置模块设置的解析标识;由于预设置模块及处理模块均有写该文件最后解析的标识,因此第一计算模块需要根据该标识计算出是否符合条件,比如:如果是时间则判断时间是否较新、如果是位置则判断位置是否较前。
(5)通过处理模块消费解析后的文件并且更新最后一次解析的标识;基于实际的业务场景对分段解析模块解析出的文件内容进行处理,比如整理入库等,处理完后释放本次的文件内容,并且记录该文件最后一次处理的标识,需要与预设置模块的标识保持一致;由于分段解析模块使用的range规则是按照字节大小来读取的,并不是按行处理,但是一般文件处理都是每行处理,这就会导致分段解析模块读取到的最后一行有可能是不完整的,这段不完整的内容与下次分段解析模块读取到的第一行合并在一起才是完整的一行,才能够让业务正确解析,为了保证这种完整性,处理模块会根据第二计算模块得出的是否需要下一次分段请求来存储最后一行内容,且本次不处理,等待下次分段时和首行拼接处理。
(6)通过第二计算模块计算文件分段条件;从分段解析模块中获取请求响应头中的Content-Range标识,计算出是否已经对该文件请求完成,由于Content-Range响应头中包括文件的总大小,因此只需要拿分段解析模块中的结束字节与总大小进行对比,如果不匹配需要继续执行分段解析模块同时对起始位置的值进行更新,更新规则为上次结束位置加一;如果匹配则结束本次解析,后续可以根据业务来决定是否对该文件进行持续解析。
(7)第二计算模块计算完成之后,判断是否继续,如果是则返回步骤(3),否则结束整个流程。
上述方法已应用于平台的数据统计模块中,在低配置服务器上可以稳定持续解析大文件日志。本发明公开了一种基于http的低内存大文件解析方案,包括定义模块、预设置模块、分段解析模块、第一计算模块、处理模块、第二计算模块,通过基于http的低内存大文件解析,从而保证使用较低配置的服务器也能够正常解析大文件,同时能保证解析文件的完整性,并且可以通过算法来排除已解析部分来达到硬件资源最大利用。
java版本伪代码示例(解析nginx日志为例):
Claims (6)
1.一种基于http的低内存大文件解析方法,其特征是,包括定义模块、预设置模块、分段解析模块、第一计算模块、处理模块、第二计算模块,具体操作步骤如下:
(1)通过定义模块定义大文件在分段读取时的分段大小;
(2)通过预设置模块设置文件第一次需要解析的标识;
(3)通过分段解析模块发送分段请求;
(4)通过第一计算模块计算文件内容是否符合预设置模块设置的解析标识;
(5)通过处理模块消费解析后的文件并且更新最后一次解析的标识;
(6)通过第二计算模块计算文件分段条件;
(7)第二计算模块计算完成之后,判断是否继续,如果是则返回步骤(3),否则结束整个流程。
2.根据权利要求1所述的一种基于http的低内存大文件解析方法,其特征是,在步骤(1)中,分段的大小配置在处理模块中会直接映射到内存中,且根据当前服务器最大内存来决定分段大小。
3.根据权利要求1所述的一种基于http的低内存大文件解析方法,其特征是,在步骤(2)中,预设置模块目的是为了首次解析文件时是否需要把部分内容排除掉,用文件内容中的位置、时间作为解析标识,要能够正确表示出先后顺序即可。
4.根据权利要求1所述的一种基于http的低内存大文件解析方法,其特征是,在步骤(3)中,基于http的range规则,开始对文件进行附带range头的GET请求,格式为:Range:bytes=起始-结束,其中起始是指从文件第几个字节开始读取,首次从0开始;结束是指读取到文件的第几个字节,需要根据起始位置加上定义模块中定义的分段大小。
5.根据权利要求1所述的一种基于http的低内存大文件解析方法,其特征是,在步骤(5)中,基于实际的业务场景对分段解析模块解析出的文件内容进行处理,处理完后释放本次的文件内容,并且记录该文件最后一次处理的标识,需要与预设置模块的标识保持一致;由于分段解析模块使用的range规则是按照字节大小来读取的,并不是按行处理,处理模块会根据第二计算模块得出的是否需要下一次分段请求来存储最后一行内容,且本次不处理,等待下次分段时和首行拼接处理。
6.根据权利要求1所述的一种基于http的低内存大文件解析方法,其特征是,在步骤(6)中,从分段解析模块中获取请求响应头中的Content-Range标识,计算出是否已经对该文件请求完成,由于Content-Range响应头中包括文件的总大小,因此只需要拿分段解析模块中的结束字节与总大小进行对比,如果不匹配需要继续执行分段解析模块同时对起始位置的值进行更新,更新规则为上次结束位置加一;如果匹配则结束本次解析,后续可以根据业务来决定是否对该文件进行持续解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011097223.6A CN112256634B (zh) | 2020-10-14 | 2020-10-14 | 一种基于http的低内存大文件解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011097223.6A CN112256634B (zh) | 2020-10-14 | 2020-10-14 | 一种基于http的低内存大文件解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256634A true CN112256634A (zh) | 2021-01-22 |
CN112256634B CN112256634B (zh) | 2024-03-26 |
Family
ID=74243550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011097223.6A Active CN112256634B (zh) | 2020-10-14 | 2020-10-14 | 一种基于http的低内存大文件解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256634B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077239A (zh) * | 2013-01-10 | 2013-05-01 | 上海电力学院 | 基于云渲染的iFrame 嵌入式Web3D系统 |
CN103246700A (zh) * | 2013-04-01 | 2013-08-14 | 厦门市美亚柏科信息股份有限公司 | 基于HBase的海量小文件低延时存储方法 |
CN104602138A (zh) * | 2015-01-30 | 2015-05-06 | 青岛海信电器股份有限公司 | 一种使流媒体服务器支持hls协议的方法及装置 |
CN104778010A (zh) * | 2014-01-13 | 2015-07-15 | 内蒙古近远信息技术有限责任公司 | 基于云存储平台的媒体数据高效访问预取方法 |
CN106446610A (zh) * | 2016-08-31 | 2017-02-22 | 福建天泉教育科技有限公司 | 解析PPT中内嵌的swf文件的方法及系统 |
CN106557535A (zh) * | 2016-06-23 | 2017-04-05 | 哈尔滨安天科技股份有限公司 | 一种大数据级Pcap文件的处理方法及系统 |
CN107436929A (zh) * | 2017-07-13 | 2017-12-05 | 中国物品编码中心 | 可扩展标记语言xml文件解析方法及装置 |
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
CN108763930A (zh) * | 2018-04-11 | 2018-11-06 | 哈尔滨工程大学 | 基于最小缓存模型的web页面流式解析方法 |
CN110532237A (zh) * | 2019-09-05 | 2019-12-03 | 恒生电子股份有限公司 | 格式数据文件的并发处理方法、装置及系统 |
CN110750960A (zh) * | 2018-07-05 | 2020-02-04 | 武汉斗鱼网络科技有限公司 | 一种配置文件的解析方法、存储介质、电子设备及系统 |
-
2020
- 2020-10-14 CN CN202011097223.6A patent/CN112256634B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
CN103077239A (zh) * | 2013-01-10 | 2013-05-01 | 上海电力学院 | 基于云渲染的iFrame 嵌入式Web3D系统 |
CN103246700A (zh) * | 2013-04-01 | 2013-08-14 | 厦门市美亚柏科信息股份有限公司 | 基于HBase的海量小文件低延时存储方法 |
CN104778010A (zh) * | 2014-01-13 | 2015-07-15 | 内蒙古近远信息技术有限责任公司 | 基于云存储平台的媒体数据高效访问预取方法 |
CN104602138A (zh) * | 2015-01-30 | 2015-05-06 | 青岛海信电器股份有限公司 | 一种使流媒体服务器支持hls协议的方法及装置 |
CN106557535A (zh) * | 2016-06-23 | 2017-04-05 | 哈尔滨安天科技股份有限公司 | 一种大数据级Pcap文件的处理方法及系统 |
CN106446610A (zh) * | 2016-08-31 | 2017-02-22 | 福建天泉教育科技有限公司 | 解析PPT中内嵌的swf文件的方法及系统 |
CN107436929A (zh) * | 2017-07-13 | 2017-12-05 | 中国物品编码中心 | 可扩展标记语言xml文件解析方法及装置 |
CN108763930A (zh) * | 2018-04-11 | 2018-11-06 | 哈尔滨工程大学 | 基于最小缓存模型的web页面流式解析方法 |
CN110750960A (zh) * | 2018-07-05 | 2020-02-04 | 武汉斗鱼网络科技有限公司 | 一种配置文件的解析方法、存储介质、电子设备及系统 |
CN110532237A (zh) * | 2019-09-05 | 2019-12-03 | 恒生电子股份有限公司 | 格式数据文件的并发处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112256634B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221743A (zh) | 自动化测试方法及系统 | |
US8422786B2 (en) | Analyzing documents using stored templates | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
CN114710224A (zh) | 帧同步方法及装置、计算机可读介质、电子设备 | |
CN107656871B (zh) | 一种基于Postmark的后端存储性能自动化测试方法 | |
CN110058952B (zh) | 一种嵌入式设备文件的校验方法及系统 | |
CN111506747B (zh) | 文件解析方法、装置、电子设备及存储介质 | |
CN114296751A (zh) | 程序升级方法、装置和存储介质 | |
CN112256634A (zh) | 一种基于http的低内存大文件解析方法 | |
CN111414339A (zh) | 一种文件的处理方法、系统、装置、设备及介质 | |
CN116303320A (zh) | 基于日志文件的实时任务管理方法、装置、设备及介质 | |
CN114257840B (zh) | 一种用于Matroska格式视频的修复方法和系统 | |
CN115390847A (zh) | 日志处理方法及装置、计算机可读存储介质、终端 | |
CN114237654A (zh) | 一种ota升级方法及系统 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 | |
CN114500348A (zh) | 一种cdn网关测试方法及系统 | |
CN111061699B (zh) | 一种电能表数据库版本更新的方法及装置 | |
CN113448855A (zh) | 数据库版本包检测方法及装置 | |
CN113111040A (zh) | 一种文件解压方法及装置 | |
CN110896391B (zh) | 一种报文处理方法和装置 | |
CN108415814B (zh) | 自动记录字段变化方法、应用服务器及计算机可读存储介质 | |
CN112199529A (zh) | 图片处理方法、装置、电子设备及存储介质 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN110874416A (zh) | 一种图像特征值存储方法、装置和电子设备 | |
CN114218441B (zh) | 对uof文档进行调用和展示的方法 |
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 |