论文部分内容阅读
随着社会经济的飞速发展,互联网应用已经成为人们日常生活中的一部分,及时准确地获得网络应用数据也变得越来越重要。网络爬虫作为一种通过对互联网数据进行精确信息抓取来满足用户对特定数据需求的计算机技术,也面临着巨大的机遇与变革,在这样的技术背景下早期的网络爬虫技术已难当重任。论文分析了已有的爬虫系统在技术实现上的不足之处,根据大数据时代的海量页面数据抓取需求设计了一套基于微服务架构的分布式爬虫系统,采用了Spring Cloud微服务框架,实现了爬虫系统不同微服务模块之间的架构隔离;不同微服务之间采用消息中间件或者远程调用进行数据通信,以此来提升分布式爬虫系统的可用性。本课题的主要工作包括设计并实现了分布式系统环境下的全局唯一ID生成算法;基于布隆过滤器和Redis的URL双重判重机制;分布式场景下基于客户端的负载均衡算法策略;分布式场景下应对海量请求的限流算法策略;利用基于线程池的多线程爬取以及采用动态代理池技术应对反爬虫来提升爬虫的抓取效率和成功率;页面解析微服务采用基于CSS选择器的自定义页面数据提取以及基于Redis的消费端防止重复消费机制;应对海量数据存储场景实现了基于Mongo DB的数据库副本与分片、基于Redis哨兵集群与持久化存储以此确保高可用。通过实验测试,基于微服务架构的分布式爬虫系统,既能承载海量用户的爬虫请求,又能满足用户的不同数据提取需求,同时系统的可维护性和可拓展性能力又强于传统爬虫系统,达到了系统设计要求。