社区编辑申请
注册/登录
手把手教你写网络爬虫(6):分布式爬虫
开发 后端 分布式
对于分布式爬虫系统来说,假设1台机器能10天爬完一个任务,如果部署10台机器,那么1天就会完成这个任务。这样就用可以接受的成本,让系统的效率提高十倍。之前介绍的单机架构师达不到这种效果的,是时候介绍信的架构了!

本系列:

笔者以前看过一个电影叫《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-16 15:46:06

Python网络爬虫PhantomJS

2018-05-22 16:28:46

Python网络爬虫URL去重

2018-05-14 16:34:08

Python网络爬虫Scrapy

2018-05-16 13:50:30

Python网络爬虫Scrapy

2018-05-14 15:27:06

Python网络爬虫爬虫架构

2016-08-17 23:53:29

网络爬虫抓取系统

2018-05-09 09:44:51

Java分布式系统

2015-04-21 09:39:03

javajava分布式爬虫

2016-09-30 10:13:07

分布式爬虫系统

2016-08-18 00:21:12

网络爬虫抓取网络

2016-08-18 00:04:09

网络爬虫抓取系统服务器

2020-10-19 19:25:32

Python爬虫代码

2018-01-16 12:31:33

Python爬虫数据

2021-11-24 07:56:57

2021-03-25 11:24:25

同话题下的热门内容

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!Python轻量级Web框架:Bottle库!Python居然被用来开发游戏了?盘点你想不到的Python开发场景用了那么久的Lombok,你知道它的原理么?实战 | 如何用 Python 自动化监控文件夹完成服务部署!Fury:一个基于JIT动态编译的高性能多语言原生序列化框架细思恐极,插上U盘就开始执行Python代码太全了!用Python操作MySQL的使用教程集锦!

编辑推荐

使用Kotlin做开发一个月后的感想面试官问你什么是消息队列?把这篇甩给他!五大自动化测试的Python框架图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)2018年最流行的十大编程语言,其中包括你用的语言吗?
我收藏的内容
点赞
收藏

51CTO技术栈公众号