999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

分布式爬蟲系統(tǒng)中URL去重的設(shè)計與實現(xiàn)

2019-10-21 08:16:45陳宇倫周奎
現(xiàn)代信息科技 2019年11期

陳宇倫 周奎

摘? 要:目前全球URL總數(shù)在350億以上,在滿足時效性的前提下,越來越多地選擇采用分布式爬蟲技術(shù),它可以快速高效地從Web中獲取有價值的數(shù)據(jù)。基于Redis數(shù)據(jù)庫設(shè)計一種相關(guān)去重協(xié)議,實現(xiàn)URL去重,有利于提高分布式系統(tǒng)的穩(wěn)定性和高效性,以及保持整個系統(tǒng)對URL去重的一致性。

關(guān)鍵詞:分布式爬蟲系統(tǒng);URL去重;URL去重協(xié)議

(School of Electrical and Information Engineering,Hubei University of Automotive Technology,Shiyan? 442002,China)

Abstract:There are more than 35 billion URLs in the world nowadays. Under the premise of satisfying the timeliness,more and more people choose to adopt distributed crawler technology,which can quickly and efficiently obtain valuable data from Web. Based on Redis database,this paper designs a kind of related de-reduplication protocol to realize URL de-reduplication,which is helpful to improve the stability and efficiency of distributed system,and to maintain the consistency of the whole system to URL.

Keywords:distributed crawler system;URL de-duplication;URL de-duplication protocol

0? 引? 言

隨著移動互聯(lián)技術(shù)的日益成熟和Web的飛速發(fā)展,Web這張網(wǎng)也愈來愈壯大。每天在這張網(wǎng)中產(chǎn)生大量的數(shù)據(jù),蘊藏在這張網(wǎng)中的數(shù)據(jù)的價值不言而喻。從Web中快速而高效地挖掘數(shù)據(jù)成為各大公司的核心競爭力,要想高效地從Web中挖掘數(shù)據(jù),分布式系統(tǒng)必不可少[1]。在分布式爬蟲系統(tǒng)中也面臨著各種復(fù)雜的挑戰(zhàn),比如分布式任務(wù)的調(diào)度、分布式系統(tǒng)中負載均衡、分布式系統(tǒng)中URL去重等。分布式系統(tǒng)中URL去重算法影響著系統(tǒng)的效率,面對上百億的URL設(shè)計一個優(yōu)秀的去重算法能提高整個系統(tǒng)的性能[2]。

1? 分布式系統(tǒng)URL去重關(guān)鍵技術(shù)

1.1? Redis

Redis是開源的且遵循BSD協(xié)議,基于Key-Value的數(shù)據(jù)庫,同時有著極高的性能以及提供多種數(shù)據(jù)結(jié)構(gòu)的存儲。分布式調(diào)度協(xié)議基于Redis數(shù)據(jù)庫作為數(shù)據(jù)存儲技術(shù),實現(xiàn)分布式系統(tǒng)中URL去重。

基于Redis數(shù)據(jù)庫URL去重協(xié)議的設(shè)計,將分布式系統(tǒng)劃分為兩層,分布式系統(tǒng)架構(gòu)如圖1所示。本地主機和中心主機,將中心主機作為單個網(wǎng)絡(luò)節(jié)點,通過單個節(jié)點實現(xiàn)與本地網(wǎng)絡(luò)和其他網(wǎng)絡(luò)通信對URL去重[3]。

本地主機Redis服務(wù)(local_Redis)擁有三大數(shù)據(jù)庫:(1)已完成的URL池(finish_URL),用于保存已經(jīng)爬取的URL以及去重查詢;(2)爬蟲的任務(wù)池(task_pool),用于保存爬蟲將要爬取的任務(wù);(3)新獲取的URL數(shù)據(jù)池(URL_pool),用于保存最新獲取的URL。

