一种基于网络数据的通用查询系统及查询方法

文档序号:9754311阅读:1645来源:国知局
一种基于网络数据的通用查询系统及查询方法
【技术领域】
[0001]本发明涉及一种基于网络数据的通用查询系统及查询方法,特别是涉及一种适用于提供海量网络数据查询服务和检索服务的,基于网络数据的通用查询系统及查询方法。
【背景技术】
[0002]网络流量分析系统主要针对的是海量的数据,其步骤是采集,分析,存储。能够准确,快速的从海量的存储中检索数据,并能够快速的将数据返回给查询终端,是系统的核心功能。
[0003]传统的分析方法主要通过数据库进行数据存储,查询模块采用结构化语言进行查询。其存储效率低,查询速度慢,且系统支持的网络流量也十分偏低,系统瓶颈十分明显。
[0004]传统的数据采集系统,采用客户端+服务器的模式。数据库采用单服务器或集群模式。服务器采用数据库进行存储,查询采用结构化语言进行查询。查询模块通过在数据库生成若干个表和表字段,根据分析的网络流量,将最新的统计数据更新到数据库中。如果需要保存历史数据,随着分析的时间越来越长,数据表的记录会呈现指数级的增长。
[0005]传统的数据采集系统,查询历史数据需要存储历史数据,存储历史数据需要保存每秒的统计数据,这样,分析的时间越久,表的记录越多。假如系统每秒能够分析20万条会话,那么一天的记录将达到17.28亿条,一周的记录将达到120.96亿条,时间越长,记录越大,且记录数更是一个天文数字。这对于无论是关系数据库还是非关系数据库都是难以完成的任务。
[0006]传统的数据采集系统,数据库的成本非常昂贵,抬高了整个系统的成本,同时,分析服务器和数据库之间的带宽成为系统的主要瓶颈;并且,只能查询到最新的统计数据,不能查看历史的统计数据,即使支持查询历史,也会导致在分析时间,分析流量的等级上会大幅度下降。

【发明内容】

