系统架构 之 高效分布式爬虫系统的架构设计[申请专利]


1 引言

  在互联网上可找到很多关于爬虫系统的设计和实现的相关文档,但仔细阅读后可发现绝大多数的设计方案的可用性、可靠性、高效性、扩展性等方面均存在很多问题。

  针对以上问题的存在,本设计方案将以可用性、可靠性、高效性、扩展性为基本准则重新设计爬虫系统。

2 处理时序


图1 爬虫系统时序图

  流程描述如下:

  ①、网页分析器:负责从已下载的网页中提取HREF字段,并判断该HREF是否已经爬取。如果已经爬取,则直接丢弃;如果未爬取,则将该URL推送到REDIS队列。

  ②、任务调度:负责从REDIS队列中取出URL信息,并对URL进行解析处理,提取域名等信息,并根据域名进行DNS查询,找到对应的IP地址,再将URL-IP对应信息放入工作队列。为了提高效率,可以在此建一张域名IP映射表,避免重复的DNS查询处理。如果查询的是不存在的域名,建表可有效的防止线程的反复阻塞。

  ③、工作线程:负责从工作队列取出URL, 并将对应网页爬取到本地磁盘。在此可以采用非阻塞+IO多路复用技术,可以并发爬取大量网页。

  ④、可配置性:可通过修改配置文件,来控制系统的运行行为。其中包括配置线程数目、过滤策略、队列属性、输入输出路径、表空间大小等等。

发布了66 篇原创文章 · 获赞 91 · 访问量 33万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章