手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(6):分布式爬蟲(chóng)
作者:佚名
對(duì)于分布式爬蟲(chóng)系統(tǒng)來(lái)說(shuō),假設(shè)1臺(tái)機(jī)器能10天爬完一個(gè)任務(wù),如果部署10臺(tái)機(jī)器,那么1天就會(huì)完成這個(gè)任務(wù)。這樣就用可以接受的成本,讓系統(tǒng)的效率提高十倍。之前介紹的單機(jī)架構(gòu)師達(dá)不到這種效果的,是時(shí)候介紹信的架構(gòu)了!
本系列:
- 《手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(1):網(wǎng)易云音樂(lè)歌單》
- 《手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(2):迷你爬蟲(chóng)架構(gòu)》
- 《手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(3):開(kāi)源爬蟲(chóng)框架對(duì)比》
- 《手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(4):Scrapy入門(mén)》
- 《手把手教你寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)(5):PhantomJS實(shí)戰(zhàn)》




筆者以前看過(guò)一個(gè)電影叫《Who Am I – No System Is Safe》,劇中的黑客老大“Who Am I”就用代理來(lái)隱藏自己,躲避FBI和其他黑客組織的追蹤。








| taskId:flag:crawler:info | ||
| Filed | value | 說(shuō)明 |
| totalCnt | 10000 | 抓取的url總數(shù):抓取完成,不管成功失敗,都加1 |
| failCnt | 0 | 抓取的url失敗數(shù):抓取失敗,加1 |
| switch | 1 | 任務(wù)狀態(tài):0:停止,1:?jiǎn)?dòng),2:暫停,3:暫停啟動(dòng) |
| priority | 1 | 任務(wù)優(yōu)先級(jí) |
| retryCnt | 0 | 重試次數(shù) |
| status | 0 | 任務(wù)執(zhí)行狀態(tài):1:進(jìn)行中,2:完成 |
| Ref | 0 | url引用數(shù):每消費(fèi)一個(gè)url,減1;生成一個(gè)url,加1。等于0則任務(wù)完成 |
| maxThreadCnt | 100 | 任務(wù)的***線(xiàn)程數(shù) |
| remainThreadCnt | 10 | 剩余可用線(xiàn)程數(shù) |
| lastFetchTime | 1496404451532 | 上一次抓取時(shí)間 |
|
taskId:flag:parser:info |
||
| Filed | value | 說(shuō)明 |
| totalCnt | 10000 | 解析總數(shù):解析完成,不管成功失敗,都加1 |
| failCnt | 0 | 解析失敗數(shù):解析失敗,加1 |
| crawlerStatus | 0 | 爬取狀態(tài):0:進(jìn)行中,2:完成 |
| ref | 10 | url引用數(shù):crawler每保存一個(gè)網(wǎng)頁(yè),加1;parser每解析完成一個(gè)網(wǎng)頁(yè),減1。等于0不說(shuō)明任務(wù)完成。若crawlerStatus等于2,ref等于0,則任務(wù)完成。 |
|
taskId:flag:filter:info |
||
| Filed | value | 說(shuō)明 |
| totalCnt | 10000 | 清洗總數(shù):清洗完成,不管成功失敗,都加1 |
| failCnt | 0 | 清洗失敗數(shù):清洗失敗,加1 |
| crawlerStatus | 0 | 解析狀態(tài):0:進(jìn)行中,2:完成 |
| ref | 10 | url引用數(shù):parser每保存一條數(shù)據(jù),加1;filter每清洗完成一條數(shù)據(jù),減1。等于0不說(shuō)明任務(wù)完成。若parserStatus等于2,ref等于0,則任務(wù)完成。 |
流程控制 – failover
如果一個(gè)Crawler_core的機(jī)器掛掉了,就會(huì)開(kāi)始數(shù)據(jù)恢復(fù)程序,把這臺(tái)機(jī)器所有未完成的任務(wù)恢復(fù)到公共緩存中。


責(zé)任編輯:龐桂玉
來(lái)源:
Python開(kāi)發(fā)者






















