1. 程式人生 > >非同步與分散式在爬蟲中的應用(個人理解)

非同步與分散式在爬蟲中的應用(個人理解)

非同步:

是一個非阻塞的執行模式,就是在執行主程式的時候,如果其中有了耗時操作,程式不會在這操作進行停留,而會繼續執行下面的程式碼

拓展:
    其中普及一下:常見的阻塞形式有:網路I/O操作,磁碟的I/O操作,使用者輸入時候的阻塞.
    在爬蟲專案中,一般會使用非同步進行爬取,從而提高執行效率,因為在傳送請求以後,需要依靠網路通訊來返回響應,其中肯定會涉及一些延時,這時候就可以進行非同步跳過,在延時的時候繼續傳送下一次請求,然後如果有響應回來了,再處理響應

=============================(華麗分界線)=================================

分散式:

分散式就是一個任務拆分成幾個子任務然後不考慮任務間的依賴關係,同時執行子任務.

在爬蟲中是把一個請求佇列放在資料庫裡面,可以在裡面順便進行去從操作,既爬過的頁面,就不繼續爬取了,

然後可以開多個執行緒或者程序同時進行傳送請求

拓展:

其中會涉及到叢集的概念,叢集是同一個任務部署到多個伺服器上,然後分散式是一個任務拆分多個子任務然後部署到不同的伺服器上.

分散式和叢集是最常見的兩種多重任務處理的方法,

=================================總結====================================

非同步和分散式同時利用在爬蟲中時,此時的運作模式就是,建立一個執行緒池或者一個協程池的時候,裡面集成了非同步請求,就是把耗時操作的任務
    分發到執行緒或者協程裡面,然後進行非同步傳送,如果子任務遇到阻塞了,就用內建callback引數切換執行緒或者協程,繼續執行下一個子任務,這樣就有效的提高了任務的執行速度.