python3爬虫(9)分布式爬虫与对等分布式爬虫
原文鏈接:http://www.dataguru.cn/thread-529666-1-1.html
談談主從分布式爬蟲與對等分布式爬蟲的優劣
主從式(Master-Slave)
對于主從式而言,有一臺專門的Master服務器來維護待抓取URL隊列,它負責每次將 URL分發到不同的Slave服務器,而Slave服務器則負責實際的網頁下載工作。Master服務器除了維護待抓取URL隊列以及分發URL之外,還要負責調解各個Slave服務器的負載情況。以免某些Slave服務器過于清閑或者勞累。這種模式下,Master往往容易成為系統瓶頸。
?
對等式(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主域名哈希運算的值所處的范圍判斷是哪臺服務器來進行抓取。
如果某一臺服務器出現問題,那么本該由該服務器負責的網頁則按照順時針順延,由下一臺服務器進行抓取。這樣的話,及時某臺服務器出現問題,也不會影響其他的工作。
參考:http://www.dataguru.cn/article-5310-1.html
| 主從模式是指由一臺主機作為控制節點負責所有運行網絡爬蟲的主機進行管理,爬蟲只需要從控制節點那里接收任務,并把新生成任務提交給控制節點就可以了,在這個過程中不必與其他爬蟲通信,這種方式實現簡單利于管理。而控制節點則需要與所有爬蟲進行通信,它需要一個地址列表來保存系統中所有爬蟲的信息。當系統中的爬蟲數量發生變化時,協調者需要更新地址列表里的數據,這一過程對于系統中的爬蟲是透明的。但是隨著爬蟲網頁數量的增加。控制節點會成為整個系統的瓶頸而導致整個分布式網絡爬蟲系統性能下降。 |
?
| 主從式分布爬蟲 優點:由于由一臺管理服務器將待抓取URL分配給不同的抓取服務器,并對抓取服務器之間的工作進行負載均衡,使得抓取服務器可以得到有效合理地利用。 缺點:因為URL服務器承擔很多管理任務,同時待抓取URL隊列數量巨大,所以URL服務器容易成為整個系統的瓶頸。 對等式分布爬蟲 優點:由于沒有URL分發服務器,所以不存在系統瓶頸問題,另外其哈希函數不是針對整個URL,而只針對主域名,所以可以保證同一網站的網頁都由同一臺服務器抓取,這樣一方面可以提高下載效率(DNS域名解析可以緩存),另外一方面也可以主動控制對某個網站的訪問速度,避免對某個網站訪問壓力過大。 缺點:如果在抓取過程中某臺服務器宕機,或者新加入一臺抓取服務器,則每臺抓取服務器的取模算法都得更新。 |
?
?
?
?
?
總結
以上是生活随笔為你收集整理的python3爬虫(9)分布式爬虫与对等分布式爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3爬虫(8)爬虫框架scra
- 下一篇: python3 Async/Await