中心主機Redis服務(wù)(center_Redis)擁有三大數(shù)據(jù)庫:(1)去重后的URL數(shù)據(jù)池(task_URL),用于分配給本地網(wǎng)絡(luò)其他主機的task_pool;(2)本地網(wǎng)絡(luò)去重池(local_reduce_pool),用于本地網(wǎng)絡(luò)其他主機間的去重;(3)其他網(wǎng)絡(luò)去重池(dist_reduce_pool),用于發(fā)送至其他網(wǎng)絡(luò),由其他網(wǎng)絡(luò)完成去重查詢,如果沒有其他網(wǎng)絡(luò)此處可選用[4]。

1.2? 分布式系統(tǒng)中URL去重協(xié)議

實現(xiàn)分布式爬蟲系統(tǒng)需要解決分布在不同主機上URL的去重問題,由于URL分散在不同主機和不同網(wǎng)絡(luò),對URL去重存在一些困難。設(shè)計一種協(xié)議為解決URL去重時URL一致性,將一定量URL作為一個集合去重時的基本單位。在去重時每臺主機上的爬蟲獲取的新URL首先在本地去重,然后將第一輪去重后的URL集合提交至中心節(jié)點,再由中心節(jié)點去重,中心節(jié)點將本地網(wǎng)絡(luò)主機發(fā)來的URL分發(fā)至其他網(wǎng)絡(luò),再由其他網(wǎng)絡(luò)去重,再將去重的結(jié)果上報。主機與中心節(jié)點和中心節(jié)點與其他網(wǎng)絡(luò)的去重,按照設(shè)計的數(shù)據(jù)格式通信[5]。

2? URL去重協(xié)議的設(shè)計與實現(xiàn)

2.1? URL去重協(xié)議格式

URL去重協(xié)議格式如圖2所示,URL set為不同主機間要去重的URL集合,每次以一定量的URL作為一次通信的數(shù)據(jù),IP為當(dāng)前主機IP地址,用于主機間的通信和身份標(biāo)識,number為整個分布式系統(tǒng)中唯一的標(biāo)識,用以區(qū)分哪個網(wǎng)絡(luò)哪個主機的哪次請求,flag為每次通信時發(fā)送的何種請求[6]。

2.2? 本地去重

運行在不同主機上的爬蟲在抓取頁面時,會從頁面中獲取新的URL,將新獲取的URL存入本地URL_pool。在本地去重時,遍歷URL_pool中的URL,并計算每個URL的哈希值,同時與finish_url中的哈希值比較,若URL_pool中存在相同的哈希值,將該URL從URL_pool中刪除。在遍歷時將不重復(fù)的URL以一定數(shù)量構(gòu)成URL_set,URL_set數(shù)據(jù)格式為JSON格式,其中以URL字符串為鍵,以阿拉伯?dāng)?shù)字0為默認值進行表示,并生成分布式系統(tǒng)中唯一的number作為去重協(xié)議數(shù)據(jù)幀的標(biāo)識,置flag=1,置IP為本機IP,構(gòu)成基本去重協(xié)議數(shù)據(jù)幀,并將此數(shù)據(jù)幀發(fā)給中心節(jié)點[7]。

2.3? 本地局域網(wǎng)去重

中心節(jié)點收到數(shù)據(jù)時,讀取flag的值,并根據(jù)flag的值將URL_set存入對應(yīng)的數(shù)據(jù)庫中。若flag=1,表明接收到的數(shù)據(jù)為待去重URL的集合,并將整個數(shù)據(jù)幀存入local_reduce_pool。中心節(jié)點處理local_reduce_pool中的數(shù)據(jù)幀時,從local_reduce_pool中每獲取一個數(shù)據(jù)幀,置其flag=2,并向本地局域網(wǎng)主機發(fā)起廣播,等待局域網(wǎng)內(nèi)主機的應(yīng)答。

主機收到數(shù)據(jù)時,判斷flag的值,若flag=2,表明接收的數(shù)據(jù)為去重請求,同時判斷數(shù)據(jù)幀中的IP是否為本機IP,若是,則丟棄該數(shù)據(jù)幀;否則,該數(shù)據(jù)幀進入去重隊列。去重隊列處理數(shù)據(jù)幀時遍歷URL_set中的URL,在遍歷時計算該URL的哈希值,并在finish_URL中查找是否有相同的哈希值,若finish_URL中存在相同的哈希值,則令鍵為該URL字符串的值為1,否則保持原值不變。遍歷完URL_set時,令flag=3,并將該數(shù)據(jù)幀中發(fā)給中心節(jié)點。

