论文部分内容阅读
计算机技术与网络技术的迅猛发展将我们带入了一个全新的互联网时代。网民们每天在互联网上可以产生大量的行为数据。本课题实现的基于Actor模型的广域分布式网络爬虫系统就是用于获取互联网上大量公开数据的一个基础框架系统。该系统通过搭建一套完整的分布式爬虫框架,为爬虫的开发提供了一体化的服务。得益于开源社区的活跃,目前已经有了一些比较成熟的开源爬虫系统,其中以Java版的Heritrix/Nutch和Python版的Scrapy较为被大家熟知。这些框架大都功能齐全,文档丰富,但是也存在一定的问题,在特定场景下,可能并不是最佳的选择。且由于长期的发展,其代码规模也十分庞大,在出现问题时较难诊断。另外,它们对于分布式的支持要么比较薄弱,要么依赖于其它分布式框架,在现今机器资源充足的条件下,显得比较单薄。在此背景下,本课题实现的基于Actor模型的广域分布式爬虫框架,是一个供爬虫开发者使用的系统。在该框架之上,开发者可以快速有效的完成一个分布式爬虫任务。本课题从实际的爬虫任务的功能和性能需求出发,制定了总体的设计方案,并以此为基础设计了一套完成的爬虫框架。从总体上看,本课题实现的系统分为五个模块,包括Master模块,Slave模块,Client模块,Worker模块和存储模块。其中,Master模块负责框架整体的运行;Slave模块负责在Slave节点建立运行进程;Worker模块负责具体页面的爬取解析和存储;Client模块负责作业的提交和运行时的操作管理;后端存储模块提供了数据的存储方式。各个模块在功能和运行态上相互独立,模块间的通信主要通过HTTP方式进行。在各个模块内部,又包含多个子模块。模块内各个子模块之间主要通过Actor模型进行消息通信。本文从详细设计与实现角度对系统进行了全面的剖析,并对系统进行了功能和性能测试。最后,本文对本课题完成的系统做了总结和展望,提出一些可行的改进方案。