当前位置: 首页 > 专利查询>南京大学专利>正文

一种分布式爬虫系统及周期性增量抓取方法技术方案

技术编号:16270073 阅读:143 留言:0更新日期:2017-09-22 21:44
本发明专利技术公开一种分布式爬虫系统,该系统被配置为基于ZooKeeper的分布式服务、系统组件和数据库三大部分,其中,系统组件包括系统监控组件Monitor、协调组件Coordinator、日志收集组件Logger、基础爬虫组件Spider,数据库包括Redis内存数据库,redis是key‑value的存储形式,Redis内存数据库中存放有分布式URL任务队列和分布式BloomFilter。本发明专利技术还公开一种基于该系统的周期性增量抓取方法,包括:协调组件Coordinator周期性导入任务到分布式URL任务队列,并唤醒正在休眠的Spider组件;Spider组件根据当前分布式URL任务队列的执行情况进行休眠或周期性增量抓取。该系统及方法解决了如何将单机爬虫有效的结合在一起,实现集群环境下高可用、高稳定和高吞吐率的分布式爬虫,并实现周期性增量抓取。

【技术实现步骤摘要】
一种分布式爬虫系统及周期性增量抓取方法
本专利技术涉及互联网大数据的高效数据采集
,尤其涉及一种分布式爬虫系统及周期性增量抓取方法。
技术介绍
网络爬虫是从一个或若干初始网页的URL(UniformResourceLocator,统一资源定位符)开始,获得初始网页上的URL,在抓取网页的过程中,根据不同的抓取策略,不断从当前页面上抽取新的URL放入任务队列,直到满足系统的停止条件。随着互联网的高速发展,网络数据呈现爆炸式增长,网络数据源也越来越趋于多元化。面对如此庞大而多元化的互联网数据,如何提高网络爬虫的抓取效率,如何针对不同的数据源进行可定制化的爬取策略,显得至关重要。相比于传统单机爬虫,分布式爬虫可以明显提高爬虫的抓取效率,但随之也引入了新的问题:分布式环境下多节点的任务下发问题、负载均衡问题、网页重复性问题和周期性增量抓取问题等。综上所述,如何在解决分布式爬虫带来的一系列问题的同时,能够有效地提高爬虫的抓取速度,并在此基础上实现分布式爬虫的周期性增量抓取是目前现有技术中存在的主要问题。
技术实现思路
本专利技术所要解决的技术问题是,提供一种分布式爬虫系统及周期性增量抓取方法,解决如何将单机爬虫有效的结合在一起,实现集群环境下高可用、高稳定和高吞吐率的分布式爬虫,并实现周期性增量抓取。本专利技术解决上述问题所采用的技术方案是:本专利技术公开一种分布式爬虫系统,该系统被配置为基于ZooKeeper的分布式服务、系统组件和数据库三大部分,其中,系统组件包括系统监控组件Monitor、协调组件Coordinator、日志收集组件Logger、基础爬虫组件Spider,数据库包括Redis内存数据库,redis是key-value的存储形式,Redis内存数据库中存放有分布式URL任务队列和分布式BloomFilter;其中,基于ZooKeeper的分布式服务为各系统组件提供分布式协调服务;所述系统监控组件Monitor负责系统的动态配置和系统的状态监控;所述协调组件Coordinator负责将种子URL导入到基于Redis的分布式任务队列、周期性汇总各节点状态到ZooKeeper、为日志收集组件Logger动态分配日志源和集群节点的检测与管理中的一种或多种;所述日志收集组件Logger负责从集群中各基础爬虫组件Spider收集日志数据;所述基础爬虫组件Spider负责处理网页的爬取任务;所述基于Redis的分布式URL任务队列负责存储所有待爬取的任务URL;所述基于Redis的分布式BloomFilter负责集群中所有基础爬虫组件Spider的URL去重请求。进一步的,基于ZooKeeper的分布式服务通过与各系统组件相互协调工作,为各系统组件提供包括动态配置、集群节点检测与管理、Master选举、分布式锁、全局URL的ID生成的分布式服务中的一种或多种。进一步的,系统监控组件Monitor具有Monitor界面,用户可以通过Monitor界面修改存在于ZooKeeper上的系统配置参数,集群中的协调组件Coordinator、日志收集组件Logger和基础爬虫组件Spider会监听ZooKeeper上的相应数据节点,并在数据节点内容被修改后得到相应的通知,进而根据修改后的配置参数做相应调整。进一步的,Monitor界面还能实时显示存在于ZooKeeper上的各系统状态参数和各组件状态参数。进一步的,基础爬虫组件Spider组件具有多种组件内核,且各组件内核的爬取策略不完全一致。进一步的,基础爬虫组件Spider组件具有高扩展性,以方便针对新的数据源编写新的组件内核。进一步的,分布式URL任务队列的任务分发方式采用基础爬虫组件Spider的拉取(Pull)方式。进一步的,分布式BloomFilter采用分段机制将bit向量分段存储在Redis不同的Key之上,并通过分段乐观锁实现各基础爬虫组件Spider访问的同步性控制。本专利技术还公开一种基于上述分布式爬虫系统的周期性增量抓取方法,包括:协调组件Coordinator周期性导入任务到分布式URL任务队列,并唤醒正在休眠的Spider组件;Spider组件根据当前分布式URL任务队列的执行情况进行休眠或周期性增量抓取,在没有抓取任务时,Spider组件就会进入休眠状态,休眠的Spider组件会被其他Spider组件或Coordinator组件唤醒时会继续进行抓取任务。进一步的,该方法包括如下步骤:S1、协调组件Coordinator周期性导入任务到分布式URL任务队列,并唤醒正在休眠的Spider组件。即,系统的Coordinator组件会周期性导入任务到分布式URL队列,任务导入后,Coordinator会唤醒所有在休眠的Spider组件开始新一轮的增量抓取任务。执行抓取任务是周期性一直进行的,每一个周期都是从导入种子任务开始。S2、Spider组件判断是否结束系统周期性增量抓取,若为是,执行S6,否则,执行S3。即,Spider组件中的抓取线程会检查ZooKeeper中相应的数据节点信息,该数据节点信息由Monitor来设置,当读取到结束系统周期性增量抓取时,Spider组件会进行一系列清理保存工作后结束自己的进程;否则,会继续进行周期性增量抓取。S3、判断当前分布式任务队列是否为空,若为是,执行S4,否则,跳转S5。即,Spider组件中的抓取线程会检查Redis中分布式任务队列中是否还有待抓取的任务,若有,则会获取任务并进入抓取阶段;否则,会进入休眠阶段。S4、进入基础爬虫组件Spider休眠阶段,主要包括:1)阻塞抓取线程或休眠基础爬虫组件(Spider)组件,2)唤醒线程;具体包括如下步骤:a)判断当前Spider组件除当前抓取线程外,其它抓取线程是否均已阻塞,若是,则执行步骤b),否则,执行步骤c);b)在ZooKeeper中创建休眠标示节点,该节点可以用来表示当前Spider组件已经休眠,当其他组件需要唤醒该Spider组件时只需删除该数据节点即可;c)阻塞该抓取线程;d)抓取线程已经阻塞,等待其他线程唤醒;e)抓取线程被其它线程唤醒,并执行S2。在没有抓取任务时,Spider组件就会进入该阶段,休眠自己,避免系统资源的空耗,当其他Spider组件有新的任务添加到任务队列或新的一轮增量抓取开始时,休眠的Spider组件会被其他Spider组件或Coordinator组件唤醒,继续进行抓取任务。S5、进入基础爬虫组件(Spider)抓取阶段,具体包括如下步骤:包括:1)从分布式URL任务队列获取任务,2)Spider执行抓取任务;3)唤醒抓取线程或基础爬虫组件(Spider)组件。具体包括如下步骤:a)从分布式URL队列获取抓取任务;b)根据获取的任务,抓取相应网页并存储结果;c)分析抓取到的网页超链接并获取新的任务集合;d)将获取到的新任务发送到分布式BloomFilter去重;e)将去重后的新任务添加到分布式任务队列;f)判断当前Spider组件是否有抓取线程阻塞,若有,则执行步骤g),否则,执行步骤h);g)唤醒当前Spider组件中阻塞的抓取线程;h)判断当前集群中是否有其他的Spider组件休眠,若有,则唤醒相应休眠Spider,本文档来自技高网...
一种分布式爬虫系统及周期性增量抓取方法

