摘 要:本文分别从队列技术、多线程技术、分布式技术在网络服务智能检测系统中的应用以及网络服务智能检测系统的访问控制这几方面来阐述网络服务智能监测平台关键技术。
关键词:网络服务;智能检测;关键技术
一、队列技术在网络服务智能检测系统中的应用
网络服务智能检测平台中进行网络服务信息采集是必不可少的。在网络服务信息采集的过程中,对网页上所含有的URL进行采集是首要做的,传统的采集系统是从一个或者若干个初始网页上的URL开始,对所有的URL进行采集,最后统一收集到一个待抓取URL的队列中。传统的采集系统的采集效果是比较全面的,几乎不会发生信息的遗漏,但是对于专门研究某一方面的研究人员来讲,有很多无用的信息,这样不仅会浪费研究人员的时间,甚至还会影响研究结果的准确性。针对网络服务智能检测平台,主要是对网上社区/BBS和博客(BLOG)网络服务相关的URL进行关注。这样使得研究人员免受无用信息的干扰,同时也能够使得网路资源和系统的存储资源得到大大的节省。因此,根据实际需求,确定了一下几个队列:
(1)待采集站点队列
在待采集站点队列里存放着等待采集的网站URL,在这里只关注商业网站,商业网站是网民舆论的聚集地,其网上社区和博客的影响力是很大的,这些网站一般链接到其上面的中小型网站也比较集中,这样便于采集其他网站的URL,使得漏洞很大程度的减少。
(2)待采集URL队列
此队列的URL来自于待采集站点,将这些URL交给系统进行采集处理之前还需将这些URL经过分析和过滤。
(3)实际采集队列
URL经过分析处理后,符合条件的进入到实际采集队列中,准备进入下一步的信息采集流程。
(4)完成采集队列
此队列中都是已经完成采集任务的URL,,并且其都标有采集完成时间。这个队列主要是为了防止系统意外重启,重复对URL信息采集,浪费系统资源。
二、多线程技术在网络服务智能检测系统中的应用
windows操作系统是一个多任务的系统。线程是程序中的一个执行流,多个线程就组成一个进程。每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的好处在于可以提高CPU的利用率。
在系统的多线程设计中,从宏观的角度来看,使用了池化技术中的线程池技术,利用这项技术把系统的总线程数量控制在200个。由于C#的线程池在测试的时候发生了并发数量过大,系统等待线程执行时间过长而自动收回线程,导致系统工作停止的现象,所以在构造线程池的时候,系统没有使用C#中所提供的ThreadPool类,而是根据线程池技术的基本思想使用List对象来构造一个线程池,根据己经建立和开启的线程状态来决定对后续线程的控制。
三、分布式技术在网络服务智能检测系统中的应用
分布式技术可分为采集分布式和存储分布式。本系统采用采集分布式,采集过的网址会做标记,同时记录了采集时间。在采集系统进行采集时,如果遇到有标记的网址,需要检查其采集时间,检查时间是否和上次采集时间的间隔符合访问频度,如果符合就进行采集,如果不符合就放弃对这个网址的采集;如果没有标记,就直接采集此网址。采用存储分布式的主要原因:首先,保证数据安全;其次,存储系统运行起来的所有数据;再次,减少查询时的工作量。
四、网络服务智能检测系统的访问控制
系统的访问控制主要包括两个方面:一个方面是系统对于网页采集速度的控制,另一个方面是系统对于网页再次采集的控制。
(一)系统对于网页采集速度的控制
每个网站为了提高自己的知名度,都会允许搜索引擎中的网络爬虫或者其他采集器对其网站进行内容抓取,以便互联网用户可以搜索到这些网站。但是如果对网络爬虫或者网络信息采集器的抓取行为不加限制,就会导致网站服务器带宽资源被大量来自爬虫的连接请求占用,因为用程序发起的连接请求频度可以达到每秒十几次,这使得普通用户对网站的正常访问受到影响,更严重的还会导致网站服务器当机。所以大部分网站会限制IP地址单位时间内对其的访问次数,如果超出规定的次数,就会自动禁止这个IP地址与网站的连接。此问题的解决方法是尽量使得采集系统对网站的访问贴近于普通网络用户的访问习惯。对于普通互联网用户来说,使用浏览器访问一个网页,他的访问频率是随机的。于是,采集系统中访问网页的线程的休眠时间被赋予一个随机数,这可以用编程语言中的random()方法实现。这样做的目的就是形成采集系统对网页的随机访问效果,模拟人类的访问习惯,防止所在的IP地址被屏蔽。
(二)系统对于网页再次采集的控制
每个网站的更新周期不同,对于此情况,如果每个网站都同等对待的话,必然会造成网络资源的浪费以及采集率比较低。因此,在采集过程中,根据每个网站更新周期的不同,分配不同采集时间,并加以各自的权重。如果前后两次采集数据比较后,连续5次没有任何变化,那么将访问时间间隔扩大1-1.5倍;如果连续采集5次都有更新,那么访问的时间间隔缩小0.3-0.5倍。
参考文献:
[1] 唐海娜,李俊. 网络性能监测技术综述[J].计算机应用研究, 2004, (08) .
[2] 陈涛. 网络服务性能监测系统设计与实现[J]. 现代电子技术, 2010, (10) :133-135
[3] 高晓红. 基于网络的智能监控系统的分析与设计?[D]. ?吉林大学,2004,(04).