有中心局域网集群爬虫

单机爬虫,在通过优先级队列合并下载队列和访问队列,通过统一的下载器去合并下载器以及访问器之后,其机构就变的非常简单。

其启动代码也特别简单。

Status.url.add(Setting.url);
		for (int i = 0; i < 30; i++) {
			new DownloadThread().start();
		}

  

中间还需要加入对访问失败的URL的处理单元,比如建立一个逻辑,访问失败的URL放回任务池中等待重新访问,当访问失败3次就保存到本地。

 

然而,单台计算机当作爬虫,其速度会受到宽带限制,以及服务器的访问速度限制,单台计算机的爬取速度有限。

 

那么,如何利用单机爬虫,进行改进,制作一个有中心的,利用局域网,结合局域网内IP的数量,提高爬取速度的有中心局域网集群爬虫呢?

最简单的想法是,把一台机器当作任务分配中心,其他计算机当作爬取机器。也就是有一台机器单纯当作任务池以及错误URL记录器,而其他机器单纯当作下载器,用局域网连接替代原本的URL地址传递方式。

这时需要对原先的单机爬虫进行一些改进,比如把保存文件的操作,由原先下载器直接执行,改由任务池代替执行。

 

 这样就能基本实现有中心局域网集群爬虫了,其业务场景类似工地上,工头指挥底下工人搬砖。

但这样的结构容错率不高,一旦任务分配中心出点故障,整个系统都无法执行。

 

 

 

 

 

posted @ 2018-08-23 19:41  calll_me_gaga  阅读(549)  评论(0编辑  收藏  举报