一种基于Kafka和Quartz的分布式爬虫架构及其实现方法

文档序号:9911284阅读:773来源:国知局
一种基于Kafka和Quartz的分布式爬虫架构及其实现方法
【技术领域】
[0001 ]本发明涉及计算机数据挖掘技术领域,具体地说是一种基于Kafka和Quartz的分布式爬虫架构及其实现方法。
【背景技术】
[0002]网络爬虫是搜索引擎技术的基础组成部分。网络爬虫技术是从一个或若干个初始网页的URL(Uniform Resource Locator,统一资源定位符)开始,活的初始网页上的URL,在抓取网页信息的过程中,根据网页的抓取策略,不断从当前页面上抽取新的URL放入队列,直到满足某种停止条件。然后将抓取到的网页信息存储在搜索引擎的服务器中,从而可以加快用户的搜索速度。
[0003]随着互联网的爆炸性增长,网络所承载的数据量已经远远超出人们的想象。在大数据时代,面对如此巨大的数据量,如何快速精准的检索信息,如何能够更高效的收集网络信息,显然变得至关重要。
[0004]为满足上述的要求,作为抓取工具的爬虫必须具备更加优越的性能。具备单一节点的传统爬虫架构无法满足海量数据的抓取需求。因此,便产生了支持高并发,多节点分布式部署的分布式爬虫架构。
[0005]对于分布式爬虫来说,其中有两个需要解决的重点问题是:一,爬取队列消息的多节点分发问题;二,定时爬取问题;对于解决上述两个问题,不同的分布式爬虫架构有不同的解决方案,就目前来讲,因为分布式爬虫架构往往是各个公司的核心机密,所以一般不会公开分布式爬虫的具体实现细节。已经开源的常用的分布式爬虫包括Google Crawler,Mercator ,Nutch等,但开源分布式爬虫缺乏一定的定制性,不能很好的满足多变的爬取需求。是否可以利用已有的成熟的单机爬虫框架结合分布式工具完成分布式爬虫的需求,使其可以满足大部分的爬取需求,并具备高并发,支持分布式等特征,成为众多技术人员研究的方向。
[0006]综上所述,如何能够通过单机爬虫框架结合分布式工具完成分布式爬虫的需求,实现爬取队列消息的多节点分发以及定时爬取是目前现有技术中存在的问题。
[0007]

【发明内容】

