CN114968953A - 日志的存储检索方法、系统、终端设备及介质 - Google Patents
日志的存储检索方法、系统、终端设备及介质 Download PDFInfo
- Publication number
- CN114968953A CN114968953A CN202210544921.9A CN202210544921A CN114968953A CN 114968953 A CN114968953 A CN 114968953A CN 202210544921 A CN202210544921 A CN 202210544921A CN 114968953 A CN114968953 A CN 114968953A
- Authority
- CN
- China
- Prior art keywords
- log
- log data
- preset
- search
- target
- 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/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种日志的存储检索方法、系统、终端设备以及计算机可读存储介质,该日志的存储检索方法的步骤包括:接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。本发明能够在基于节约存储和检索成本的基础上,实现针对千万级吞吐量日志的高效存储与检索。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种日志的存储检索方法、系统、终端设备以及计算机可读存储介质。
背景技术
当针对应用容器化后输出的日志进行集中存储和检索时,通常采用ELK*1(基于web页面的日志分析工具)和HDFS MapReduce(软件框架,基于该软件框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集)等技术方案来集中存储日志并实现近实时的日志检索需求。但是当每秒日志量达到GB级后,上述方案需要投入大量的资源成本来满足存储检索需求,比如,以采用ELK技术方案存储和检索每秒10GB(约每秒2000万条日志)的日志量为例,所需的资源量约(2.3Ghz*80000核CPU,900TB存储空间)*2。
由于容器应用日志存储与查询是多写少读的场景,对每一条日志均进行分词倒排索引,需消耗大量CPU和内存资源,而索引整体使用率不高,查询量是写入量的亿万分之一,投入大量资源只为了相对极少量的搜索需求显然不太合理,导致整体写入性能较低,性能调优难度大,难以满足近实时写入和查询的需求。
发明内容
本发明的主要目的在于提供一种日志的存储检索方法、系统、终端设备以及计算机可读存储介质,旨在基于节约存储和检索成本的基础上,实现针对千万级吞吐量日志的高效存储与检索。
为实现上述目的,本发明提供一种日志的存储检索方法,所述日志的存储检索方法包括:
接收日志数据,并将所述日志数据暂存至内存缓存区;
接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
可选地,所述将所述日志数据并行压缩写入预设的磁盘空间的步骤,包括:
将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间。
可选地,所述将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间的步骤,包括:
通过日志解析模块,接收日志数据,将所述日志数据进行解析得到字符串形式的日志数据,并将所述字符串形式的日志数据发送至日志压缩存储模块;
通过所述日志压缩存储模块提取所述字符串形式的日志数据中的日志类型、应用名称和日志时间戳,并根据所述日志类型、所述应用名称和所述日志时间戳将所述日志数据分类暂存至所述内存缓存区;
在所述内存缓存区中日志数据数量达到预设数量阈值或者所述内存缓存区按照预设刷新频率进行缓存刷新时,通过所述日志压缩存储模块,将所述内存缓存区中的日志数据推送至预设压缩队列;
按照预设日志写入规则将所述预设压缩队列中的日志数据并行压缩写入所述磁盘空间。
可选地,在所述接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间的步骤之前,还包括:
通过网关模块建立所述日志解析模块和所述日志压缩存储模块之间的连接。
可选地,所述接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本的步骤,包括:
通过所述网关模块接收用户发送的搜索文本,并针对所述搜索文本进行文本语法校验和文本运算符识别;
针对文本语法校验和文本运算符识别后的搜索文本构建搜索树和逻辑匹配字符串得到目标搜索文本。
可选地,所述根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表的步骤,包括:
根据所述磁盘空间中日志的文件名确定日志的时间范围,通过查询模块,将所述时间范围与所述预设搜索时间范围进行交集运算得到目标时间范围;
从磁盘空间中获取所述目标时间范围对应的日志数据得到待搜索文件列表。
可选地,所述从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据的步骤,包括:
将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比;
若是当前读取字符与所述字符组任一字符匹配,则将当前读取的字符暂存至预设的日志缓存中,同时,将所述预设指针指向与所述当前读取字符匹配的所述字符组的下一字符;
确定所述日志缓存中的目标单词,并在所述目标单词中的全部字符都匹配正确时,根据所述目标单词在对应的逻辑匹配字符串中的逻辑值对所述逻辑匹配字符串进行逻辑运算,以在逻辑运算的结果为true时得到目标日志数据,并将所述日志缓存进行清除;
在所述将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比的步骤之后,还包括:
若是当前读取字符未能与所述字符组中的各字符相匹配,则将所述预设指针进行复位操作。
可选地,在所述将所述目标日志数据存入预设结果集的步骤之后,还包括:
通过所述网关模块,将预设结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至所述网关模块挂载的服务器Nginx,并结束此次搜索任务。
为实现上述目的,本发明还提供一种日志的存储检索系统,所述日志的存储检索系统,包括:
压缩写入模块,用于接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收模块,用于接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
检索模块,用于根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
其中,本发明日志的存储检索系统的各个功能模块各自在运行时均实现如上所述的日志的存储检索方法的步骤。
为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的日志的存储检索程序,所述日志的存储检索程序被所述处理器执行时实现如上所述的日志的存储检索方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有日志的存储检索程序,所述日志的存储检索程序被处理器执行时实现如上所述的日志的存储检索方法的步骤。
此外,为实现上述目的,本发明还提供计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上所述的日志的存储检索方法的步骤。
本发明提供一种日志的存储检索方法、系统、终端设备、计算机可读存储介质以及计算机程序产品,日志的存储检索方法包括以下步骤:接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
相比于现有的存储和检索方式,在本发明中,将接收到的日志数据压缩写入预设的磁盘空间,并从磁盘空间中确定与用户发送的搜索文本一致的日志数据,并将该日志数据发送至对应的搜索请求发起方。因此,本发明能够实现近实时并行压缩写入,节约大量存储空间,进而大幅减少磁盘空间的I/O次数。另外,本发明还通过时间索引方式,实现近实时解压缩检索和毫秒级响应,能够极大地提升了搜索速度,同样大幅减少磁盘空间的I/O次数,并且能够满足绝大部分搜索要求。
在此基础上,本发明无需使用特殊硬件配置和SSD固态存储盘,并且能够运行在普通服务器(HDD存储)或虚拟机上,可以有效硬件采购成本。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明日志的存储检索方法一实施例的第一流程示意图;
图3为本发明日志的存储检索方法一实施例的第二流程示意图;
图4为本发明日志的存储检索方法一实施例的存储检索结构示意图;
图5为本发明日志的存储检索方法一实施例的Receiver模块结构示意图;
图6为本发明日志的存储检索方法一实施例的搜索树构建示意图;
图7为本发明日志的存储检索方法一实施例的Gateway&Searcher模块结构示意图;
图8为本发明日志的存储检索系统一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
需要说明的是,本发明实施例终端设备可以是用于实现千万级吞吐量日志存储与检索的终端设备,该终端设备具体可以是手机,计算机,服务器,或者网络设备等。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及日志的存储检索程序。操作系统是管理和控制设备硬件和软件资源的程序,支持日志的存储检索程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的日志的存储检索程序,并执行以下操作:
接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
通过日志解析模块,接收日志数据,将所述日志数据进行解析得到字符串形式的日志数据,并将所述字符串形式的日志数据发送至日志压缩存储模块;
通过所述日志压缩存储模块提取所述字符串形式的日志数据中的日志类型、应用名称和日志时间戳,并根据所述日志类型、所述应用名称和所述日志时间戳将所述日志数据分类暂存至所述内存缓存区;
在所述内存缓存区中日志数据数量达到预设数量阈值或者所述内存缓存区按照预设刷新频率进行缓存刷新时,通过所述日志压缩存储模块,将所述内存缓存区中的日志数据推送至预设压缩队列;
按照预设日志写入规则将所述预设压缩队列中的日志数据并行压缩写入所述磁盘空间。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
通过网关模块建立所述日志解析模块和所述日志压缩存储模块之间的连接。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
通过所述网关模块接收用户发送的搜索文本,并针对所述搜索文本进行文本语法校验和文本运算符识别;
针对文本语法校验和文本运算符识别后的搜索文本构建搜索树和逻辑匹配字符串得到目标搜索文本。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
根据所述磁盘空间中日志的文件名确定日志的时间范围,通过查询模块,将所述时间范围与所述预设搜索时间范围进行交集运算得到目标时间范围;
从磁盘空间中获取所述目标时间范围对应的日志数据得到待搜索文件列表。
进一步地,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
通过所述查询模块,针对所述待搜索文件列表中进行多线程并行解压得到数据字符流,并将所述数据字符流存入对应的缓存;
确定未超出所述预设搜索时间范围的处于所述缓存中的数据字符流,并对所述数据字符流进行顺序读取;
将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比;
若是当前读取字符与所述字符组任一字符匹配,则将当前读取的字符暂存至预设的日志缓存中,同时,将所述预设指针指向与所述当前读取字符匹配的所述字符组的下一字符;
确定所述日志缓存中的目标单词,并在所述目标单词中的全部字符都匹配正确时,根据所述目标单词在对应的逻辑匹配字符串中的逻辑值对所述逻辑匹配字符串进行逻辑运算,以在逻辑运算的结果为true时得到目标日志数据,并将所述日志缓存进行清除;
在所述将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比的步骤之后,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
若是当前读取字符未能与所述字符组中的各字符相匹配,则将所述预设指针进行复位操作。
进一步地,在所述将所述目标日志数据存入预设结果集的步骤之后,处理器1001还可以用于调用存储器1005中存储的日志的存储检索程序,还执行以下操作:
通过所述网关模块,将预设结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至所述网关模块挂载的服务器Nginx,并结束此次搜索任务。
参照图2,图2为本发明日志的存储检索方法第一实施例的流程示意图。
在本实施例中,提供了日志的存储检索方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,采取一种低成本的存储和检索海量日志方法,能够解决千万级TPS日志存储和检索时遇到的资源消耗大、查询性能低的问题。以Elastic Search索引写入方法和HDFS存储写入方法为例对现有存储索引技术局限性进行阐述。
关于Elastic Search索引写入:
为了能够快速定位到目标文档,Elastic Search(ES)使用倒排索引技术来优化搜索速度,虽然空间消耗比较大,但是搜索性能提高十分显著。但是由于索引数量巨大,ES无法直接把全部索引放入内存,转而建立词典索引,构建有限状态转换器(FST)放入内存,进一步提高搜索效率。而数据文档的id在词典内的空间消耗也是巨大的,ES使用了索引帧(Frame of Reference)技术压缩posting list,带来的压缩效果十分明显。另外,ES的filter语句采用了Roaring Bitmap技术来缓存搜索结果,保证高频filter查询速度的同时降低存储空间消耗。
关于HDFS存储写入:
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System,HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上,而且能够提供高吞吐量(high throughput)来访问应用程序的数据,适用于超大数据集(large data set)的应用程序。HDFS放宽了POSIX的要求,能够以流的形式访问(streaming access)文件系统中的数据。而Hadoop的框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。Hadoop作为一个基础大数据处理平台,虽然其应用价值已得到大家认可,但仍存在很多问题,以下是主要几个:
(1)Namenode/jobtracker单点故障。
Hadoop采用的是master/slaves架构,该架构管理起来比较简单,但存在致命的单点故障和空间容量不足等缺点,这已经严重影响了Hadoop的可扩展性;
(2)HDFS小文件问题。
在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有10000000个小文件,每个文件占用一个block,则namenode(文件系统的管理节点)需要2G空间。如果存储1亿个文件,则namenode需要20G空间。如此,namenode内存容量严重制约了集群的扩展;
(3)jobtracker(集群事务的集中处理点)同时进行监控和调度,负载过大。为了解决该问题,yahoo已经开始着手设计下一代Hadoop MapReduce。其主要思路是将监控和调度分离,独立出一个专门的组件进行监控,而jobtracker只负责总体调度,至于局部调度,交给作业所在的client。
(4)数据处理性能。
Hadoop类似于数据库,可能需要专门的优化工程师根据实际的应用需要对Hadoop进行调优,有人称之为“Hadoop Performance Optimization”(HPO)。
而本实施例日志存储检索方法中,存储压缩率可以达原始大小的5%以内,100个并发搜索请求平均响应时间可以控制在500毫秒以内,比通常使用的ELK技术方案可以节约90%的CPU、内存和存储资源消耗,即,在同样日志量和同样硬件配置下,采用本实施例中的日志读写方法比采用ELK等技术方案进行日志存储检索的方法,能够节约90%成本。值得注意的是,在本实施例中采用简单索引,即,只做类型和时间索引,而不做分词和倒排索引。在本实施例中采用并行压缩写入,其写入性能是通常分词和倒排索引方法的10倍以上,并且存储空间消耗是通常分词和倒排索引方法的1/10,同时查询性能与通常分词和倒排索引方法基于一致,通过近实时解压缩检索,优化搜索速度,同时大幅减少磁盘I/O次数,搜索性能实现毫秒级响应,可以满足绝大部分搜索需求。
另外,在本实施例中所有模块均为HA架构,使用双副本存储,保证数据一致性和可靠性,支持在线横向扩容,不存在致命的单点故障和空间容量不能扩展的问题;且无需使用特殊硬件配置,无需使用SSD固态存储盘,可以运行在普通服务器(HDD存储)或虚拟机上,可以有效降低硬件采购成本。
在此基础上,本实施例中的日志的存储检索方法,可以包括:
步骤S10,接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
需要说明的是,在本实施例中,采用TCP协议进行日志发送与日志接收。日志发送方可将日志数据格式化为以空格分隔的字符串:类型应用名时间戳日志文本\n,比如,例app HelloWorld 2022011114311050742649Nice to meet you.\n,其中,类型和应用名可以根据实际情况改成所需的字符串,用于分类。
终端设备在接收到发送方以字符串形式的日志数据后,进一步将日志数据采用并行压缩方式写入预设磁盘空间。
在本实施例中采用并行压缩存储,使得实现写入性能是通常方法的10倍以上,而存储空间消耗是通常方法的1/10,极大节约了存储空间,进而节约了存储成本。
步骤S20,接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
终端设备在将内存缓存区中的日志数据压缩写入预设磁盘空间后,检测是否接收到用户触发的搜索请求和对应的搜索文本,若是检测到由用户发送的搜索文本,为了匹配与搜索文本一致的日志数据,终端设备需要预先将搜索文本进行相关预处理操作得对应的目标搜索文本,以查询与该目标搜索文本匹配的日志数据。
步骤S30,根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
终端设备在将内存缓存区中的日志数据写入预设的磁盘空间,并接收到用户发送的搜索文本对应的目标搜索文本后,将根据由用户确定的搜索时间范围,从磁盘空间中确定待搜索文件列表,进而将目标搜索文本与待搜索文件列表进行匹配确定与该目标搜索文本一致的日志数据,并将该日志数据存至预设结果集,以将该结果集返回给对应的搜索请求方。
需要说明的是,在本实施例中,根据由用户预先确定的搜索时间范围,通过时间索引方式,从磁盘空间中确定待搜索文件列表,以响应用于触发的搜索请求,有效提升了查询检索效率。
在本实施例中,终端设备在接收到发送方以字符串方式发送的日志数据后,首先将日志数据采用并行压缩方式写入预设磁盘空间。终端设备在将内存缓存区中的日志数据压缩写入预设磁盘空间后,检测是否接收到用户触发的搜索请求和对应的搜索文本,若是检测到由用户发送的搜索文本后,为了匹配与搜索文本一致的日志数据,终端设备需要预先将搜索文本进行预处理得到符合检索标准的目标搜索文本,以检索与该目标搜索文本匹配的日志数据。终端设备在将内存缓存区中的日志数据写入预设的磁盘空间,并接收到用户发送的搜索文本对应的目标搜索文本后,将根据由用户确定的搜索时间范围,从磁盘空间中确定待搜索文件列表,进而将目标搜索文本与待搜索文件列表进行匹配确定与该目标搜索文本一致的日志数据,并将该日志数据存至预设结果集,以将该结果集返回给对应的搜索请求方。
相比于现有的存储和检索方式,在本发明中,将接收到的日志数据压缩写入预设的磁盘空间,并从磁盘空间中确定与用户发送的搜索文本一致的日志数据,并将该日志数据发送至对应的搜索请求发起方。因此,本发明能够实现近实时并行压缩写入,节约大量存储空间,进而大幅减少磁盘空间的I/O次数。另外,本发明还通过时间索引方式,实现近实时解压缩检索和毫秒级响应,能够极大地提升了搜索速度,同样大幅减少磁盘空间的I/O次数,并且能够满足绝大部分搜索要求。
在此基础上,本发明无需使用特殊硬件配置,无需使用SSD固态存储盘,能够运行在普通服务器(HDD存储)或虚拟机上,可以有效硬件采购成本。
进一步地,基于本发明日志的存储检索方法的第一实施例,提出日志的存储检索方法的第二实施例。
在本实施例中,上述步骤S10中,“将所述日志数据并行压缩写入预设的磁盘空间”,可以包括:
步骤S101,将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间。
终端设备在接收到发送方以字符串方式发送的日志数据后,首先将日志数据暂时存储在内存缓存区中,以将该内存缓存区中的所有日志数据进行统一并行压缩处理,并在满足预设的写入条件时,将内存缓存区中的日志数据采用并行压缩方式写入预设磁盘空间。
进一步地,上述步骤S101中,“将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间”,可以包括:
步骤S1011,通过日志解析模块,接收日志数据,将所述日志数据进行解析得到字符串形式的日志数据,并将所述字符串形式的日志数据发送至日志压缩存储模块;
步骤S1012,通过所述日志压缩存储模块提取所述字符串形式的日志数据中的日志类型、应用名称和日志时间戳,并根据所述日志类型、所述应用名称和所述日志时间戳将所述日志数据分类暂存至所述内存缓存区;
需要说明的是,在本实施例中,发送方在发送日志数据时,是将日志数据转换为字符串方式进行发送,字符串包括:类型、应用名、时间戳和日志文本,并且各字符以空格分割,比如:
app HelloWorld 2022011114311050742649Nice to meet you.\n;
因此,终端设备通过日志解析模块接收到字符串格式的日志数据,提取字符串的前面三段内容得到类型、应用名和时间戳,按照类型和应用名构建日志对象并暂存在内存缓存区中。在此基础上,终端设备需要同时记录最早日志和最晚日志时间用于后续的压缩文件命名,格式如下:
比如,
进而,可按照上述日志数据字符串的构建以及命名方式,通过日志压缩存储模块对日志数据进行缓存和压缩写入。
需要说明的是,在本实施例中,如图3所示,通过日志解析模块(即,Parser模块)和日志压缩存储模块(即,Receiver模块)实现将日志数据存入磁盘,并通过查询模块(即,Searcher模块)和网关模块(即,Gateway模块)搜索与用户触发的搜索文本一致的目标日志数据,并将目标日志返回用户端。其中,Parser模块负责并发订阅日志数据流(Kafkatopic),解析成字符串数据后发送给Receiver模块,Parser模块与Receiver模块为多对一连接关系,可以横向扩展实例以增加解析和传输能力。
具体地,例如,存储检索系统结构如图4所示,日志存储和搜索系统由4个模块构成:
Parser模块:多个Parser组并发订阅日志数据流(Kafka topic),解析成字符串数据后发送给Receiver;
Receiver模块:Receiver缓存日志数据在内存缓存区中,同时同步数据到备用Receiver节点(Receiver’),达到写入条件时将内存缓存数据压缩后写入磁盘;
Gateway模块:Gateway负责在线接收用户搜索请求和搜索文本,并将其转发至相应Searcher组,并负责聚合Searcher组返回的分片检索数据,排序后返回给用户;
Searcher模块:多个Searcher组负责接收Gateway转发的搜索请求,在磁盘(解压)和内存中检索数据,返回给Gateway。
步骤S1013,在所述内存缓存区中日志数据数量达到预设数量阈值或者所述内存缓存区按照预设刷新频率进行缓存刷新时,通过所述日志压缩存储模块,将所述内存缓存区中的日志数据推送至预设压缩队列;
步骤S1014,按照预设日志写入规则将所述预设压缩队列中的日志数据并行压缩写入所述磁盘空间。
终端设备在通过Receiver模块将日志数据以字符串方式暂时存入内存缓存区后,在满足预写入条件时,通过Receiver模块直接将内存缓存区中的满足条件的字符串推入预设压缩列队中,进而按照预设日志压缩规则,通过压缩算法对压缩队列中的日志数据并行压缩写入磁盘空间。
需要说明的是,在本实施例中,预设日志写入规则包括:日志数据压缩写入磁盘空间时的路径和格式,包括:用名/类型/日期/最早日志时间_最晚日志时间_日志数量.gz,比如:
/data/HelloWorld/app/202201111431/2022011114311050345612_2022011114311050742649_2.gz。
具体地,例如,当内存缓存区中日志数据数量达到预设数量阈值或者内存缓存区按照预设刷新频率进行缓存刷新时(例如,设置每30秒刷新一次,将缓存超过30秒的日志刷写到存储),启动压缩写入流程,将满足刷新条件的缓存对象推入压缩队列中,进而可使用gzip、7zip、zstd或其它压缩算法对压缩队列中的日志数据进行压缩,按照“应用名/类型/日期/最早日志时间_最晚日志时间_日志数量.gz”写入文件,并在压缩写入完成后清空压缩队列。
需要说明的是,在本实施例中,Receiver模块负责接收日志解析数据并压缩存储到磁盘空间的文件系统。并且,Receiver模块结构如图5所示,为了保证高可用,将Receiver设计为成对运行,由Receiver和Receiver’两个节点组成(Receiver’为Receiver的从节点),各挂载一块Disk Volume,实现双副本数据存储,Receiver的存储可以是本地存储或外接存储。
比如,Receiver接收Parser的解析数据,同时复制一份数据给Receiver’,Receiver将数据分类存储在自身内存缓存区,达到写盘条件时(大小、时间)将缓冲区数据压缩后写入磁盘。而当某个组的Receiver发生故障时,会断开Parser的连接,停止接收数据,并等待Receiver恢复,若Receiver恢复,Receiver’将内存数据反向同步复制给Receiver,完成数据同步后恢复正常数据接收处理服务(故障时进入只读模式,并立即刷盘)。在某个组Receiver’发生故障时,Receiver会主动暂停接收数据,并等待Receiver’恢复,若Receiver’恢复,Receiver自动将内存数据同步复制给Receiver’,完成数据同步后恢复正常数据接收处理服务。
因此,Receiver模块工作流程包括:
(1)Receiver接收Parser的解析数据,同时复制一份数据给Receiver’,Receiver将数据分类存储在自身内存缓存区,达到写盘条件时(大小、时间)将缓冲区数据压缩后写入磁盘;
(2)若Receiver出现故障,Receiver’将接替Receiver工作,只接收查询请求,并等待Receiver恢复,在若Receiver恢复时,Receiver’暂停订阅并将内存数据复制给Receiver,Receiver完成数据同步后恢复正常工作(故障时进入只读模式,并立即刷盘)。
进一步地,在上述步骤S10,“接收日志数据,并将所述日志数据暂存至内存缓存区”之前,还包括:
步骤S40,通过网关模块建立所述日志解析模块和所述日志压缩存储模块之间的连接。
需要说明的是,在本实施例中,终端设备在接收日志数据,并将日志数据进行存储之前,需要预先将日志解析模块和日志压缩存储模块连接。
具体地,例如,并发启动多个Parser单元,每个Parser启动时提供自身的配置信息来请求Gateway获取伙伴Receiver的IP地址和端口,并连接到Receiver。其中,配置信息在服务第一次启动的时候会自动获取,如果获取到了会缓存到本地文件,并且每隔一段时间会尝试更新注册信息,当下次启动不能获取注册信息时,会从本地缓存文件读取。
在此基础上,Parser模块工作流程包括:
(1)如果Receiver已连接上Parser开始订阅日志数据流(Kafka topic),将JSON结构的日志数据解析成规范的字符串结构数据,发送给Receiver;
(2)如果Receiver连接断开,Parser应每隔一段时间不断尝试与Receiver重新建立连接,如果Receiver是K8s容器实例,Parser应从Gateway重新获取伙伴Receiver实例IP地址和端口,一旦连接上,跳转到步骤(1);
(3)如果Parser单元正常退出,应将最后一条解析数据发送完毕再退出;如果Parser单元自身意外退出,应丢失不多于100条日志数据。
在本实施例中,终端设备通过日志解析模块接收到字符串格式的日志数据,提取字符串的前面三段内容得到类型、应用名和时间戳,按照类型和应用名构建日志对象并暂存在内存缓存区中。终端设备在通过Receiver模块将日志数据以字符串方式暂时存入内存缓存区后,在满足预写入条件时,通过Receiver模块直接将内存缓存区中的满足条件的字符串推入预设压缩列队中,进而按照预设日志压缩规则,通过压缩算法对压缩队列中的日志数据并行压缩写入磁盘空间。
在发明中,当对日志数据进行存储时,提取日志数据对应的字符串的类型、应用名和时间戳,构建日志对象,并将该日志对象暂存至内存缓存区中,并将内存缓存区中满足写入条件的日志数据推入至压缩队列,进而将压缩列队中的日志数据采用并行压缩写入磁盘空间。因此,本发明通过并行压缩方式提升日志存储的写入性能,能近实时处理应用千万级TPS的日志数据,并且大幅降低了存储海量日志的成本且极大节约了存储空间,存储空间消耗仅仅是现有相关技术的1/10。另外,在本发明中无需使用特殊硬件配置,无需使用SSD固态存储盘,能够运行在普通服务器(HDD存储)或虚拟机上,可以有效硬件采购成本。
进一步地,基于本发明日志的存储检索方法的第一实施例和第二实施例,提出本发明日志的存储检索方法的第三实施例。
在本实施例中,上述步骤S20中,“接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本”,可以包括:
步骤S201,通过所述网关模块接收用户发送的搜索文本,针对所述搜索文本进行文本语法校验和文本运算符识别;
步骤S202,针对文本语法校验和文本运算符识别后的搜索文本构建搜索树和逻辑匹配字符串得到目标搜索文本。
需要说明的是,在本实施例中,终端设备通过Gateway模块接收到用户发送的搜索文本,并对该搜索文本执行包括:文本语法校验、文本运算符识别、构建搜索树和构建逻辑匹配字符串的预处理操作得到符合检索标准的目标搜索文本,以基于该目标搜索文本匹配对应的目标日志数据。
具体地,例如,在本实施例中的检索方法采用字符串匹配方式,类似linux系统的grep命令或文本编辑器的Ctrl+F功能,可以区分大小写匹配、精确匹配和模糊匹配,支持AND OR NOT等逻辑关系运算,支持数值比较(比如code>200),预处理操作包括:
(1)校验文本语法,排除非法的搜索文本,例如,检查非法字符、检查双引号缺失等;
(2)搜索文本分词,识别逻辑运算符和比较运算符,例如,Nice to AND you会被分词组成数组[“Nice to”,“AND”,“you”];
(3)建立词汇搜索树,采用类似B+树的数据结构,比如,如图5所示,将数组[“Niceto”,“AND”,“you”]构建成如图5所示的搜索树;
(4)建立逻辑匹配字符串,用逻辑运算符和逻辑值替换原单词位置,并建立映射关系,例如,将数组[“Nice to”,“AND”,“you”]转换成字符串“false&&false”。
通过文本语法校验、文本运算符识别、构建搜索树和构建逻辑匹配字符串后将最终获取搜索文本对应的目标搜索文本,以将目标搜索文本发送至Searcher模块,由Searcher模块确定与目标搜索文本匹配的目标日志数据。
需要说明的是,在本实施例中,如图6所示,Gateway提供日志查询网关服务和日志存储、检索节点的注册信息服务,而Searcher从已压缩的日志文件按条件检索返回结果。
另外,为了保证高可用,Gateway至少需要2个以上节点,挂在Nginx后端运行,Searcher与Receiver是一比二的连接关系,每个Searcher挂载对应Receiver组的两块存储;Gateway根据用户触发的搜索文本,将搜索请求分发至Searcher,Searcher检索存储数据和Receiver或Receiver’的内存数据后返回结果给Gateway,而Gateway合并排序结果后返回给Nginx。
值得注意的是,Gateway和Receiver的连接关系是一对多的关系,比如一比二的连接关系,每个Searcher挂载对应Receiver组的两块存储;Gateway可以横向扩展实例以增加请求处理能力;为了保证高可用,Gateway至少需要2个以上节点,挂在Nginx、HA proxy等有负载均衡能力的服务后端运行;Searcher和Receiver是一比二的连接关系,每个Searcher挂载对应Receiver组的两块存储;Searcher挂接在Gateway后端运行,Searcher可以横向扩展实例以增加请求处理能力。
在此基础上,Searcher工作流程为:
Searcher接收到Gateway转发的查询请求,启动并发检索线程按查询条件搜索存储数据后返回结果给Gateway,如果没有搜索到任何结果则返回空集。
而Gateway工作流程为:
(1)Gateway启动后侦听和接收节点注册信息,如果Parser或Receiver以K8s模式启动,Gateway主动获取Parser或Receiver的实例名和实例IP地址信息,并登记;
(2)Gateway接收到伙伴节点IP请求,按照伙伴节点关联策略查询并返回伙伴节点IP和端口信息;
(3)Gateway接收到用户搜索请求和搜索文本,根据搜索文本将查询请求分发至Searcher,Searcher并发检索存储数据后返回结果给Gateway,最终Gateway合并、排序结果后返回给上游。
进一步地,上述步骤S30中,“根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表”的步骤,包括:
步骤S301,根据所述磁盘空间中日志的文件名确定日志的时间范围,通过查询模块,将所述时间范围与所述预设搜索时间范围进行交集运算得到目标时间范围;
步骤S302,从磁盘空间中获取所述目标时间范围对应的日志数据得到待搜索文件列表。
需要说明的是,在本实施例中,预设时间搜索范围是由用户在进行日志检索时设置的时间搜索范围。在此基础上,终端设备件将根据该时间搜索范围,从磁盘空间的日志数据中确定待搜索文件列表。
具体地,例如,终端设备只需选取由用户确定的时间搜索范围内的日志文件,值得注意的是,由于在对进行文件压缩命名时,采用了“应用名/类型/日期/最早日志时间_最晚日志时间_日志数量.gz”的压缩写入格式和路径,记录了最早日志时间和最晚日志时间用于压缩文件命名。在此基础上,终端设备可通过文件名的解析可以判断文件内日志的时间范围,与搜索时间范围进行交集运算即可得到目标时间范围,并获取该目标时间范围对应的日志数据,最终得到目标时间范围内的待搜索文件列表。
进一步地,上述步骤S30中,“从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据”,可以包括:
步骤S303,通过所述查询模块,针对所述待搜索文件列表中进行多线程并行解压得到数据字符流,并将所述数据字符流存入对应的缓存;
步骤S304,确定未超出所述预设搜索时间范围的处于所述缓存中的数据字符流,并对所述数据字符流进行顺序读取;
步骤S305,将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比;
步骤S306,若是当前读取字符与所述字符组任一字符匹配,则将当前读取的字符暂存至预设的日志缓存中,同时,将所述预设指针指向与所述当前读取字符匹配的所述字符组的下一字符;
步骤S307,确定所述日志缓存中的目标单词,并在所述目标单词中的全部字符都匹配正确时,根据所述目标单词在对应的逻辑匹配字符串中的逻辑值对所述逻辑匹配字符串进行逻辑运算,以在逻辑运算的结果为true时得到目标日志数据,并将所述日志缓存进行清除。
在上述步骤S305,“将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比”之后,还可以包括:
步骤S308,若是当前读取字符未能与所述字符组中的各字符相匹配,则将所述预设指针进行复位操作。
需要说明的是,在本实施例中,通过Searcher模块,采用并发多线程解压缩读取待搜索文件列表,并且由于预先针对目标搜索文件构建了搜索树,在此基础上,终端设备将使用该搜索树对搜索文件列表中的每一行日志文本进行匹配,具体步骤,包括:
(1)通过每个线程解压缩待搜索文件列表中的一个文件得到数据字符流,并将该数据字符流写入固定大小的缓存中,例如,每次解压读取1024字节的数据,就将该1024字节存放在1024字节大小的缓存中;
(2)截取缓存时间部分,进行时间范围匹配。只将未超出预设搜索时间范围的缓存中的数据字符流进行顺序读取,对于超出搜索时间范围外的日志,直接读取到换行字符,中间不做分词匹配,跳转到步骤(1),否则进行步骤(3);
(3)对缓存中的数据字符流进行循序逐字符读取,使用预设指针current指向搜索树的当前匹配字符数组(指针默认指向搜索树的根root),每读取一个字符,就将该字符与指针current的字符数组进行匹配,如果匹配正确(命中),指针current将指向该字符数组的下一个字符,否则将指针current进行复位,即,将指针current指向root。如果单词的最后一个字符已命中,将逻辑匹配字符串中单词对应的位置的逻辑值改为true;
(4)将读取的字符存入一个固定大小的日志缓存中,日志缓存大小设置为单条日志长度上限的2倍,如果遇到换行字符,表示一条日志已结束。进而对逻辑匹配字符串进行逻辑运算,如果运算结果为true,则得到字符串对应的目标日志数据,并将该目标日志数据存入结果集,然后清空日志缓存;
(5)循环步骤(1)-(4),直到待搜索文件列表读取结束;
需要说明的是,在本实施例中,每个线程均执行步骤(1)-(4),直到结果集中数量达到数量阈值或者已完成待搜索文件列表中所有文件的搜索。
进一步地,在上述步骤S40,“将所述目标日志数据存入预设结果集”之后,还包括:
步骤S50,通过所述网关模块,将预设结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至所述网关模块挂载的服务器Nginx,并结束此次搜索任务。
终端设备在将搜索到的与用户触发的搜索文本匹配的目标日志数据保存至预设结果集后,等待所有搜索线程结束后,通过Gateway模块将所有线程的结果集汇总,按时间顺序进行排序,返回结果给Gateway模块所挂载Nginx和HA proxy等有负载均衡能力的服务器,并结束本次搜索任务。
在本实施例中,当接收到用户发送的搜索文本后,将对该搜索文本执行包括:文本语法校验、文本运算符识别、构建搜索树和构建逻辑匹配字符串的预处理操作得到符合检索标准的目标搜索文本,以基于该目标搜索文本匹配对应的目标日志数据。端设备只需选取由用户确定的时间搜索范围内的日志文件,值得注意的是,由于在对进行文件压缩命名时,采用了“应用名/类型/日期/最早日志时间_最晚日志时间_日志数量.gz”的压缩写入格式和路径,记录了最早日志时间和最晚日志时间用于压缩文件命名。在此基础上,终端设备可通过文件名的解析可以判断文件内日志的时间范围,与搜索时间范围进行交集运算即可得到目标时间范围,并获取该目标时间范围对应的日志数据,最终得到目标时间范围内的待搜索文件列表。采用并发多线程解压缩读取待搜索文件列表,并且由于预先针对目标搜索文件构建了搜索树,在此基础上,终端设备将使用该搜索树对搜索文件列表中的每一行日志文本进行匹配得到结果集,并将结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至用户,结束此次搜索任务。
因此,在本发明中,根据日志类型和时间索引方式,通过Searcher模块和Gateway模块,以并行解压缩检索方式实现日志全文快速检索,搜索性能实现毫秒级响应,可以满足绝大部分搜索要求实现了近实时搜索的性能,同时能够大幅减少磁盘I/O次数,有效提升查询效率。在此基础上,本发明无需使用特殊硬件配置,无需使用SSD固态存储盘,能够运行在普通服务器(HDD存储)或虚拟机上,可以有效硬件采购成本。
此外,本发明实施例还提出一种日志的存储检索系统,参照图8,图8为本发明日志的存储检索一实施例的功能模块示意图。如图8所示,本发明日志的存储检索系统,包括:
压缩写入模块,用于接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收模块,用于接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
检索模块,用于根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
进一步地,所述存储模块10,包括:
压缩写入单元,用于将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间。
进一步地,所述压缩写入单元,包括:
解析发送字单元,用于通过日志解析模块,接收日志数据,将所述日志数据进行解析得到字符串形式的日志数据,并将所述字符串形式的日志数据发送至日志压缩存储模块;
第一存储字单元,用于通过所述日志压缩存储模块提取所述字符串形式的日志数据中的日志类型、应用名称和日志时间戳,并根据所述日志类型、所述应用名称和所述日志时间戳将所述日志数据分类暂存至所述内存缓存区;
推送子单元,用于在所述内存缓存区中日志数据数量达到预设数量阈值或者所述内存缓存区按照预设刷新频率进行缓存刷新时,通过所述日志压缩存储模块,将所述内存缓存区中的日志数据推送至预设压缩队列;
压缩写入子单元,用于按照预设日志写入规则将所述预设压缩队列中的日志数据并行压缩写入所述磁盘空间。
进一步地,所述日志的存储检索系统,还包括:
连接建立模块,用于通过网关模块建立所述日志解析模块和所述日志压缩存储模块之间的连接。
进一步地,所述接收模块20,包括:
搜索文本接收单元,用于通过所述网关模块接收用户发送的搜索文本,并针对所述搜索文本进行文本语法校验和文本运算符识别;
目标搜索文本构建单元,用于针对文本语法校验和文本运算符识别后的搜索文本构建搜索树和逻辑匹配字符串得到目标搜索文本。
进一步地,所述检索模块30,包括:
交集运算单元,用于根据所述磁盘空间中日志的文件名确定日志的时间范围,通过查询模块,将所述时间范围与所述预设搜索时间范围进行交集运算得到目标时间范围;
待搜索文件列表获取单元,用于从磁盘空间中获取所述目标时间范围对应的日志数据得到待搜索文件列表。
进一步地,所述检索模块30,包括:
第二存储单元,用于通过所述查询模块,针对所述待搜索文件列表中进行多线程并行解压得到数据字符流,并将所述数据字符流存入对应的缓存;
读取单元,用于确定未超出所述预设搜索时间范围的处于所述缓存中的数据字符流,并对所述数据字符流进行顺序读取;
对比单元,用于将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比;
第三存储单元,用于若是当前读取字符与所述字符组任一字符匹配,则将当前读取的字符暂存至预设的日志缓存中,同时,将所述预设指针指向与所述当前读取字符匹配的所述字符组的下一字符;
逻辑运算单元,用于确定所述日志缓存中的目标单词,并在所述目标单词中的全部字符都匹配正确时,根据所述目标单词在对应的逻辑匹配字符串中的逻辑值对所述逻辑匹配字符串进行逻辑运算,以在逻辑运算的结果为true时得到目标日志数据,并将所述日志缓存进行清除;
复位单元,用于若是当前读取字符未能与所述字符组中的各字符相匹配,则将所述预设指针进行复位操作。
进一步地,所述日志的存储检索系统,还包括:
返回单元,用于通过所述网关模块,将预设结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至所述网关模块挂载的服务器Nginx,并结束此次搜索任务。
本发明日志的存储检索系统的各个功能模块的具体实施方式与上述日志的存储检索方法各实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有日志的存储检索程序,所述日志的存储检索程序被处理器执行时实现如上所述的日志的存储检索方法的步骤。
本发明日志的存储检索系统和计算机可读存储介质的各实施例,均可参照本发明日志的存储检索方法各个实施例,此处不再赘述。
此外,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如以上日志的存储检索方法的任一项实施例所述的日志的存储检索方法的步骤。
本发明计算机程序产品的具体实施例与上述日志的存储检索方法的各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种日志的存储检索方法,其特征在于,所述存储检索方法包括以下步骤:
接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中解压缩读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
2.如权利要求1所述的日志的存储检索方法,其特征在于,所述将所述日志数据并行压缩写入预设的磁盘空间的步骤,包括:
将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间。
3.如权利要求2所述的日志的存储检索方法,其特征在于,所述将所述日志数据暂存至内存缓存区,并将所述内存缓存区中的日志数据并行压缩写入预设的磁盘空间的步骤,包括:
所述接收日志数据,并将所述日志数据暂存至内存缓存区的步骤,包括:
通过日志解析模块,接收日志数据,将所述日志数据进行解析得到字符串形式的日志数据,并将所述字符串形式的日志数据发送至日志压缩存储模块;
通过所述日志压缩存储模块提取所述字符串形式的日志数据中的日志类型、应用名称和日志时间戳,并根据所述日志类型、所述应用名称和所述日志时间戳将所述日志数据分类暂存至所述内存缓存区;
在所述内存缓存区中的日志数据数量达到预设数量阈值或者将所述内存缓存区按照预设刷新频率进行缓存刷新时,通过所述日志压缩存储模块,将所述内存缓存区中的日志数据推送至预设压缩队列;
按照预设日志写入规则将所述预设压缩队列中的日志数据以并行压缩方式写入所述磁盘空间。
4.如权利要求3所述的日志的存储检索方法,其特征在于,在所述接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间的步骤之前,还包括:
通过网关模块建立所述日志解析模块和所述日志压缩存储模块之间的连接。
5.如权利要求4所述的日志的存储检索方法,其特征在于,所述接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本的步骤,包括:
通过所述网关模块,接收用户发送的搜索文本,并针对所述搜索文本进行文本语法校验和文本运算符识别;
对文本语法校验和文本运算符识别后的搜索文本构建搜索树和逻辑匹配字符串得到目标搜索文本。
6.如权利要求1所述的日志的存储检索方法,其特征在于,所述根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表的步骤,包括:
根据所述磁盘空间中日志的文件名确定日志的时间范围,通过查询模块,将所述时间范围与所述预设搜索时间范围进行交集运算得到目标时间范围;
从磁盘空间中获取所述目标时间范围对应的日志数据得到待搜索文件列表。
7.如权利要求6所述的日志的存储检索方法,其特征在于,所述从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据的步骤,包括:
通过所述查询模块,针对所述待搜索文件列表中进行多线程并行解压得到数据字符流,并将所述数据字符流存入对应的缓存;
确定未超出所述预设搜索时间范围的处于所述缓存中的数据字符流,并对所述数据字符流进行顺序读取;
将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比;
若是当前读取字符与所述字符组任一字符匹配,则将当前读取的字符暂存至预设的日志缓存中,同时,将所述预设指针指向与所述当前读取字符匹配的所述字符组的下一字符;
确定所述日志缓存中的目标单词,并在所述目标单词中的全部字符都匹配正确时,根据所述目标单词在对应的逻辑匹配字符串中的逻辑值对所述逻辑匹配字符串进行逻辑运算,以在逻辑运算的结果为true时得到目标日志数据,并将所述日志缓存进行清除;
在所述将当前读取字符与预设指针在目标搜索文件对应搜索树中所指向的字符组进行对比的步骤之后,还包括:
若是当前读取字符未能与所述字符组中的各字符相匹配,则将所述预设指针进行复位操作。
8.如权利要求4或5所述的日志的存储检索方法,其特征在于,在所述将所述目标日志数据存入预设结果集的步骤之后,还包括:
通过所述网关模块,将预设结果集进行按照时间顺序进行合并汇总,并将合并汇总后的搜索结果返回至所述网关模块挂载的服务器Nginx,并结束此次搜索任务。
9.一种日志的存储检索系统,其特征在于,所述日志的存储检索系统包括:
压缩写入模块,用于接收日志数据,并将所述日志数据并行压缩写入预设的磁盘空间;
接收模块,用于接收用户发送的搜索文本,并确定所述搜索文本对应的目标搜索文本;
检索模块,用于根据预设搜索时间范围从所述磁盘空间中确定待搜索文件列表,并从所述待搜索文件列表中读取与所述目标搜索文本匹配的目标日志数据,将所述目标日志数据存入预设结果集。
10.一种终端设备,其特征在于,所述终端设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的日志的存储检索程序,所述日志的存储检索程序被所述处理器执行时实现如权利要求1至8中任一项所述的日志的存储检索方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有日志的存储检索程序,所述日志的存储检索程序被处理器执行时实现如权利要求1至8中任一项所述的日志的存储检索方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210544921.9A CN114968953A (zh) | 2022-05-19 | 2022-05-19 | 日志的存储检索方法、系统、终端设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210544921.9A CN114968953A (zh) | 2022-05-19 | 2022-05-19 | 日志的存储检索方法、系统、终端设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968953A true CN114968953A (zh) | 2022-08-30 |
Family
ID=82984440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210544921.9A Pending CN114968953A (zh) | 2022-05-19 | 2022-05-19 | 日志的存储检索方法、系统、终端设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114968953A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544975A (zh) * | 2022-12-05 | 2022-12-30 | 济南丽阳神州智能科技有限公司 | 一种日志格式转换方法及设备 |
CN115658610A (zh) * | 2022-12-22 | 2023-01-31 | 北京万里红科技有限公司 | 一种文件内容检查方法、计算设备及可读存储介质 |
CN115834575A (zh) * | 2023-02-28 | 2023-03-21 | 新云网科技集团股份有限公司 | 一种日志上报方法、系统、设备及计算机可读存储介质 |
CN116910825A (zh) * | 2023-09-12 | 2023-10-20 | 上海融和元储能源有限公司 | 一种基于kafka的数据同步方法及装置 |
-
2022
- 2022-05-19 CN CN202210544921.9A patent/CN114968953A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544975A (zh) * | 2022-12-05 | 2022-12-30 | 济南丽阳神州智能科技有限公司 | 一种日志格式转换方法及设备 |
CN115658610A (zh) * | 2022-12-22 | 2023-01-31 | 北京万里红科技有限公司 | 一种文件内容检查方法、计算设备及可读存储介质 |
CN115834575A (zh) * | 2023-02-28 | 2023-03-21 | 新云网科技集团股份有限公司 | 一种日志上报方法、系统、设备及计算机可读存储介质 |
CN116910825A (zh) * | 2023-09-12 | 2023-10-20 | 上海融和元储能源有限公司 | 一种基于kafka的数据同步方法及装置 |
CN116910825B (zh) * | 2023-09-12 | 2023-12-15 | 上海融和元储能源有限公司 | 一种基于kafka的数据同步方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN114968953A (zh) | 日志的存储检索方法、系统、终端设备及介质 | |
CN110209726B (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US7624118B2 (en) | Data processing over very large databases | |
CN111400408B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN100596353C (zh) | 提供日志服务的方法及系统 | |
CN107018042B (zh) | 用于在线服务系统的追踪方法及追踪系统 | |
JP2022510460A (ja) | データレプリケーション方法、装置、コンピュータ機器及びコンピュータプログラム | |
CN107341258B (zh) | 一种日志数据采集方法及系统 | |
CN111949633B (zh) | 一种基于并行流处理的ict系统运行日志分析方法 | |
CN110502583B (zh) | 分布式数据同步方法、装置、设备及可读存储介质 | |
CN100538646C (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
WO2009000173A1 (fr) | Procédé, système et serveur de recherche | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN111177161A (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN103500120A (zh) | 基于多线程异步双写的分布式缓存高可用处理方法及系统 | |
CN112231296B (zh) | 一种分布式日志处理方法、装置、系统、设备及介质 | |
CN111625551A (zh) | 基于ElasticSearch存储的数据库监控数据高可用系统及其实现方法 | |
CN108629016B (zh) | 支持实时流计算面向大数据数据库控制系统、计算机程序 | |
CN112148745B (zh) | 一种多HBase集群访问方法、装置及存储介质 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
CN113051221A (zh) | 数据存储方法、装置、介质、设备及分布式文件系统 | |
CN116185298A (zh) | 一种日志分布式存储的方法 | |
CN115934748A (zh) | 一种基于分布式SQL的开关分发与metrics采集汇总系统及方法 | |
CN115238006A (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 |