CN112256208B - 一种离线数据包存储分析方法及装置 - Google Patents
一种离线数据包存储分析方法及装置 Download PDFInfo
- Publication number
- CN112256208B CN112256208B CN202011204746.6A CN202011204746A CN112256208B CN 112256208 B CN112256208 B CN 112256208B CN 202011204746 A CN202011204746 A CN 202011204746A CN 112256208 B CN112256208 B CN 112256208B
- Authority
- CN
- China
- Prior art keywords
- data packet
- thread
- processing
- offline data
- index
- 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
Classifications
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种离线数据包存储分析方法及装置,涉及数据处理技术领域。该方法包括:获取离线数据包,并将其发送至多个处理CPU;处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区;利用读线程和写线程将数据包块写入共享内存;再将其通过索引方式从共享内存中直接写入磁盘。从网络接口接收到的离线数据包先被分散至不同的处理CPU进行处理,实现负载的均衡,提高处理效率。然后离线数据包会被进行拆分处理,以使离线数据包被多个处理线程并行处理,从而可以并行化分析离线数据包,进一步提高处理效率。对离线数据包建立各种索引,离线数据包会存放在磁盘上不同的文件中,进行高效的并行化处理。
Description
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种离线数据包存储分析方法及装置。
背景技术
信息化的时代,任何设备都可以接入到互联网中,共享丰富的网络资源。互联网带来巨大便利的同时,也暴露出更多的安全隐患,网络攻击的行为无处不在,计算机网络安全的重要性更是不言而喻。对于网络数据的分析是网络安全重要的一个手段,识别、监听、阻断恶意的网络攻击行为从而更加全面的抵御恶意的网络攻击。对于高性能离线报文的存储、入侵检测技术尤为重要。在需要处理海量的流量数据的情况下,现有的技术在对离线数据包进行处理时,处理CPU需要对每个离线数据包进行操作,因此处理效率不高,过程耗时。
发明内容
本发明的目的在于提供一种离线数据包存储分析方法及装置,用以改善现有技术中对离线数据包处理效率不高的问题。
第一方面,本申请实施例提供一种离线数据包存储分析方法,该方法包括:获取离线数据包,并将离线数据包发送至多个处理CPU,每个所述处理CPU与一个处理线程绑定;处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区;利用读线程和写线程将数据包块写入共享内存;将数据包块通过索引方式从共享内存中直接写入磁盘。
上述实现过程中,针对网卡流量进行离线分析,从网络接口接收到的离线数据包先被分散至不同的处理CPU进行处理,实现负载的均衡,提高处理效率。然后离线数据包会被进行拆分处理,以使离线数据包被多个处理线程并行处理,从而可以并行化分析离线数据包,进一步提高处理效率。对离线数据包建立各种索引,离线数据包会存放在磁盘上不同的文件中,为了高效检索,还有索引文件,均为并行化处理,最终领导线程负责收集处理结果并汇总。
在本发明的一些实施例中,处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区的步骤,包括:为每个处理CPU对应的处理线程创建一个单独的内存区域;每个处理线程在与其对应的区域中拆分离线数据包,并将拆分得到的数据包括写入到每个独立的内存缓冲区。
在本发明的一些实施例中,将数据包块通过索引方式从共享内存中直接写入磁盘的步骤,包括:为每个读线程和写线程对应创建一个索引写线程以及线程生产者消费者队列;将需要进行文件旋转的数据包块的时间戳索引传递至线程生产者消费者队列中;索引写线程监视线程生产者消费者队列中是否有新时间戳索引;若有新时间戳索引,则获取新时间戳索引,并创建一个RocksDB SSTable;根据RocksDB SSTable将与新时间戳索引对应的数据刷新到磁盘中。
在本发明的一些实施例中,将数据包块通过索引方式从共享内存中直接写入磁盘的步骤之后,方法还包括:将存储于磁盘上的离线数据包整体拆分为不同的任务;多个工作线程对不同任务进行读取和分析,并得到处理结果;领导线程收集所有处理结果,并对处理结果进行汇总。
第二方面,本申请实施例提供一种离线数据包存储分析装置,装置包括:离线数据包获取模块,用于获取离线数据包,并将离线数据包发送至多个处理CPU,每个所述处理CPU与一个处理线程绑定;离线数据包拆分模块,用于处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区;共享内存索引模块,用于利用读线程和写线程将数据包块写入共享内存;磁盘写入模块,用于将数据包块通过索引方式从共享内存中直接写入磁盘。
在本发明的一些实施例中,离线数据包拆分模块包括:内存区域创建单元,用于为每个处理CPU对应的处理线程创建一个单独的内存区域;拆分单元,用于每个处理线程在与其对应的区域中拆分离线数据包;块读取单元,用于依次从拆分后的离线数据包中读取一个块;异步写入单元,用于对块进行索引,并开始异步写入。
在本发明的一些实施例中,磁盘写入模块包括:线程创建模块,用于为每个读线程和写线程对应创建一个索引写线程以及线程生产者消费者队列;时间戳索引传递模块,用于将需要进行文件旋转的数据包块的时间戳索引传递至线程生产者消费者队列中;监视模块,用于索引写线程监视线程生产者消费者队列中是否有新时间戳索引;数据库表创建模块,用于若有新时间戳索引,则获取新时间戳索引,并创建一个RocksDB SSTable;数据刷新模块,用于根据RocksDB SSTable将与新时间戳索引对应的数据刷新到磁盘中。
在本发明的一些实施例中,装置还包括:任务获取模块,用于将存储于磁盘上的离线数据包整体拆分为不同的任务;处理模块,用于多个工作线程对不同任务进行读取和分析,并得到处理结果;汇总模块,用于领导线程收集所有处理结果,并对处理结果进行汇总。
第三方面,本申请实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种离线数据包存储分析方法的流程图;
图2为本发明实施例提供的一种离线数据包存储分析装置的结构框图;
图3为本发明实施例提供的一种电子设备的结构框图。
图标:100-离线数据包存储分析装置;110-离线数据包获取模块;120-离线数据包拆分模块;130-共享内存索引模块;140-磁盘写入模块;101-存储器;102-处理器;103-通信接口。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。
请参看图1,图1为本发明实施例提供的一种离线数据包存储分析方法的流程图。该离线数据包存储分析方法包括以下步骤:
步骤S110:获取离线数据包,并将离线数据包发送至多个处理CPU。
每个处理CPU与一个处理线程绑定。一枚处理器中集成两个或多个处理CPU,也被称为计算引擎、处理内核等,该处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。其在一个时钟周期内能处理更多的任务,性能更高。
在获取离线数据包时,可以通过AF_PACKET出色的负载均衡功能,将网络接口控制器(Network Interface Controller,NIC)上的数据包使用AF_PACKET的PACKET_FANOUT分散到多个处理CPU上,以提高处理效率。
步骤S120:处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区。
在本发明的一些实施例中,处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区时,可以先为每个处理CPU对应的处理线程创建一个单独的内存区域,每个处理线程在与其对应的区域中拆分离线数据包,然后依次从拆分后的所述离线数据包中读取一个块;对所述块进行索引,并开始异步写入。
具体地,不同的处理线程创建一个单独的内存区域,处理线程在这些区域中拆分传入的离线数据包,并将其写入到内存缓冲区中。例如,可以使用AF_PACKET的PACKET_FANOUT为N个不同的处理线程创建一个单独的内存区域,然后请求内核在这些区域中拆分传入的数据包。再为这些内存区域中的每一个内存区域创建一个支架包读取/写入线程,在该单个支架包读取/写入线程内依次进行块处理,如,依次读取一个块,然后对其进行索引,再开始异步写入,继续读取下一个块重复索引和异步写入的动作。
步骤S130:利用读线程和写线程将数据包块写入共享内存。
步骤S140:将数据包块通过索引方式从共享内存中直接写入磁盘。
在将拆分后的离线数据包写入到每个独立的内存缓冲区时,可以为每个内存缓冲区创建一个数据包读取/写入的线程,使得在这个过程中处理CPU只需要将拆分后的离线数据包从NIC写入共享内存,然后处理CPU使用该共享内存进行O_DIRECT写入磁盘,从而减少数据包块的复制拷贝开销,提高处理效率和性能。
上述实现过程中,针对网卡流量进行离线分析,从网络接口接收到的离线数据包先被分散至不同的处理CPU进行处理,实现负载的均衡,提高处理效率。然后离线数据包会被进行拆分处理,以使离线数据包被多个处理线程并行处理,从而可以并行化分析离线数据包,进一步提高处理效率。对离线数据包建立各种索引,离线数据包会存放在磁盘上不同的文件中,为了高效检索,还有索引文件,均为并行化处理,最终领导线程负责收集处理结果并汇总。
在本发明的一些实施例中,在将数据包块通过索引方式从共享内存中直接写入磁盘时,可以先为每个读线程和写线程对应创建一个索引写线程以及线程生产者消费者队列,然后将需要进行文件旋转的数据包块的时间戳索引传递至线程生产者消费者队列中,索引写线程监视线程生产者消费者队列中是否有新时间戳索引,若有新时间戳索引,则获取新时间戳索引,并创建一个RocksDB SSTable,根据RocksDB SSTable将与新时间戳索引对应的数据刷新到磁盘中。
其中,线程生产者消费者队列,根据消费者的数量生成环状缓冲区,环状缓冲区中每个单元用于存放每个消费者对应的数据队列的地址;消费者中包括一个哨兵消费者,哨兵消费者轮询是否有全局的可处理数量,如果有全局的可处理数量,哨兵消费者唤醒其他消费者,其他消费者被唤醒后则处理对应数据列队中的数据,每处理一个数据,全局的可处理数量自减,直到全局的可处理数量小于阈值,其他消费者进入休眠状态,哨兵消费者回到轮询步骤;生产者产生数据后平均分配到每个消费者对应的数据队列中,每产生一个数据,全局的可处理数量自增,数据产生总量自增。其中,每个消费者对应的数据队列为无锁队列。无锁队列可以让生产和消费者之间解耦,之间不需要资源竞争冲突,提高程序并行操作,从而提高处理性能。
在本发明的一些实施例中,将数据包块通过索引方式从共享内存中直接写入磁盘的步骤之后,方法还包括:将存储于磁盘上的离线数据包整体拆分为不同的任务;多个工作线程对不同任务进行读取和分析,并得到处理结果;领导线程收集所有处理结果,并对处理结果进行汇总。
读线程需要非常快速地读取数据包块,并对其进行索引,然后将其写入内核的缓存之中,再异步执行所有磁盘操作,由于CPU忙于索引操作,需要耗费大量的时间,因此,索引写操作被降级到一个单独的索引写线程,对于每个读/写线程,都会创建一个索引写线程,并创建一个线程生产者消费者队列来将它们链接起来。当需要进行旋转数据存储文件时,它只需要传递到队列中的时间戳索引,索引写线程处于无限循环中,监视队列中是否有新时间戳索引,当获取新索引后,它将创建一个RocksDB SSTable,遍历该索引以填充该表,然后将该RocksDB SSTable对应的数据刷新到磁盘。其中,数据包会被拆分为若干文件存储,每40M存储一个文件。由于索引所花的时间/精力比数据包直接写入少得多,因此索引写线程按顺序执行所有操作,在将索引刷新到磁盘时阻塞,然后将该索引移到其可用状态位置。
在写索引的过程,设置单独的索引写线程处理,从而避免全局索引表的冲突,大大提高处理性能;既可以对基于时间的高效检索又可以对数据包进行数据的高效分析采集处理;当对磁盘流量数据处理的过程通过设置多线程并行处理,可将磁盘上的数据块按照时间戳索引找到不同的数据表,多个工作线程数据的读取分析处理不同的数据表,领导线程负责收集每个工作线程的处理结果并汇总返回。
基于同样的发明构思,本发明还提出一种离线数据包存储分析装置100,请参看图2,图2为本发明实施例提供的一种离线数据包存储分析装置的结构框图。该离线数据包存储分析装置包括:
离线数据包获取模块110,用于获取离线数据包,并将离线数据包发送至多个处理CPU,每个处理CPU与一个处理线程绑定。
离线数据包拆分模块120,用于处理线程对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区;
共享内存索引模块130,用于利用读线程和写线程将数据包块写入共享内存;
磁盘写入模块140,用于将数据包块通过索引方式从共享内存中直接写入磁盘。
在本发明的一些实施例中,离线数据包拆分模块120包括:
内存区域创建单元,用于为每个处理CPU对应的处理线程创建一个单独的内存区域;
拆分单元,用于每个处理线程在与其对应的区域中拆分离线数据包;
块读取单元,用于依次从拆分后的所述离线数据包中读取一个块;
异步写入单元,用于对所述块进行索引,并开始异步写入。
在本发明的一些实施例中,磁盘写入模块140包括:
线程创建模块,用于为每个读线程和写线程对应创建一个索引写线程以及线程生产者消费者队列;
时间戳索引传递模块,用于将需要进行文件旋转的数据包块的时间戳索引传递至线程生产者消费者队列中;
监视模块,用于索引写线程监视线程生产者消费者队列中是否有新时间戳索引;
数据库表创建模块,用于若有新时间戳索引,则获取新时间戳索引,并创建一个RocksDB SSTable;
数据刷新模块,用于根据RocksDB SSTable将与新时间戳索引对应的数据刷新到磁盘中。
在本发明的一些实施例中,装置还包括:
任务获取模块,用于将存储于磁盘上的离线数据包整体拆分为不同的任务;
处理模块,用于多个工作线程对不同任务进行读取和分析,并得到处理结果;
汇总模块,用于领导线程收集所有处理结果,并对处理结果进行汇总。
请参阅图3,图3为本申请实施例提供的电子设备的一种示意性结构框图。电子设备包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,如本申请实施例所提供的离线数据包存储分析装置100对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图3所示的结构仅为示意,电子设备还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上,本申请实施例提供的一种离线数据包存储分析方法及装置,该方法包括:获取离线数据包,并将离线数据包发送至多个处理CPU;处理CPU对离线数据包进行拆分,以得到数据包块,并将数据包块写入对应的内存缓冲区;利用读线程和写线程将数据包块写入共享内存;将数据包块通过索引方式从共享内存中直接写入磁盘。上述实现过程中,针对网卡流量进行离线分析,从网络接口接收到的离线数据包先被分散至不同的处理CPU进行处理,实现负载的均衡,提高处理效率。然后离线数据包会被进行拆分处理,以使离线数据包被多个处理线程并行处理,从而可以并行化分析离线数据包,进一步提高处理效率。对离线数据包建立各种索引,离线数据包会存放在磁盘上不同的文件中,为了高效检索,还有索引文件,均为并行化处理,最终领导线程负责收集处理结果并汇总。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (8)
1.一种离线数据包存储分析方法,其特征在于,所述方法包括:
获取离线数据包,并将所述离线数据包发送至多个处理CPU,每个所述处理CPU与一个处理线程绑定;
所述处理线程对所述离线数据包进行拆分,以得到数据包块,并将所述数据包块写入对应的内存缓冲区;
利用读线程和写线程将所述数据包块写入共享内存;
将所述数据包块通过索引方式从所述共享内存中直接写入磁盘;
将所述数据包块通过索引方式从所述共享内存中直接写入磁盘的步骤,包括:
为每个所述读线程和所述写线程对应创建一个索引写线程以及线程生产者消费者队列;
将需要进行文件旋转的数据包块的时间戳索引传递至所述线程生产者消费者队列中;
所述索引写线程监视所述线程生产者消费者队列中是否有新时间戳索引;
若有所述新时间戳索引,则获取所述新时间戳索引,并创建一个RocksDB SSTable;
根据所述RocksDB SSTable将与所述新时间戳索引对应的数据刷新到磁盘中。
2.根据权利要求1所述的方法,其特征在于,所述处理线程对所述离线数据包进行拆分,以得到数据包块,并将所述数据包块写入对应的内存缓冲区的步骤,包括:
为每个所述处理CPU对应的所述处理线程创建一个单独的内存区域;
每个处理线程在与其对应的区域中拆分所述离线数据包;
依次从拆分后的所述离线数据包中读取一个块;
对所述块进行索引,并开始异步写入。
3.根据权利要求1所述的方法,其特征在于,将所述数据包块通过索引方式从所述共享内存中直接写入磁盘的步骤之后,所述方法还包括:
将存储于所述磁盘上的离线数据包整体拆分为不同的任务;
多个工作线程对不同所述任务进行读取和分析,并得到处理结果;
领导线程收集所有处理结果,并对所述处理结果进行汇总。
4.一种离线数据包存储分析装置,其特征在于,所述装置包括:
离线数据包获取模块,用于获取离线数据包,并将所述离线数据包发送至多个处理CPU,每个所述处理CPU与一个处理线程绑定;
离线数据包拆分模块,用于所述处理线程对所述离线数据包进行拆分,以得到数据包块,并将所述数据包块写入对应的内存缓冲区;
共享内存索引模块,用于利用读线程和写线程将所述数据包块写入共享内存;
磁盘写入模块,用于将所述数据包块通过索引方式从所述共享内存中直接写入磁盘;
所述磁盘写入模块包括:
线程创建模块,用于为每个所述读线程和所述写线程对应创建一个索引写线程以及线程生产者消费者队列;
时间戳索引传递模块,用于将需要进行文件旋转的数据包块的时间戳索引传递至所述线程生产者消费者队列中;
监视模块,用于所述索引写线程监视所述线程生产者消费者队列中是否有新时间戳索引;
数据库表创建模块,用于若有所述新时间戳索引,则获取所述新时间戳索引,并创建一个RocksDB SSTable;
数据刷新模块,用于根据所述RocksDB SSTable将与所述新时间戳索引对应的数据刷新到磁盘中。
5.根据权利要求4所述的装置,其特征在于,所述离线数据包拆分模块包括:
内存区域创建单元,用于为每个所述处理CPU对应的所述处理线程创建一个单独的内存区域;
拆分单元,用于每个处理线程在与其对应的区域中拆分所述离线数据包;
块读取单元,用于依次从拆分后的所述离线数据包中读取一个块;
异步写入单元,用于对所述块进行索引,并开始异步写入。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括:
任务获取模块,用于将存储于所述磁盘上的离线数据包整体拆分为不同的任务;
处理模块,用于多个工作线程对不同所述任务进行读取和分析,并得到处理结果;
汇总模块,用于领导线程收集所有处理结果,并对所述处理结果进行汇总。
7.一种电子设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-3中任一项所述的方法。
8.一种可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011204746.6A CN112256208B (zh) | 2020-11-02 | 2020-11-02 | 一种离线数据包存储分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011204746.6A CN112256208B (zh) | 2020-11-02 | 2020-11-02 | 一种离线数据包存储分析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256208A CN112256208A (zh) | 2021-01-22 |
CN112256208B true CN112256208B (zh) | 2023-07-28 |
Family
ID=74267633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011204746.6A Active CN112256208B (zh) | 2020-11-02 | 2020-11-02 | 一种离线数据包存储分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256208B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115400416A (zh) * | 2022-08-24 | 2022-11-29 | 网易(杭州)网络有限公司 | 游戏中离线数据的处理方法、装置、服务器及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN109962972A (zh) * | 2018-12-25 | 2019-07-02 | 阿里巴巴集团控股有限公司 | 一种离线包重组方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091226A1 (en) * | 2003-10-23 | 2005-04-28 | Yun Lin | Persistent caching directory level support |
CN1905531A (zh) * | 2006-08-11 | 2007-01-31 | 白杰 | 待发送数据的处理方法以及数据发送方法、装置 |
CN102331923B (zh) * | 2011-10-13 | 2015-04-22 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
US8625422B1 (en) * | 2012-12-20 | 2014-01-07 | Unbound Networks | Parallel processing using multi-core processor |
CN104734993B (zh) * | 2013-12-24 | 2018-05-18 | 杭州华为数字技术有限公司 | 数据分流方法及分流器 |
CN104572262B (zh) * | 2014-12-27 | 2018-09-04 | 北京奇虎科技有限公司 | 一种任务执行方法和装置 |
CN105207946B (zh) * | 2015-08-27 | 2018-05-01 | 国家计算机网络与信息安全管理中心 | 一种网络数据包负载均衡和预解析方法 |
CN107241305B (zh) * | 2016-12-28 | 2020-11-10 | 神州灵云(北京)科技有限公司 | 一种基于多核处理器的网络协议分析系统及其分析方法 |
US20190102223A1 (en) * | 2017-09-29 | 2019-04-04 | Niall Power | System, Apparatus And Method For Real-Time Activated Scheduling In A Queue Management Device |
-
2020
- 2020-11-02 CN CN202011204746.6A patent/CN112256208B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN109962972A (zh) * | 2018-12-25 | 2019-07-02 | 阿里巴巴集团控股有限公司 | 一种离线包重组方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112256208A (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209352B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
US10262032B2 (en) | Cache based efficient access scheduling for super scaled stream processing systems | |
US10409650B2 (en) | Efficient access scheduling for super scaled stream processing systems | |
US20080010497A1 (en) | Selecting a Logging Method via Metadata | |
US20100241760A1 (en) | Web Front-End Throttling | |
CN111241122B (zh) | 任务监测方法、装置、电子设备和可读存储介质 | |
CN112182043B (zh) | 日志数据查询方法、装置、设备及存储介质 | |
CN110955857A (zh) | 一种用于高并发环境的业务处理方法及装置 | |
US12072892B2 (en) | Data ingestion with spatial and temporal locality | |
CN113760658A (zh) | 一种监控方法、装置及设备 | |
CN112256208B (zh) | 一种离线数据包存储分析方法及装置 | |
CN112800058A (zh) | 一种HBase二级索引的实现方法 | |
CN108022028B (zh) | 一种资源处理方法及装置 | |
CN113626869B (zh) | 数据处理方法、系统、电子设备以及存储介质 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
US9154515B1 (en) | Systems and methods identifying and reacting to potentially malicious activity | |
CN112416974A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN114153602A (zh) | 一种基于硬件numa的一致性维护系统和一致性维护服务器 | |
CN114218303A (zh) | 一种交易数据的处理系统、处理方法、介质和设备 | |
Tachibana et al. | A study on the performance of web applications based on RoR in a highly consolidated server with container-based virtualization | |
US20130179731A1 (en) | Recovering from a thread hang | |
CN110888865A (zh) | 一种基于单向链表的数据处理方法及装置 | |
CN117435367B (zh) | 用户行为处理方法、装置、设备、存储介质和程序产品 | |
CN116126546B (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 |