下面是一個超級電腦的排行榜, 如果我們能擁有其中任意一個, 那麼我們就不需要搞什麼分散式系統。 可是我們買不起, 即使買得起, 也交不起電費, 所以我們只好費腦子搞分散式。
Rank
System
Cores
Rmax
Rpeak
Power (kW)
1
Tianhe-2 China
3,120,000
33,862.7
54,902.4
17,808
2
Titan US
560,640
17,590.0
27,112.5
8,209
3
Sequoia US
1,572,864
17,173.2
20,132.7
7,890
4
K Japan
705,024
10,510.0
11,280.4
12,660
5
Mira US
786,432
8,586.6
10,066.3
3,945
架構概述
與第二期介紹的通用爬蟲架構不同, 下面是一個聚焦爬蟲的架構圖, 與前者相比, 它不僅要保存網頁, 還要提取出網頁中的指定內容。
流程控制 – 任務
Scheduler_manager定時讀取Mysql中的任務資訊, 根據任務的週期等配置進行調度, 下面是一個最基本的任務啟停流程。
流程控制 – 資料
現在每個Crawler_core實例都有了待處理的任務, 接下來就要對每個任務的url進行處理了。 繼續使用Redis作為公共緩存來存放URLs, 多個Crawler_core實例平行存取todo集合。
流程控制 – 狀態
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的機器掛掉了,就會開始資料恢復程式,把這台機器所有未完成的任務恢復到公共緩存中。
學會了嗎!這波是爬蟲中的必備技能哦!
流程控制 – 狀態
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的機器掛掉了,就會開始資料恢復程式,把這台機器所有未完成的任務恢復到公共緩存中。
學會了嗎!這波是爬蟲中的必備技能哦!