[0007]本发明要解决的技术问题是提供一种采集,分析,存储海量数据,针对多个查询终端的数据查询或检索请求,系统能够快速,准确,均衡的将数据返回给查询终端想要检索的数据的,基于网络数据的通用查询系统及查询方法。
[0008]本发明采用的技术方案如下:一种基于网络数据的通用查询系统,其特征在于:包括分析服务器;所述分析服务器包括,
采集网络所有出口数据的数据流采集模块;
对数据包进行分析的分析模块;
对分析后的数据包进行存储的存储模块;
对存储的数据包进行查询的查询模块。
[0009]数据流是指满足某一特征的一组数据包(比如数据包的源IP地址和目的IP地址分别是A和B,那么所有具有该特征的数据包叫做数据流,也叫IP会话流)。
[0010]原始数据包是二进制数据,识别就是按照OSI七层协议模型来解释数据包的二进制数据。比如一个TCP数据包,从物理层,数据链路层,网络层到传输层,依次识别其二进制数据为其对应的协议和字段,并将协议和字段保存到识别结果中。识别是分析的基础,识别后,知道每个数据包属于什么协议。分析时,根据协议来进行数据统计。
[0011]统计数据是指在某个时间范围内,针对数据流的一些字段(总数据包数,总字节数)进行统计。
[0012]所述数据包分析模块,包括,
数据包识别模块,识别数据包二进制数据所对应的协议和字段作为识别结果;
分析线程池调度模块,调度一个分析线程对所述识别结果和原始数据包进行分析; 数据分析模块,将数据包按照不同的协议进行数据包统计。
[0013]数据分析主要是将数据按不同的协议进行数据统计,比如:IP协议统计总字节数,TCP协议统计重传次数。
[0014]所述数据包分析模块还包括数据包缓存模块,用于存放数据包识别后的识别结果和原始数据包;
跨秒检测模块,检查数据包收集一旦跨秒,则提交当前缓存数据到分析线程池。
[0015]数据包的时间戳精度为纳秒,每收集完I秒的数据包,就进行后面的分析流程,2015/11/25 23:05:01:999999999 到 2015/11/25 23:05:02:111111111 便是跨秒。
[0016]所述存储模块包括,
合并线程模块,根据所要查询的数据的时间范围,确定所要用的时间桶和时间桶的个数;
时间桶间隔时间判断模块,计算当前时间是否满足各个时间桶的时间间隔;
时间桶合并模块,将满足各个时间桶时间间隔的对应的时间桶进行合并;
数据压缩存储模块,合并线程在合并完成后,将合并结果提交给存储线程,存储线程将数据压缩后写入磁盘。
[0017]所述查询模块包括,
查询监听模块,监听客户端的查询请求;
查询线程启动模块,启动查询线程开始查询流程;
查询时间校正模块,对查询时间进行校正,计算要查询的时间桶和时间桶的点数; 查询条件设置模块,设置要用于检索数据的查询条件;
记录合并模块,将查询到的各个时间桶的点多数据进行合并;
查询数据返回模块,将查询到的数据返回给客户端。
[0018]所述查询模块还包括压缩模块,对查询到的数据进行压缩后返回给客户端。
[0019]所述查询线程启动模块有两个以上的查询线程与两个以上的查询客户端一一对应。
[0020]一种基于网络数据的通用查询方法,具体方法步骤为:
一、采集网络所有出口数据的数据流(如网络中出口交换机的数据流);
二、对数据包进行分析;
三、对分析后的数据包进行存储;
四、对存储的数据包进行查询。[0021 ]其中,所述步骤二的具体方法步骤为:
2.1、识别数据包二进制数据所对应的协议和字段作为识别结果;
2.2、调度一个分析线程对所述识别结果和原始数据包进行分析;
2.3、将数据包按照不同的协议进行数据包统计。
[0022]所述步骤2.1和步骤2.2之间的步骤还包括,将数据包识别后的识别结果和原始数据包存入数据包缓存中;检查数据包收集一旦跨秒,则提交当前缓存数据到分析线程池。
[0023]所述步骤三的具体方法步骤为:
3.1、合并线程,根据所要查询的数据的时间范围,确定所要用的时间桶和时间桶的个数;
3.2、计算当前时间是否满足各个时间桶的时间间隔,是则进入下一步,否则继续等待;
3.3、将满足各个时间桶时间间隔的对应的时间桶进行合并;
3.4、合并线程在合并完成后,将合并结果提交给存储线程,存储线程将数据压缩后写入磁盘。
[0024]如果查询I天的数据,查询I秒桶,需要查询3600*24个点(I个点为I秒)的数据;如果查询I小时桶,需要查询24个点的数据(I个点I小时),这就是合并的意义:快速提高查询效率。合并线程通过计算当前时间是否满足各个桶的间隔时间(比如:从2015/11/25 00:00:00开始,00:00:10时,合并第一个10秒点,00:00: 20时,合并第二个10秒点,其余类似,00:01:00时,合并第一个I分钟点,00:10:00时,合并第一个10分钟点,01:00:00时,合并第一个I小时点,2015/11/26 00:00:00时,合并第一个I天点),若满足,则合并对应桶。一共6个时间桶(时间间隔:I秒,10秒,I分,10分,I小时,I天)。
[0025]所述步骤四的具体方法步骤包括:
4.1、监听客户端的查询请求,判断是否有查询请求,是则进入下一步,否则继续监听;
4.2、启动并分配查询线程开始查询流程;
4.3、结合服务器最新分析时间和最早分析时间,对查询时间进行校正,计算要查询的时间桶和时间桶的点数;
4.4、根据检索数据过滤条件,找出所有请求字段的依赖字段,并将请求字段和依赖字段作为要查询的字段;
4.5、将校正后的查询时间、要查询的时间桶、要查询的时间桶的点数和查询的字段传给存储模块;
4.6、存储模块每读完一个点的数据,就回调给查询模块的数据解析函数,根据过滤条件中的键值字段进行第一次过滤;
4.7、将查询到的时间桶的多个点的数据进行合并;
4.8、根据过滤条件中的非键值字段进行二次过滤;
4.9、将查询到的数据进行压缩后返回给客户端。
[0026]回溯分析服务器监听到客户端的查询请求,线程池启动新查询线程开始查询流程;校正查询时间,计算要查询的桶和查询的点数(共6个时间桶,I秒,10秒,I分,10分,I小时,I天,表示每个点的时间单位);根据查询的开始时间和结束时间(该开始时间和结束时间是查询请求终端传给服务器的参数,然后结合服务器分析最新时间和服务器最早分析时间,来校正查询时间:max(开始时间,服务器最早分析时间,min(结束时间,服务器最新分析时间))),计算需要查询桶的组合,比如需要查询70分钟数据,需要查询一个小时桶加上一个10分钟桶。
[0027]针对过滤条件,解析出请求的字段;根据请求的字段,找出所有字段的依赖字段(在查询该字段时,需要先查询出的字段。比如:每秒字节数的依赖字段是总字节数,因为每秒字节数=总字节数/查询时间段),并将两者(请求字段,依赖字段)作为要查询的字段;
过滤条件(其作用主要用于检索数据,比如:我想查询一个时间段总字节数大于100字节的数据,这时就需要过滤器。过滤器是基于字段的。系统内部内置了大量字段,过滤器将字段用&&,I I,and,o
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1