论文部分内容阅读
在互联网技术迅速发展和人类社交需求日益增长的时代,分布式爬虫已被成熟的应用到各大搜索引擎和检索领域。本文提出众包协作模式的爬虫架构也是分布式系统,但任务分配方式采用“能者多劳”思想,可用资源越多的爬虫节点,获得更多任务,从而提高资源利用率、任务执行效率、节省执行时间和费用开销等。因此,研究基于众包协作模式的最优化任务分配方法有重要的学术意义和应用前景。本文将众包模式下的爬行任务分配问题分为静态爬行任务分配和动态爬行任务分配两大部分。静态爬行任务分配问题是指整个系统尚未执行任务,即任务序列没有被执行,爬虫节点也没有被分配任务;动态爬行任务分配问题是指整个系统在运行过程中,受外界环境和内部资源条件限制,各个任务和爬虫节点的状态动态变化。那么,在整体开销尽可能小时,如何考虑众包模式下爬虫任务的静态和动态分配问题,从而提高爬虫系统执行效率和资源利用率等,成为本文的主要研究内容。针对静态爬行任务分配问题,本文提出一种基于众包协作的静态爬行任务分配算法。该算法建立了多维度计算机资源模型,将爬虫节点自身资源进行有效量化,采用优先匹配启发式爬行任务分配算法进行任务分配,通过对费用目标函数的优化求解,使得整个静态爬行任务分配的费用最小。通过Matlab仿真验证,该算法能在满足系统需求的前提下,使得总费用最小。针对动态爬行任务分配问题,本文在静态爬行任务分配算法的基础上进行改进,提出基于时间模型的可信度定义,用来衡量每个爬虫节点的时效性,设计了融合可信度的多维度计算机资源模型,采用变异的优先匹配启发式爬行任务分配算法进行任务的动态分配,通过对具有多约束条件的费用目标函数进行优化求解,使得整个系统在动态变化的过程中,所用时间和费用都尽可能最小。通过Matlab仿真验证,与传统贪心算法相比,基于众包协作的静态爬行任务分配算法和动态爬行任务分配算法更符合使用规律,且总费用开销也更加合理,具有良好的可使用性。系统实验结果表明,众包协作模式的分布式爬行任务分配算法表现良好。