手把手教你写网络爬虫(6):分布式爬虫

开发 后端 分布式
对于分布式爬虫系统来说,假设1台机器能10天爬完一个任务,如果部署10台机器,那么1天就会完成这个任务。这样就用可以接受的成本,让系统的效率提高十倍。之前介绍的单机架构师达不到这种效果的,是时候介绍信的架构了!

本系列:

[[230059]]

笔者以前看过一个电影叫《Who Am I – No System Is Safe》,剧中的黑客老大“Who Am I”就用代理来隐藏自己,躲避FBI和其他黑客组织的追踪。

taskId:flag:crawler:info
Filed value 说明
totalCnt 10000 抓取的url总数:抓取完成,不管成功失败,都加1
failCnt 0 抓取的url失败数:抓取失败,加1
switch 1 任务状态:0:停止,1:启动,2:暂停,3:暂停启动
priority 1 任务优先级
retryCnt 0 重试次数
status 0 任务执行状态:1:进行中,2:完成
Ref 0 url引用数:每消费一个url,减1;生成一个url,加1。等于0则任务完成
maxThreadCnt 100 任务的***线程数
remainThreadCnt 10 剩余可用线程数
lastFetchTime 1496404451532 上一次抓取时间

taskId:flag:parser:info

Filed value 说明
totalCnt 10000 解析总数:解析完成,不管成功失败,都加1
failCnt 0 解析失败数:解析失败,加1
crawlerStatus 0 爬取状态:0:进行中,2:完成
ref 10 url引用数:crawler每保存一个网页,加1;parser每解析完成一个网页,减1。等于0不说明任务完成。若crawlerStatus等于2,ref等于0,则任务完成。

taskId:flag:filter:info

Filed value 说明
totalCnt 10000 清洗总数:清洗完成,不管成功失败,都加1
failCnt 0 清洗失败数:清洗失败,加1
crawlerStatus 0 解析状态:0:进行中,2:完成
ref 10 url引用数:parser每保存一条数据,加1;filter每清洗完成一条数据,减1。等于0不说明任务完成。若parserStatus等于2,ref等于0,则任务完成。

流程控制 – failover

如果一个Crawler_core的机器挂掉了,就会开始数据恢复程序,把这台机器所有未完成的任务恢复到公共缓存中。

 

责任编辑:庞桂玉 来源: Python开发者
相关推荐

2018-05-14 15:27:06

Python网络爬虫爬虫架构

2018-05-16 15:46:06

Python网络爬虫PhantomJS

2018-05-14 16:34:08

Python网络爬虫Scrapy

2018-05-16 13:50:30

Python网络爬虫Scrapy

2018-05-22 16:28:46

Python网络爬虫URL去重

2018-05-14 14:02:41

Python爬虫网易云音乐

2018-05-09 09:44:51

Java分布式系统

2020-07-10 08:24:18

Python开发工具

2021-01-30 10:37:18

ScrapyGerapy网络爬虫

2021-09-01 14:49:48

curl2pypython工具

2022-03-30 09:11:00

Python网络爬虫

2021-11-09 09:01:36

Python网络爬虫Python基础

2021-04-01 09:02:38

Python小说下载网络爬虫

2021-03-05 08:52:00

Celery在Windows分布式

2020-11-10 09:11:02

采集数据

2023-03-27 08:28:57

spring代码,starter

2011-05-03 15:59:00

黑盒打印机

2011-01-10 14:41:26

2015-04-21 09:39:03

javajava分布式爬虫

2019-10-16 17:07:36

Java服务器架构
点赞
收藏

51CTO技术栈公众号