亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法

文檔序號(hào):6539196閱讀:205來(lái)源:國(guó)知局
基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法
【專利摘要】一種基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法,包括1)根據(jù)規(guī)模不同,將網(wǎng)絡(luò)爬蟲分為單機(jī)多線程、同構(gòu)集中式、異構(gòu)集中式、小型分布式和大型分布式五類爬蟲;2)主從式架構(gòu)部署;3)當(dāng)爬蟲節(jié)點(diǎn)第一次連接到主控節(jié)點(diǎn)時(shí),主控節(jié)點(diǎn)給予它初始權(quán)值;4)主控節(jié)點(diǎn)根據(jù)基于加權(quán)輪叫的調(diào)度算法,不斷選擇出一個(gè)爬蟲節(jié)點(diǎn),將一個(gè)待爬取的URL任務(wù)分配給它;5)每當(dāng)爬蟲節(jié)點(diǎn)爬取完一個(gè)URL任務(wù)時(shí),將結(jié)果返回給主控節(jié)點(diǎn),主控節(jié)點(diǎn)更新該爬蟲節(jié)點(diǎn)的權(quán)值;等等。本發(fā)明提出的基于加權(quán)輪叫算法的分布式爬蟲調(diào)度策略,是針對(duì)小型分布式爬蟲而進(jìn)行設(shè)計(jì)的,能夠使各爬蟲節(jié)點(diǎn)負(fù)載平衡,并使爬蟲節(jié)點(diǎn)擁有靈活的可擴(kuò)展性及容錯(cuò)性。
【專利說(shuō)明】基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及網(wǎng)絡(luò)搜索【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]一個(gè)搜索引擎可以分成爬蟲、索引器、檢索器和用戶接口等幾個(gè)部分。其中,爬蟲負(fù)責(zé)對(duì)互聯(lián)網(wǎng)中的信息不斷進(jìn)行查找和搜集,在搜索引擎中扮演著重要的角色。隨著網(wǎng)絡(luò)的急速發(fā)展,信息更是飛速增長(zhǎng),傳統(tǒng)簡(jiǎn)單的單機(jī)網(wǎng)絡(luò)爬蟲及集中式網(wǎng)絡(luò)爬蟲的爬取能力已經(jīng)不能跟上互聯(lián)網(wǎng)上信息的增長(zhǎng)速度。而在分布式的概念越來(lái)越多被提及的今天,分布式爬蟲也自然而然成為了解決大數(shù)據(jù)量問(wèn)題的方案。分布式爬蟲由多個(gè)分散在廣域網(wǎng)中部署的節(jié)點(diǎn)組成,能夠并行的進(jìn)行爬取工作,滿足人們對(duì)爬蟲能力的需要。由于各節(jié)點(diǎn)的爬取能力不同,一個(gè)良好的調(diào)度策略是必不可少的。針對(duì)不同規(guī)模的爬蟲有著不同的調(diào)度算法,其中,比較主流的調(diào)度算法有:
[0003](I)哈希調(diào)度
[0004]常見(jiàn)的哈希函數(shù)是一種映射關(guān)系,通過(guò)這種映射關(guān)系,將原本的字符串、數(shù)或其它信息轉(zhuǎn)換為一個(gè)索引值。其實(shí)早期的爬蟲系統(tǒng)大多都是采用的這種方式,它將URL作為哈希的輸入,根據(jù)哈希函數(shù)得到的值就作為調(diào)度的輸出。這樣的調(diào)度策略不僅非常容易計(jì)算,而且系統(tǒng)開銷也很??;與此同時(shí),由于哈希函數(shù)數(shù)學(xué)上的隨機(jī)性,正好保證了爬蟲節(jié)點(diǎn)間任務(wù)分配的均勻性。
[0005](2)集中式負(fù)載調(diào)度
[0006]以大規(guī)模改進(jìn)后的北大天網(wǎng)爬蟲為例,它是集中式控制的模式,它的總體框架是一個(gè)總控節(jié)點(diǎn)與若干個(gè)爬蟲節(jié)點(diǎn)進(jìn)行協(xié)同工作。其任務(wù)調(diào)度采用的調(diào)度模式是:總控節(jié)點(diǎn)負(fù)責(zé)分發(fā)URL,而爬蟲節(jié)點(diǎn)負(fù)責(zé)爬取URL。每一個(gè)站點(diǎn)由一個(gè)爬蟲程序負(fù)責(zé),該站點(diǎn)上的所有URL都由該爬蟲程序進(jìn)行爬取。一個(gè)爬蟲節(jié)點(diǎn)可以有多個(gè)爬蟲程序,但每個(gè)爬蟲程序必定在一個(gè)爬蟲節(jié)點(diǎn)上運(yùn)行??偪毓?jié)點(diǎn)從種子URL出發(fā)進(jìn)行分配,對(duì)每一個(gè)所在站點(diǎn)還沒(méi)有啟動(dòng)爬蟲程序的URL,會(huì)根據(jù)一定的負(fù)載平衡原則找到一個(gè)爬蟲節(jié)點(diǎn),將URL傳輸過(guò)去,并要求它開啟一個(gè)新的爬蟲程序。接下來(lái)所有該站點(diǎn)地URL都會(huì)分發(fā)到該爬蟲節(jié)點(diǎn),并由該爬蟲程序進(jìn)行爬取工作。
[0007](3)根據(jù)網(wǎng)絡(luò)位置進(jìn)行調(diào)度
[0008]在大型的搜索引擎中,由于爬蟲節(jié)點(diǎn)被部署在全球各地,因此網(wǎng)絡(luò)位置的計(jì)算是相當(dāng)重要的。在這樣的爬蟲中,其基本的調(diào)度策略的思想就是利用諸如GNP算法,通過(guò)測(cè)量較少事先確定的幾組網(wǎng)站與爬蟲節(jié)點(diǎn)之間的網(wǎng)絡(luò)距離,估算其它大量的節(jié)點(diǎn)間的網(wǎng)絡(luò)距離,最后利用預(yù)測(cè)得到網(wǎng)絡(luò)距離再來(lái)計(jì)算爬蟲節(jié)點(diǎn)爬取URL對(duì)應(yīng)網(wǎng)頁(yè)所需要時(shí)間,并將最少時(shí)間開銷的爬蟲節(jié)點(diǎn)設(shè)定為對(duì)應(yīng)URL的調(diào)度對(duì)象。這樣的調(diào)度方案有效地按照網(wǎng)絡(luò)距離對(duì)爬蟲任務(wù)進(jìn)行了調(diào)度,而且也減少了大規(guī)模網(wǎng)絡(luò)測(cè)量的時(shí)間開銷。

