網絡爬蟲更新策略和分佈式抓取系統機構

4、更新策略服務器

    互聯網是實時變化的,具備很強的動態性。網頁更新策略主要是決定什麼時候更新以前已經下載過的頁面。常見的更新策略又如下三種:分佈式

    1.歷史參考策略搜索引擎

    顧名思義,根據頁面以往的歷史更新數據,預測該頁面將來什麼時候會發生變化。通常來講,是經過泊松過程進行建模進行預測。索引

    2.用戶體驗策略
    儘管搜索引擎針對於某個查詢條件可以返回數量巨大的結果,可是用戶每每只關注前幾頁結果。所以,抓取 系統能夠優先更新那些現實在查詢結果前幾頁中的網頁,然後再更新那些後面的網頁。這種更新策略也是須要用到歷史信息的。用戶體驗策略保留網頁的多個歷史版 本,而且根據過去每次內容變化對搜索質量的影響,得出一個平均值,用這個值做爲決定什麼時候從新抓取的依據。
    3.聚類抽樣策略隊列

    前面提到的兩種更新策略都有一個前提:須要網頁的歷史信息。這樣就存在兩個問題:第一,系統要是爲每一個系統保存多個版本的歷史信息,無疑增長了不少的系統負擔;第二,要是新的網頁徹底沒有歷史信息,就沒法肯定更新策略。部署

    這種策略認爲,網頁具備不少屬性,相似屬性的網頁,能夠認爲其更新頻率也是相似的。要計算某一個類別網頁的更新頻率,只須要對這一類網頁抽樣,以他們的更新週期做爲整個類別的更新週期。基本思路如圖:hash

        

5、分佈式抓取系統結構
    通常來講,抓取系統須要面對的是整個互聯網上數以億計的網頁。單個抓取程序不可能完成這樣的任務。每每須要多個抓取程序一塊兒來處理。通常來講抓取系統每每是一個分佈式的三層結構。如圖所示:域名

    最下一層是分佈在不一樣地理位置的數據中心,在每一個數據中內心有若干臺抓取服務器,而每臺抓取服務器上可能部署了若干套爬蟲程序。這就構成了一個基本的分佈式抓取系統。ast

    對於一個數據中心內的不一樣抓去服務器,協同工做的方式有幾種:用戶體驗

    1.主從式(Master-Slave)

    主從式基本結構如圖所示:

    對於主從式而言,有一臺專門的Master服務器來維護待抓取URL隊列,它負責每次將URL分發到不一樣的Slave服務器,而Slave服務器則負責實 際的網頁下載工做。Master服務器除了維護待抓取URL隊列以及分發URL以外,還要負責調解各個Slave服務器的負載狀況。以避免某些Slave服 務器過於悠閒或者勞累。

    這種模式下,Master每每容易成爲系統瓶頸。

    2.對等式(Peer to Peer)

    對等式的基本結構如圖所示:

    在這種模式下,全部的抓取服務器在分工上沒有不一樣。每一臺抓取服務器均可以從待抓取在URL隊列中獲取URL,而後對該URL的主域名的hash值H,然 後計算H mod m(其中m是服務器的數量,以上圖爲例,m爲3),計算獲得的數就是處理該URL的主機編號。

    舉例:假設對於URL www.baidu.com,計算器hash值H=8,m=3,則H mod m=2,所以由編號爲2的服務器進行該連接的抓取。假設這時候是0號服務器拿到這個URL,那麼它將該URL轉給服務器2,由服務器2進行抓取。

    這種模式有一個問題,當有一臺服務器死機或者添加新的服務器,那麼全部URL的哈希求餘的結果就都要變化。也就是說,這種方式的擴展性不佳。針對這種狀況,又有一種改進方案被提出來。這種改進的方案是一致性哈希法來肯定服務器分工。其基本結構如圖所示:

    一致性哈希將URL的主域名進行哈希運算,映射爲一個範圍在0-232之間的某個數。而將這個範圍平均的分配給m臺服務器,根據URL主域名哈希運算的值所處的範圍判斷是哪臺服務器來進行抓取。

    若是某一臺服務器出現問題,那麼本該由該服務器負責的網頁則按照順時針順延,由下一臺服務器進行抓取。這樣的話,及時某臺服務器出現問題,也不會影響其餘的工做。

相關文章
相關標籤/搜索