本发明的技术任务是针对以上不足之处,提供一种基于Kafka和Quartz的分布式爬虫架构及其实现方法,来解决如何能够通过单机爬虫框架结合分布式工具完成分布式爬虫的需求,实现爬取队列消息的多节点分发以及定时爬取的问题。
[0008]本发明解决其技术问题所采用的技术方案是:一种基于Kafka和Quartz的分布式爬虫架构,该爬虫架构包括基础爬虫组件、URL存储队列、基于Kafka的URL消息分发机制、基于Quartz的爬虫作业调度机制和前端控制台;
所述基础爬虫组件是基于开源的单机爬虫组件,包括页面解析生成URL、URL过滤器和页面爬取;
所述URL存储队列,采用内存数据库,内存数据库用来存储待爬取以及已经爬取完成的URL消息队列,实现分布式爬虫的增量爬取;其中,URL存储队列利用高校的内存数据库来完成,如使用键值结构自动去重的Redis,或者是具备优良性能的伯克利数据库。
[0009]所述基于Kafka的消息分发机制,采用生产者-消费者异步请求处理机制,一个生产者对应N个消费者,分别部署于不同的节点;生产者负责产生待爬取的URL消息队列,而消费者负责从待爬取队列中获取URL消息队列进行爬取,并将已完成的爬取存入已爬取队列;其中,Kafka是Linkedin开发的一种分布式的消息队列系统(Message Queue),支持分布式部署,Kafka集群有多个Broker服务器组成,每个类型的消息被定义为topic内部的消息按照一定的key和算法被分区(partit1n)存储在不同的Broker Iafka采用生产者-消费者模式来异步处理请求,信息生产者(Producer)和消费者(Consumer)可以在多个Broker上生产和消费topic,达到消除请求高峰的目的,从而提高系统稳定性和吞吐量。
[0010]所述基于Quartz的作业调度机制,负责完成对分布式爬虫架构的爬取作业的调度,爬取作业分为生产者作业(Producer Job)和消费者作业(Consumer Job)两种类型,使用不同的作业调度规则进行调度;其中,生产者作业与消费者作业的对应关系是I对N的关系,N不同,调度规则也不同,即由于N的不同,不同组的消费者作业使用不同的调度规则,故消费者作业使用不同的作业调度规则;消费者端可以部署在多台机器上,生产者仅需部署在一台机器上,这样就可以实现爬虫作业的分布式部署,通过Quartz的调度就可以实现不同节点的分布式调度。Quartz是一种开源的轻量级作业调度框架,完全由java编写,具备很大的灵活性而又不失简单性,可以用来为执行一个作业创建简单或者复杂的调度,为确保可伸缩性,Quartz采用了基于多线程的架构,Quartz同样支持分布式部署,能够并发运行多个作业,可以很好的满足分布式爬虫作业的调度需求。
[0011]所述前端控制台,负责完成对分布式爬虫的管理以及定制。
[0012]作为优选,所述页面解析生成URL负责从当前页面中提取URL链接。
[0013]更优地,所述URL过滤器负责根据爬取规则将产生URL链接进行过滤,得到符合规则的URL链接。
[0014]更优地,所述页面爬取负责符合爬取规则的URL链接进行页面抓取,定制页面抓取内容。
[0015]更优地,所述前端控制台负责完成爬取入口、爬取规则、爬取结果存储方式和调度规则的参数设定以及完成对爬取作业的启停管理和分布式爬虫的集群部署管理。
[0016]更优地,所述内存数据库自动完成数据的去重存储,完成待爬取队列的去重存储以及已爬取队列的存储,实现分布式爬虫的增量爬取和中断爬取。
[0017]—种基于Kafka和Quartz的分布式爬虫架构的实现方法,采用上述任意一种基于Kafka和Quartz的分布式爬虫架构,包括如下步骤:
(1)、通过前端控制台的页面设定爬取入口、爬取规则、爬取结果存储方式以及调度规则的参数,同时选择要部署的集群节点进行部署;
(2)、生产者作业根据基于Quartz的作业调度机制,调用基础爬虫组件根据爬虫入口,提取爬取URL链接,并去重存储在待爬取队列中;
(3)、各个结点的消费者作业根据基于Quartz的作业调度机制,调用基础爬虫组件,通过获取基于Kaf ka的消息分发机制分发到本节点的URL链接消息,对URL链接进行解析爬取,并将结果存储到系统中; (4)、通过前端控制台的页面完成对已部署爬取作业的启停管理以及各个结点的消费者作业增删管理。
[0018]本发明的一种基于Kafka和Quartz的分布式爬虫架构及其实现方法和现有技术相比,具有以下有益效果:
1、本发明是基于开源组件构建分布式爬虫,可以在利用原有技术框架的基础之上进行深度开发定制,满足特定的需求,节省开发成本;
2、Kafka与Quartz都是经过实战验证的开源分布式框架,可以很好的满足分布式爬虫的需求,可灵活的与其他框架相结合,从而在保证架构性能的基础之上,实现灵活开发定制;
3、本发明利用已有的成熟的单机爬虫框架结合Kafka与Quartz分布式工具完成分布式爬虫的需求,使其可以满足大部分的爬取需求,并具备高并发,支持分布式等特征,解决了爬取队列消息的多节点分发以及定时爬取的问题。
[0019]由此可见,本发明具有设计合理、结构简单、使用方便、一物多用等特点,因而,具有很好的推广使用价值。
【附图说明】
[0020]下面结合附图对本发明进一步说明。
[0021 ]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1