【發(fā)明內(nèi)容】
[0009]本發(fā)明提出的基于加權(quán)輪叫算法的分布式爬蟲調(diào)度策略,是針對(duì)小型分布式爬蟲而進(jìn)行設(shè)計(jì)的,因思想與集中式負(fù)載調(diào)度策略相思,也同時(shí)適用于異構(gòu)集中式爬蟲,能夠使各爬蟲節(jié)點(diǎn)負(fù)載平衡,并使爬蟲節(jié)點(diǎn)擁有靈活的可擴(kuò)展性及容錯(cuò)性。
[0010]本發(fā)明方法技術(shù)方案表征為:
[0011]一種基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法,其特征在于,依次按照如下步驟實(shí)施:
[0012]I)根據(jù)規(guī)模不同,本發(fā)明將網(wǎng)絡(luò)爬蟲分為單機(jī)多線程、同構(gòu)集中式、異構(gòu)集中式、小型分布式和大型分布式五類爬蟲,本爬蟲任務(wù)調(diào)度方法是針對(duì)小型分布式的爬蟲任務(wù)調(diào)度方法。小型分布式爬蟲是指各個(gè)節(jié)點(diǎn)雖然是分布式部署,但仍部署在一個(gè)小的物理區(qū)域之中,因此各節(jié)點(diǎn)在互聯(lián)網(wǎng)上的網(wǎng)絡(luò)時(shí)延相差并不大,不過(guò)各個(gè)節(jié)點(diǎn)間的傳輸并不一定在局域網(wǎng)環(huán)境中進(jìn)行,因此傳輸可能是不可靠的,傳輸時(shí)延也必須進(jìn)行考慮。
[0013]2)主從式架構(gòu)部署,即一個(gè)主控節(jié)點(diǎn)和若干個(gè)分布式部署并且能和主控節(jié)點(diǎn)互通的爬蟲節(jié)點(diǎn),保證所有爬蟲節(jié)點(diǎn)能夠連至互聯(lián)網(wǎng)。主控節(jié)點(diǎn)負(fù)責(zé)爬蟲任務(wù)的調(diào)度工作,即一個(gè)待爬取的URL該分配給哪一個(gè)爬蟲節(jié)點(diǎn)完成,以及去重工作,即將一個(gè)爬蟲節(jié)點(diǎn)返回的一條URL得到的外鏈去重后當(dāng)中新的待爬取的URL。爬蟲節(jié)點(diǎn)則負(fù)責(zé)具體的爬蟲工作,對(duì)每一條主控節(jié)點(diǎn)分配給它的URL去互聯(lián)網(wǎng)上爬取它的整個(gè)HTML,并解析出這個(gè)頁(yè)面中包含的外鏈,將這些信息返回給主控節(jié)點(diǎn)。
[0014]3)當(dāng)爬蟲節(jié)點(diǎn)第一次連接到主控節(jié)點(diǎn)時(shí),主控節(jié)點(diǎn)給予它一個(gè)經(jīng)驗(yàn)值作為初始權(quán)值。
[0015]4)主控節(jié)點(diǎn)根據(jù)本發(fā)明提出的基于加權(quán)輪叫的調(diào)度算法,不斷選擇出一個(gè)爬蟲節(jié)點(diǎn),將一個(gè)待爬取的URL任務(wù)分配給它。該調(diào)度算法的主體是傳統(tǒng)的加權(quán)輪叫調(diào)度算法,即設(shè)置一個(gè)當(dāng)前調(diào)度權(quán)值,每當(dāng)它減為非正數(shù)時(shí)重新初始化為當(dāng)前所有節(jié)點(diǎn)權(quán)值的最大值,然后對(duì)每個(gè)節(jié)點(diǎn)依次詢問(wèn),看其權(quán)值是否不小于當(dāng)前調(diào)度權(quán)值,若是則得到調(diào)度,當(dāng)所有節(jié)點(diǎn)詢問(wèn)完畢后,當(dāng)前調(diào)度權(quán)值自減一個(gè)步長(zhǎng),再開始對(duì)每個(gè)節(jié)點(diǎn)依次詢問(wèn),如此不斷往復(fù)。在傳統(tǒng)的加權(quán)輪叫調(diào)度算法中,步長(zhǎng)為所有權(quán)值的最小公約數(shù),也就是說(shuō)在有很多權(quán)值的情況下可以認(rèn)為是I。而本發(fā)明提出的調(diào)度算法則根據(jù)本方法設(shè)定的權(quán)值計(jì)算方法和大量實(shí)驗(yàn)將其步長(zhǎng)設(shè)定為4。
[0016]5)每當(dāng)爬蟲節(jié)點(diǎn)爬取完一個(gè)URL任務(wù)時(shí),將結(jié)果返回給主控節(jié)點(diǎn),主控節(jié)點(diǎn)根據(jù)本發(fā)明提出的根據(jù)最近任務(wù)完成時(shí)間和未完成的任務(wù)數(shù)的權(quán)值計(jì)算方法更新該爬蟲節(jié)點(diǎn)的權(quán)值。
[0017]6)當(dāng)一個(gè)爬蟲節(jié)點(diǎn)的權(quán)值隨著任務(wù)數(shù)的增加降為零時(shí),主控節(jié)點(diǎn)將不再分配給其任務(wù)。直到它的權(quán)值重新恢復(fù)為正數(shù)時(shí),才會(huì)重新得到分配。
[0018]7)這樣主控節(jié)點(diǎn)不斷將URL分配給爬蟲節(jié)點(diǎn),爬蟲節(jié)點(diǎn)則不斷將URL爬取得到其HTML和外鏈返回給主控節(jié)點(diǎn),主控節(jié)點(diǎn)將外鏈去重后再重新分配出去。根據(jù)互聯(lián)網(wǎng)的實(shí)際情況,這樣整個(gè)系統(tǒng)就會(huì)永無(wú)止境的運(yùn)行下去,不斷爬取得到新的網(wǎng)頁(yè),直至人工根據(jù)實(shí)際情況手動(dòng)停止。
[0019]8)擁有錯(cuò)誤恢復(fù)機(jī)制,主控節(jié)點(diǎn)可以檢測(cè)到爬蟲節(jié)點(diǎn)的異常情況,并將其權(quán)值置零。
[0020]9)擁有良好的擴(kuò)展性,新的節(jié)點(diǎn)可以隨時(shí)加入系統(tǒng),舊的節(jié)點(diǎn)也可以隨時(shí)從系統(tǒng)中移除。
[0021]根據(jù)規(guī)模不同,本發(fā)明將網(wǎng)絡(luò)爬蟲分為五類:
[0022](I)單機(jī)多線程爬蟲
[0023]單機(jī)多線程爬蟲是最傳統(tǒng)的爬蟲形式,它的負(fù)載平衡體現(xiàn)在任務(wù)盡可能均勻的分配到各個(gè)線程上。各類的哈希算法都是適合調(diào)度算法。
[0024](2)同構(gòu)集中式爬蟲
[0025]同構(gòu)集中式爬蟲和單機(jī)多線程爬蟲類似,各個(gè)節(jié)點(diǎn)就相當(dāng)于單機(jī)多線程中的各個(gè)線程,只不過(guò)規(guī)模稍大,能力稍強(qiáng)而已。因此,各類的哈希算法仍是適合該類爬蟲的調(diào)度算法。
[0026](3)異構(gòu)集中式爬蟲
[0027]異構(gòu)集中式爬蟲和前兩類不同的在于,各個(gè)節(jié)點(diǎn)的性能等指標(biāo)不同,因此各個(gè)節(jié)點(diǎn)的爬取能力并不相同。能力強(qiáng)的節(jié)點(diǎn)應(yīng)該分配到更多的任務(wù),而能力差的節(jié)點(diǎn)應(yīng)該分配到更少的任務(wù)。集中式負(fù)載調(diào)度可以對(duì)此類爬蟲有一個(gè)好的調(diào)度。
[0028](4)小型分布式爬蟲
[0029]小型分布式爬蟲是指各個(gè)節(jié)點(diǎn)雖然是分布式部署,但仍部署在一個(gè)小的區(qū)域,各節(jié)點(diǎn)在互聯(lián)網(wǎng)上的網(wǎng)絡(luò)時(shí)延相差并不大,它與異構(gòu)集中式爬蟲比較相似,但是各個(gè)節(jié)點(diǎn)間的傳輸并不一定在局域網(wǎng)內(nèi)進(jìn)行,因此傳輸可以認(rèn)為是不可靠的,傳輸時(shí)延也必須進(jìn)行考慮。此類爬蟲目前沒(méi)有較好的針對(duì)性調(diào)度算法,集中式負(fù)載調(diào)度可以對(duì)此類爬蟲進(jìn)行一定程度的調(diào)度,但好的調(diào)度策略應(yīng)該是在集中式負(fù)載調(diào)度的基礎(chǔ)上做出一些改變,以更好的契合該類爬蟲。
[0030](5)大型分布式爬蟲
[0031]大型分布式爬蟲就是現(xiàn)今各類大型商用搜索引擎采用的爬蟲形式,各個(gè)節(jié)點(diǎn)分布在世界各地,網(wǎng)絡(luò)時(shí)延相差很大,因此根據(jù)網(wǎng)絡(luò)位置進(jìn)行調(diào)度的策略就是為該類爬蟲量身打造。
[0032]本發(fā)明提出的基于加權(quán)輪叫算法的分布式爬蟲調(diào)度策略,按上述分類即是針對(duì)小型分布式爬蟲進(jìn)行設(shè)計(jì)的。
[0033]本發(fā)明設(shè)計(jì)了一個(gè)基于各爬蟲節(jié)點(diǎn)當(dāng)前爬取效率的權(quán)值計(jì)算公式,其主要功能是保證了系統(tǒng)的負(fù)載平衡。而基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度算法則是基于這個(gè)權(quán)值計(jì)算公式具體負(fù)責(zé)URL的任務(wù)調(diào)度。另外本發(fā)明設(shè)計(jì)的錯(cuò)誤恢復(fù)機(jī)制則是保證了系統(tǒng)的穩(wěn)定性。
【專利附圖】

