ERU数据采集实现的关键技术包括数据包采集处理和数据包还原处理。由于是在网络数据流上进行实时数据流建模,对实时数据流的处理能力极其关键。原始数据的采集是否完整对上层的知识发现和数据挖掘分析结果的准确性影响巨大,而数据包是否能实时进行正确还原则直接影响下一步的页面解析建模结果。下面主要对这两个数据采集和处理过程进行分析。
(1)原始数据包采集设计。
①业务功能。
数据包采集模块运行于主线程,实现原始数据包的采集过滤,并将采集到的符合IP条件的数据包放入数据包处理队列,交由组包还原模块读取还原,采集处理流程如图2-4。
在这个数据采集流程中,关键技术在于按照网络流量监测列表对数据组包进行实时过滤,这样可以排除掉网络中大部分的非电子资源访问数据。由于对实时性要求比较高,要求采集器有较高的CPU(中央处理器)处理能力,须采取多线程机制保证。
②数据结构。
数据包处理队列:符合采集要求的FIFO(先入先出)包队列;采集模块实现包的放入,组包还原模块实现包的弹出还原;队列默认最大值为20 000,可通过配置文件配置最大值。
IP白名单数组:需要进行数据采集的Server(服务器)IP列表。
IP黑名单数组:不需要进行数据采集的Server IP或Client(客户端)IP列表。
IP白名单和黑名单的IP数据结构定义如下:
图2-4 数据包采集功能流程图(www.xing528.com)
(2)组包还原模块设计。
①业务功能。
组包还原模块作为一个独立的子线程运行。此模块循环读取由数据包采集模块采集生成的数据包处理队列,依据HTTP协议将采集数据包组合还原成完整的HTML数据,并将还原成功的HTML数据放入HTML数据完成队列,交由数据通信模块将HTML数据发送至采集控制台。访问阻断处理包含在组包还原模块中。
②功能流程图。
组包还原模块功能流程图如图2-5所示。
图2-5 组包还原功能流程图
组包还原模块的核心功能是还原HTML响应数据包,其实现相对复杂,主要过程包括:需要通过数据包的seq和ack判断是否为顺序响应包或者乱序响应包,如果是乱序响应包要进行乱序还原处理;然后,根据响应头部数据获取会话数据的内容类型和传输方式并进行会话还原;最后,将成功还原的会话放入HTML完成队列供后续页面解析模块进行数据建模。
③数据结构。
还原会话数组:HTML数据会话组成的数组,由组包还原模块创建并使用;默认最大值为6 000。
HTML完成队列:还原会话数组中的会话在重组完成后,便会放入HTML完成队列;队列最大值等于还原会话数组的最大值。
会话数据结构如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。