【技术保护点】
一种分布式爬虫系统,其特征在于,该系统被配置为基于ZooKeeper的分布式服务、系统组件和数据库三大部分,其中,系统组件包括系统监控组件Monitor、协调组件Coordinator、日志收集组件Logger、基础爬虫组件Spider,数据库包括Redis内存数据库,Redis内存数据库中存放有分布式URL任务队列和分布式BloomFilter;其中,基于ZooKeeper的分布式服务为各系统组件提供分布式协调服务,所述系统监控组件Monitor负责系统的动态配置和系统的状态监控,所述协调组件Coordinator负责将种子URL导入到基于Redis的分布式任务队列、周期性汇总各节点状态到ZooKeeper、为日志收集组件Logger动态分配日志源和集群节点的检测与管理中的一种或多种,所述日志收集组件Logger负责从集群中各基础爬虫组件Spider收集日志数据,所述基础爬虫组件Spider负责处理网页的爬取任务,所述基于Redis的分布式URL任务队列负责存储所有待爬取的任务URL,所述基于Redis的分布式BloomFilter负责集群中所有基础爬虫组件Spider的URL去重请求。...

【技术特征摘要】
1.一种分布式爬虫系统,其特征在于,该系统被配置为基于ZooKeeper的分布式服务、系统组件和数据库三大部分,其中,系统组件包括系统监控组件Monitor、协调组件Coordinator、日志收集组件Logger、基础爬虫组件Spider,数据库包括Redis内存数据库,Redis内存数据库中存放有分布式URL任务队列和分布式BloomFilter;其中,基于ZooKeeper的分布式服务为各系统组件提供分布式协调服务,所述系统监控组件Monitor负责系统的动态配置和系统的状态监控,所述协调组件Coordinator负责将种子URL导入到基于Redis的分布式任务队列、周期性汇总各节点状态到ZooKeeper、为日志收集组件Logger动态分配日志源和集群节点的检测与管理中的一种或多种,所述日志收集组件Logger负责从集群中各基础爬虫组件Spider收集日志数据,所述基础爬虫组件Spider负责处理网页的爬取任务,所述基于Redis的分布式URL任务队列负责存储所有待爬取的任务URL,所述基于Redis的分布式BloomFilter负责集群中所有基础爬虫组件Spider的URL去重请求。2.根据权利要求1所述的分布式爬虫系统,其特征在于,基于ZooKeeper的分布式服务通过与各系统组件相互协调工作,为各系统组件提供包括动态配置、集群节点检测与管理、Master选举、分布式锁、全局URL的ID生成的分布式服务中的一种或多种。3.根据权利要求1所述的一种分布式爬虫系统,其特征在于,其中所述系统监控组件Monitor具有Monitor界面,用户可以通过Monitor界面修改存在于ZooKeeper上的系统配置参数,集群中的协调组件Coordinator、日志收集组件Logger和基础爬虫组件Spider会监听ZooKeeper上的相应数据节点,并在数据节点内容被修改后得到相应的通知,进而根据修改后的配置参数做相应调整。4.根据权利要求3所述的分布式爬虫系统,其特征在于,Monitor界面还能实时显示存在于ZooKeeper上的各系统状态参数和各组件状态参数。5.根据权利要求1所述的一种分布式爬虫系统,其特征在于,所述基础爬虫组件Spider组件具有多种组件内核,且各组件内核的爬取策略不完全一致。6.根据权利要求1所述的分布式爬虫系统,其特征在于,所述基础爬虫组件Spider组件具有高扩展性,以方便针对新的数据源编写新的组件内...

【专利技术属性】
技术研发人员:张雷韩建军张文哲谭龙海王崇骏
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1