中心節(jié)點收到數(shù)據(jù)時,判斷flag的值,若flag=3,表明接收的數(shù)據(jù)為去重應(yīng)答,此時判斷數(shù)據(jù)幀中的IP是否為本局域網(wǎng)中其他主機IP,若是本局域網(wǎng)中其他主機IP數(shù)據(jù)幀進入去重隊列。去重隊列處理數(shù)據(jù)幀時讀取number,并從local_reduce_pool取出相同number的數(shù)據(jù)幀,獲取的數(shù)據(jù)幀其flag=2。去重隊列遍歷flag=3的URL_set,根據(jù)flag=3中值不為0的項,刪除flag=2中對應(yīng)的鍵的項,直到URL_set中的URL遍歷完。在限定的延時時間內(nèi),直到接收了相同number所有主機去重應(yīng)答為止,該number下的URL_set去重結(jié)束,此時刪除local_reduce_pool中該number對應(yīng)的數(shù)據(jù)幀,并將此數(shù)據(jù)幀轉(zhuǎn)入dis_reduce_pool中。

2.4? 分布式系統(tǒng)去重

中心主機接收到數(shù)據(jù)幀時,判斷flag的值,若flag=2,表明此數(shù)據(jù)幀為去重請求,同時判斷IP是否為其他網(wǎng)絡(luò)IP,若是,則此數(shù)據(jù)幀進入dis_reduce_pool,并由分布式去重查詢隊列處理,否則返回。分布式去重查詢隊列將dis_reduce_pool的數(shù)據(jù)幀廣播到本局域網(wǎng)所有主機,等待本地主機的去重應(yīng)答。

中心主機接收到數(shù)據(jù)幀時,判斷flag的值,若flag=3,表明此數(shù)據(jù)幀為去重應(yīng)答,同時判斷IP是否為本機IP或其他網(wǎng)絡(luò)IP。若IP為其他網(wǎng)絡(luò)IP,此數(shù)據(jù)幀進入分布式去重隊列。分布式去重隊列處理數(shù)據(jù)幀時讀取number,并從本機dis_reduce_pool獲取相同number的數(shù)據(jù)幀,獲取到的數(shù)據(jù)幀flag=2,分布式去重隊列遍歷flag=3的URL_set,判斷flag=3中鍵的值是否為0,若是,則令flag=2中對應(yīng)的鍵的值為1,否則保持原值不變。在限定的延時時間內(nèi),直到接收了相同number所有主機的去重應(yīng)答為止,并將該數(shù)據(jù)幀發(fā)送給數(shù)據(jù)幀中IP對應(yīng)的網(wǎng)絡(luò)。若IP為本機IP,此數(shù)據(jù)幀進入分布式去重隊列,分布式隊列處理數(shù)據(jù)幀時讀取number,并從本機dis_reduce_pool獲取相同number的數(shù)據(jù)幀,獲取到的數(shù)據(jù)幀flag=2,分布式去重隊列遍歷flag=3的URL_set,判斷flag=3中鍵的值是否為0,若不是,則刪除flag=2中對應(yīng)的項,否則保持原值不變。在限定的延時時間內(nèi),直到接收了相同number所有主機的去重應(yīng)答為止,分布式系統(tǒng)URL去重完成,并將該URL_set中的URL存入task_pool[8]。

3? 結(jié)? 論

本文設(shè)計了一個簡單且易于實現(xiàn)的分布式去重協(xié)議,對去重協(xié)議算法進行了詳細的介紹和說明。使用Redis數(shù)據(jù)庫存儲URL哈希信息,可以快速查詢URL是否被爬取,分布在不同網(wǎng)絡(luò)的主機將去重結(jié)果發(fā)送至中心主機,中心主機負責(zé)整個分布式系統(tǒng)中URL去重。

參考文獻:

[1] 李婷.分布式爬蟲任務(wù)調(diào)度與AJAX頁面抓取研究 [D].成都:電子科技大學(xué),2015.