【附圖說(shuō)明】
[0034]圖1調(diào)度流程圖。
[0035]圖2基于加權(quán)輪叫算法流程圖。
【具體實(shí)施方式】
[0036]本發(fā)明采用主從式的爬蟲架構(gòu),在主控節(jié)點(diǎn),存在一張節(jié)點(diǎn)表、三個(gè)URL隊(duì)列以及調(diào)度模塊和爬蟲反饋模塊。節(jié)點(diǎn)表記錄著各個(gè)爬蟲節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)號(hào)、權(quán)值等。它必須動(dòng)態(tài)更新以保持和實(shí)際的爬蟲節(jié)點(diǎn)情況一致。它動(dòng)態(tài)更新的時(shí)機(jī)可以是每一次爬蟲節(jié)點(diǎn)進(jìn)行了一次URL任務(wù)的反饋,也可以是每一定時(shí)間進(jìn)行一次,可以根據(jù)具體情況設(shè)置。調(diào)度模塊先從待爬取的URL隊(duì)列中取出一條URL,再?gòu)墓?jié)點(diǎn)表中取出各節(jié)點(diǎn)信息,并從中選擇一個(gè)爬蟲節(jié)點(diǎn)進(jìn)行調(diào)度,將該URL分配給該爬蟲節(jié)點(diǎn),并將該URL存入已分配的URL隊(duì)列中。而當(dāng)一個(gè)爬蟲節(jié)點(diǎn)完成一條URL的爬取工作后,爬蟲反饋模塊將該URL去已分配的URL隊(duì)列中查詢,若存在則從中刪除,并存入已爬取的URL隊(duì)列中,最后該URL爬取出的外鏈可以送入去重模塊后輸出至待爬取的URL隊(duì)列,這里只考慮調(diào)度過(guò)程,而忽略該過(guò)程。調(diào)度流程圖如圖1所示.[0037]一般來(lái)說(shuō),可以考慮的負(fù)載均衡因素有CPU性能、CPU使用率、內(nèi)存使用率、傳輸時(shí)延等,但它們歸更到底還是體現(xiàn)在時(shí)間上,因此我們采用時(shí)間這一指標(biāo)作為負(fù)載均衡的衡量標(biāo)準(zhǔn),即確定權(quán)值的因素。我們根據(jù)一個(gè)爬蟲節(jié)點(diǎn)之前的運(yùn)行情況去判斷之后它可能的狀況,以此確定權(quán)值。
[0038]具體來(lái)說(shuō),對(duì)于一個(gè)爬蟲節(jié)點(diǎn),假設(shè)它已完成的任務(wù)數(shù)是η個(gè),一共花費(fèi)的總時(shí)間是t毫秒(這里的時(shí)間包括從主控節(jié)點(diǎn)分配出任務(wù)至該節(jié)點(diǎn)直至該節(jié)點(diǎn)進(jìn)行反饋為止,在主控節(jié)點(diǎn)而不是爬蟲節(jié)點(diǎn)計(jì)算權(quán)值的原因是為了將傳輸時(shí)延考慮在內(nèi)),那么這個(gè)爬蟲節(jié)點(diǎn)平均完成一個(gè)任務(wù)需要花費(fèi)的時(shí)間?為:
[0039]t = —(I)
η
[0040]假設(shè)已分配給該爬蟲節(jié)點(diǎn)但仍未完成的任務(wù)數(shù)是m個(gè),那么該爬蟲節(jié)點(diǎn)完成剩余任務(wù)所需要的時(shí)間T就是/ /,I也就是:
[0041]T = —-m(2)
[0042]T的值越大,也就意味著它完成剩余任務(wù)需要的時(shí)間越多,那么主控節(jié)點(diǎn)就應(yīng)該給該節(jié)點(diǎn)分配更少的任務(wù),也就是權(quán)值W應(yīng)該越小,因此,對(duì)T取倒數(shù),得到:
[0043]W=J(3)`[0044]將⑵代入⑶中,得到:
[0045]W =(4)

/ ^ m
[0046]其中,隨著不斷爬取,η值和t值都會(huì)不斷變大,但當(dāng)節(jié)點(diǎn)空閑時(shí),值就會(huì)為零,因此為了讓分母不為零,使用m+1替換m,這樣代入到(4)中,得到:
_7] w=7^tT) (5)
[0048]注意到,t值和η值一直記錄著從第I個(gè)任務(wù)開始直至目前的情況,那么隨著t值
和η值的不斷變大,f會(huì)趨向穩(wěn)定。然而,這并不是我們所期望的,因?yàn)榇藭r(shí)無(wú)論該節(jié)點(diǎn)的
爬取過(guò)程中遇到任何問(wèn)題,都無(wú)法從公式中體現(xiàn)出來(lái),我們希望權(quán)值應(yīng)該能夠反映該節(jié)點(diǎn)的當(dāng)前情況。因此,本系統(tǒng)借鑒了滑動(dòng)窗口的概念,對(duì)權(quán)值進(jìn)行了修改。只考慮并計(jì)算最近的k個(gè)任務(wù)的完成情況,假設(shè)ti為最近第i個(gè)任務(wù)完成的時(shí)間,那么權(quán)值W就應(yīng)該為:
【權(quán)利要求】
1.一種基于加權(quán)輪叫算法的分布式爬蟲任務(wù)調(diào)度方法,其特征在于,依次按照如下步驟實(shí)施: 1)根據(jù)規(guī)模不同,本發(fā)明將網(wǎng)絡(luò)爬蟲分為單機(jī)多線程、同構(gòu)集中式、異構(gòu)集中式、小型分布式和大型分布式五類爬蟲,針對(duì)小型分布式的爬蟲任務(wù)調(diào)度,小型分布式爬蟲是指各個(gè)節(jié)點(diǎn)是分布式部署,部署在一個(gè)小的物理區(qū)域之中; 2)主從式架構(gòu)部署,即一個(gè)主控節(jié)點(diǎn)和若干個(gè)分布式部署并且能和主控節(jié)點(diǎn)互通的爬蟲節(jié)點(diǎn),保證所有爬蟲節(jié)點(diǎn)能夠連至互聯(lián)網(wǎng);主控節(jié)點(diǎn)負(fù)責(zé)爬蟲任務(wù)的調(diào)度工作,即一個(gè)待爬取的URL該分配給哪一個(gè)爬蟲節(jié)點(diǎn)完成,以及去重工作,即將一個(gè)爬蟲節(jié)點(diǎn)返回的一條URL得到的外鏈去重后當(dāng)中新的待爬取的URL ;爬蟲節(jié)點(diǎn)則負(fù)責(zé)具體的爬蟲工作,對(duì)每一條主控節(jié)點(diǎn)分配給它的URL去互聯(lián)網(wǎng)上爬取它的整個(gè)HTML,并解析出這個(gè)頁(yè)面中包含的外鏈,將這些信息返回給主控節(jié)點(diǎn); 3)當(dāng)爬蟲節(jié)點(diǎn)第一次連接到主控節(jié)點(diǎn)時(shí),主控節(jié)點(diǎn)給予它一個(gè)經(jīng)驗(yàn)值作為初始權(quán)值; 4)主控節(jié)點(diǎn)根據(jù)基于加權(quán)輪叫的調(diào)度算法,不斷選擇出一個(gè)爬蟲節(jié)點(diǎn),將一個(gè)待爬取的URL任務(wù)分配給它;該調(diào)度算法,即設(shè)置一個(gè)當(dāng)前調(diào)度權(quán)值,每當(dāng)它減為非正數(shù)時(shí)重新初始化為當(dāng)前所有節(jié)點(diǎn)權(quán)值的最大值,然后對(duì)每個(gè)節(jié)點(diǎn)依次詢問(wèn),看其權(quán)值是否不小于當(dāng)前調(diào)度權(quán)值,若是則得到調(diào)度,當(dāng)所有節(jié)點(diǎn)詢問(wèn)完畢后,當(dāng)前調(diào)度權(quán)值自減一個(gè)步長(zhǎng),再開始對(duì)每個(gè)節(jié)點(diǎn)依次詢問(wèn),如此不斷往復(fù);而本發(fā)明提出的調(diào)度算法則根據(jù)本方法設(shè)定的權(quán)值計(jì)算方法和大量實(shí)驗(yàn)將其步長(zhǎng)設(shè)定為4 ; 5)每當(dāng)爬蟲節(jié)點(diǎn)爬取完一個(gè)URL任務(wù)時(shí),將結(jié)果返回給主控節(jié)點(diǎn),主控節(jié)點(diǎn)根據(jù)本發(fā)明提出的根據(jù)最近任務(wù)完成時(shí)間和未完成的任務(wù)數(shù)的權(quán)值計(jì)算方法更新該爬蟲節(jié)點(diǎn)的權(quán)值; 6)當(dāng)一個(gè)爬蟲節(jié)點(diǎn)的權(quán)值隨著任務(wù)數(shù)的增加降為零時(shí),主控節(jié)點(diǎn)將不再分配給其任務(wù),直到它的權(quán)值重新恢復(fù)為正數(shù)時(shí),才會(huì)重新得到分配; 7)這樣主控節(jié)點(diǎn)不斷將URL分配給爬蟲節(jié)點(diǎn),爬蟲節(jié)點(diǎn)則不斷將URL爬取得到其HTML和外鏈返回給主控節(jié)點(diǎn),主控節(jié)點(diǎn)將外鏈去重后再重新分配出去;根據(jù)互聯(lián)網(wǎng)的實(shí)際情況,這樣整個(gè)系統(tǒng)就會(huì)永無(wú)止境的運(yùn)行下去,不斷爬取得到新的網(wǎng)頁(yè),直至人工根據(jù)實(shí)際情況手動(dòng)停止; 8)擁有錯(cuò)誤恢復(fù)機(jī)制,主控節(jié)點(diǎn)可以檢測(cè)到爬蟲節(jié)點(diǎn)的異常情況,并將其權(quán)值置零。
【文檔編號(hào)】G06F9/48GK103870329SQ201410073829
【公開日】2014年6月18日 申請(qǐng)日期:2014年3月3日 優(yōu)先權(quán)日:2014年3月3日
【發(fā)明者】蔣昌俊, 陳閎中, 閆春鋼, 丁志軍, 王鵬偉, 孫海春, 鄧曉棟, 葛大劼 申請(qǐng)人:同濟(jì)大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1