亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

線程組織方法_2

文檔序號:9546912閱讀:來源:國知局
所述步驟A之前進一步包括:
[0051]A01、啟動多線程爬蟲系統(tǒng);
[0052]A02、初始化多線程爬蟲和數(shù)據(jù)庫的連接,以及檢查爬蟲運行所需的數(shù)據(jù)庫是否有效;
[0053]A03、系統(tǒng)加載共享資源;
[0054]A04、系統(tǒng)在線程池中生成多個線程,每個線程獨立解析出二級入口 ;
[0055]A05、每個線程將自己獲得的二級入口送入公共過濾器,選出不重復的二級入口 ;
[0056]A06、在線程池中生成新的線程對二級入口進行爬取和解析,并將結(jié)果存入數(shù)據(jù)庫。
[0057]特別地,利用分布式一致性方法確定負責所述下一線程的回收任務(wù)的全局計算線程。
[0058]另外,利用公共布隆過濾器選出不重復的二級入口。
[0059]以下通過一個具體的實例來說明本發(fā)明的技術(shù)效果。
[0060]該例中,我們將入口頁面設(shè)為百度貼吧的一個貼吧的帖子列表的首頁:
[0061]http://tieba.baidu.eom/f? kw =% E9% AD% 85% E6% 97% 8F&ie = utf-8
[0062]將該頁面寫入數(shù)據(jù)庫,并且將對其的解析模板各個特征也寫入數(shù)據(jù)庫中,以及生成該頁面的頁面信息存儲表。系統(tǒng)啟動之前的準備就完成了。
[0063]步驟1.1:啟動系統(tǒng)。
[0064]步驟1.2:系統(tǒng)檢查數(shù)據(jù)庫,數(shù)據(jù)庫中有入口頁面、頁面解析模板和頁面信息存儲表,系統(tǒng)啟動順利。
[0065]步驟1.3:系統(tǒng)初始化一個公共布隆過濾器和生成穩(wěn)定核的核框架,之后系統(tǒng)開始生成運行爬蟲線程。
[0066]步驟1.4:從線程池中生成一個爬蟲線程A,A從數(shù)據(jù)庫中加載示例入口頁面進行爬取,爬到頁面后解析出四個二級頁面鏈接:
[0067]頁面a:http://tieba.baidu.com/p/3953810314
[0068]頁面β:http://tieba.baidu.com/p/3969039572
[0069]頁面γ:http://tieba.baidu.com/p/3969049452
[0070]頁面δ:http://tieba.baidu.com/p/3969020668
[0071]步驟1.5:這四個頁面鏈接被送入公共布隆過濾器進行過濾,檢查發(fā)現(xiàn)α、β和δ三個頁面沒有爬取過。
[0072]步驟1.6:從線程池中生成三個獨立的線程B、C和D分別對這三個頁面進行爬取,之后將爬取的結(jié)果存入數(shù)據(jù)庫中。
[0073]在上例中,如圖6a所示,系統(tǒng)最后一個運行階段將有4個線程AB⑶同時運行,此時穩(wěn)定核由四個線程組成,下面說明在此階段時發(fā)生一種故障時候的應對策略:
[0074]假設(shè)此階段中A、C、D三個線程均正常運行,B線程在對其所分配的二級頁面α進行解析的時候由于頁面一部分內(nèi)容缺失而解析模板對這一內(nèi)容缺失并沒有相應的應對策略,因此導致線程Β運行陷入死循環(huán),此時Β線程已經(jīng)陷入非正常工作狀態(tài),無法停止運行,也無法向外發(fā)送信號。
[0075]此時Α線程正好結(jié)束其入口頁面的爬取任務(wù),進入步驟A線程對其下位的B線程進行檢測,發(fā)現(xiàn)B線程陷入死循環(huán)或是阻塞狀態(tài)了。A線程于是將B線程貼上死亡標記從穩(wěn)定核中摘下送入回收區(qū)。當前的穩(wěn)定核狀態(tài)是掛載點環(huán)路含有A、C、D三個線程,線程回收區(qū)含有B —個線程,如圖6b所示。
[0076]由于線程回收區(qū)有了需要回收的線程B,因而產(chǎn)生了一個全局性的回收任務(wù)。這一回收任務(wù)較為耗時,因此需要A、C和D三個健康線程進行負載分配。在后面的一段時間里假設(shè)線程A、C、D均運行過步驟B判斷是否輪到自己進行全局計算,此時由穩(wěn)定核的計算任務(wù)分配算法選出A、C兩個線程不需要進行全局計算,而D線程需要進行全局計算,因此B線程的回收任務(wù)由D線程來執(zhí)行全局計算。
[0077]D線程進入步驟C執(zhí)行回收任務(wù),檢查到線程回收區(qū)內(nèi)的B線程仍在運行,于是D線程將B線程強行關(guān)閉,令B線程釋放其資源,并從系統(tǒng)中刪除。另外,D做線程回收檢查時發(fā)現(xiàn)B線程所需要爬取的二級頁面α依舊未爬取,而該任務(wù)是首次執(zhí)行,出錯可能是由外部因素導致的,因此生成新的Ε線程對二級頁面α進行再次爬取。此時當前的穩(wěn)定核狀態(tài)是掛載點環(huán)路含有A、C、D、Ε四個線程,線程回收區(qū)為空,如圖6c所示。
[0078]因為B線程運行故障是因為二級頁面α的解析模板對內(nèi)容缺失這一特殊問題的處理方案不足,因而Ε下載二級頁面α后依然會因為內(nèi)容缺失導致線程Ε出現(xiàn)和Β—樣的運行故障。之后Ε線程重復Β線程一樣的情況,被送入線程回收區(qū),但是區(qū)別在于在步驟A的時候發(fā)現(xiàn)E線程所執(zhí)行的對二級頁面α是第二次執(zhí)行出錯,因此不再對二級頁面α生成爬取任務(wù)。此時當前的穩(wěn)定核狀態(tài)是掛載點環(huán)路含有A、C、D三個線程,線程回收區(qū)為空,如圖6d所示。
[0079]需要說明的是,上述實施方式僅為本發(fā)明較佳的實施方案,不能將其理解為對本發(fā)明保護范圍的限制,在未脫離本發(fā)明構(gòu)思前提下,對本發(fā)明所做的任何微小變化與修飾均屬于本發(fā)明的保護范圍。
【主權(quán)項】
1.一種線程組織方法,所述方法包括步驟: A:掛載點環(huán)路上一線程對其下一線程進行運行監(jiān)測,檢查有無故障,若有故障,將問題線程從從掛載點環(huán)路上摘下送入線程回收區(qū),并判斷所述故障是否是非首次發(fā)生, 其中若所述故障屬于非首次發(fā)生,則將所述下一線程任務(wù)標記為問題任務(wù),問題任務(wù)不再執(zhí)行, 若所述故障屬于首次發(fā)生,則直接進入步驟B ; B、判斷是否需要執(zhí)行全局任務(wù), 若有回收任務(wù)則執(zhí)行回收任務(wù),回收所有線程回收區(qū)內(nèi)的線程,并將沒有問題任務(wù)標記的任務(wù)加入復活任務(wù)清單, 若無回收任務(wù)則進入步驟C ; C、判斷復活任務(wù)清單中是否有需要復活的任務(wù),若有則生成新線程執(zhí)行該任務(wù)。2.根據(jù)權(quán)利要求1中所述的線程組織方法,其特征在于,所述步驟A之前進一步包括: A01、啟動多線程爬蟲系統(tǒng); A02、初始化多線程爬蟲和數(shù)據(jù)庫的連接,以及檢查爬蟲運行所需的數(shù)據(jù)庫是否有效; A03、系統(tǒng)加載共享資源; A04、系統(tǒng)在線程池中生成多個線程,每個線程獨立解析出二級入口 ; A05、每個線程將自己獲得的二級入口送入公共過濾器,選出不重復的二級入口 ; A06、在線程池中生成新的線程對二級入口進行爬取和解析,并將結(jié)果存入數(shù)據(jù)庫。3.根據(jù)權(quán)利要求1中所述的線程組織方法,其特征在于,利用分布式一致性方法確定負責所述下一線程的回收任務(wù)的全局計算線程。4.根據(jù)權(quán)利要求2中所述的線程組織方法,其特征在于,利用公共布隆過濾器選出不重復的二級入口。
【專利摘要】一種線程組織方法。所述方法包括步驟:A、掛載點環(huán)路上一線程對其下一線程進行運行監(jiān)測,檢查有無故障,若有故障將問題線程從掛載點環(huán)路上摘下送入線程回收區(qū),并判斷所述故障是否是非首次發(fā)生,其中若所述故障屬于非首次發(fā)生,則將所述下一線程任務(wù)標記為問題任務(wù),問題任務(wù)不再執(zhí)行,若所述故障屬于首次發(fā)生,則直接進入步驟B;B、判斷是否需要執(zhí)行全局任務(wù),若有回收任務(wù)則執(zhí)行回收任務(wù),回收所有線程回收區(qū)內(nèi)的線程,并將沒有問題任務(wù)標記的任務(wù)加入復活任務(wù)清單,若無回收任務(wù)則進入步驟C;C、判斷復活任務(wù)清單中是否有需要復活的任務(wù),若有則生成新線程執(zhí)行該任務(wù)。利用本發(fā)明的線程組織方法,能夠提高網(wǎng)絡(luò)爬蟲線程的運行穩(wěn)定性。
【IPC分類】G06F9/38
【公開號】CN105302527
【申請?zhí)枴緾N201510716958
【發(fā)明人】馬應龍, 高延太
【申請人】華北電力大學
【公開日】2016年2月3日
【申請日】2015年10月29日
當前第2頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1