[2] 呂陽.分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實現(xiàn) [D].成都:電子科技大學(xué),2013.

[3] 吳昊.主題爬蟲URL分析模型與高度技術(shù)研究 [D].哈爾濱:哈爾濱工程大學(xué),2011.

[4] 邱祝文.基于redis的分布式緩存系統(tǒng)架構(gòu)研究 [J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(10):52+54.

[5] 陳亮,廖文和.分布式結(jié)構(gòu)在企業(yè)信息管理系統(tǒng)中的應(yīng)用 [J].機械制造與自動化,2002(5):48-50.

[6] 程斌,金海,石柯.一種自適應(yīng)的分布式調(diào)度策略 [J].小型微型計算機系統(tǒng),2005,26(10):1793-1798.

[7] 梁正友,張林才.基于Rabin指紋方法的URL去重算法 [J].計算機應(yīng)用,2008,28(S2):185-186+203.

[8] 袁志偉,楊鵬,劉旋.雙結(jié)構(gòu)網(wǎng)絡(luò)中URL去重機制研究 [J].太原理工大學(xué)學(xué)報,2016,47(1):68-74.

作者簡介:陳宇倫(1995-),男,漢族,湖北孝感人,本科在讀,研究方向:分布式爬蟲系統(tǒng)、網(wǎng)絡(luò)程序開發(fā)與設(shè)計;周奎(1980-),漢族,男,湖北荊州人,講師,碩士研究生,研究方向:智能汽車、圖像處理、嵌入式系統(tǒng)。

主站蜘蛛池模板: 无码AV高清毛片中国一级毛片 | 久久大香香蕉国产免费网站| 国产在线精彩视频论坛| 欧美高清三区| 欧美三級片黃色三級片黃色1| 欧美精品亚洲精品日韩专区| 国内精品一区二区在线观看| 亚洲综合经典在线一区二区| 另类重口100页在线播放| 国产精品女主播| 精品伊人久久大香线蕉网站| 黄色一及毛片| 91精品最新国内在线播放| 亚洲AV色香蕉一区二区| 久草网视频在线| 91视频青青草| 亚洲福利网址| 日本不卡免费高清视频| 久久久久国产精品嫩草影院| 国产原创第一页在线观看| 欧美精品成人| 亚洲国产成人精品一二区| 99精品国产自在现线观看| 国产无码网站在线观看| 亚洲香蕉在线| 日韩天堂网| 久久久久久尹人网香蕉| 看国产毛片| 伊人网址在线| 三上悠亚一区二区| 国产www网站| 中文国产成人精品久久| 任我操在线视频| av性天堂网| 99激情网| 2020国产精品视频| 福利视频一区| 欧洲免费精品视频在线| 青草免费在线观看| 最新国产在线| 中文字幕第1页在线播| 视频一本大道香蕉久在线播放| 久久青草免费91观看| 色综合天天操| 国产欧美视频在线| 国产精品视频观看裸模| 小说 亚洲 无码 精品| 国产视频入口| 欧美a网站| 国产中文一区a级毛片视频| 亚洲天堂免费在线视频| 国产亚洲欧美日韩在线一区二区三区| 91毛片网| 综合天天色| 99re在线视频观看| 欧美激情伊人| 色综合成人| 久久这里只有精品66| 91无码人妻精品一区二区蜜桃| 亚洲永久视频| 在线观看免费黄色网址| 亚洲欧美一区二区三区图片| 国产精品一区二区久久精品无码| 成人综合在线观看| 亚洲精品卡2卡3卡4卡5卡区| 亚洲国产精品人久久电影| 国语少妇高潮| a级毛片免费看| 国产精品视频a| 男女性色大片免费网站| 18禁影院亚洲专区| 露脸国产精品自产在线播| 激情乱人伦| 天天综合网在线| 精品成人免费自拍视频| a级毛片免费网站| 国产a网站| 久久婷婷五月综合97色| 国产91麻豆免费观看| 国产性生交xxxxx免费| 欧美日韩动态图| 国产极品嫩模在线观看91|