亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于云平臺的分布式高性能網(wǎng)絡(luò)爬蟲的研究與設(shè)計

        2017-09-03 09:21:26石恩名肖曉軍盧宇
        電信科學(xué) 2017年8期
        關(guān)鍵詞:爬蟲IP地址分布式

        石恩名,肖曉軍,盧宇

        (廣州優(yōu)億信息科技有限公司,廣東 廣州 510630)

        基于云平臺的分布式高性能網(wǎng)絡(luò)爬蟲的研究與設(shè)計

        石恩名,肖曉軍,盧宇

        (廣州優(yōu)億信息科技有限公司,廣東 廣州 510630)

        隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)成為最寶貴的資源,而網(wǎng)絡(luò)爬蟲技術(shù)作為外部數(shù)據(jù)采集的重要手段,已然成為數(shù)據(jù)分析的標(biāo)配。介紹了一種高性能、靈活和便捷的基于云平臺的爬蟲架構(gòu)設(shè)計和實現(xiàn)。從爬蟲的整體架構(gòu)、分布式設(shè)計以及各模塊的設(shè)計等角度進(jìn)行了詳細(xì)的闡述。爬蟲各模塊用 Docker封裝,Kubernetes做集群的資源調(diào)度和管理,在性能優(yōu)化上采用了MD5去重樹算法、DNS優(yōu)化和異步I/O等多種策略組合的形式。實驗表明,對比未優(yōu)化的方案,爬蟲在性能上具有較明顯的優(yōu)勢。

        分布式系統(tǒng)架構(gòu);網(wǎng)絡(luò)爬蟲;Docker;高性能

        1 引言

        大數(shù)據(jù)時代,數(shù)據(jù)是最豐富也是最寶貴的,網(wǎng)絡(luò)信息量快速增長,面對這樣海量的數(shù)據(jù),如何快速、精確和低成本地收集到所需數(shù)據(jù)是目前企業(yè)所關(guān)注的熱點。網(wǎng)絡(luò)爬蟲作為一種重要的數(shù)據(jù)采集手段,既是各類應(yīng)用的外部數(shù)據(jù)來源(如內(nèi)容聚合類應(yīng)用:今日頭條、百度新聞等),也是搜索引擎的重要組成部分。特別隨著數(shù)據(jù)分析技術(shù)逐漸在各類互聯(lián)網(wǎng)企業(yè)的應(yīng)用,加上網(wǎng)上應(yīng)用開放API的缺乏,作為外部數(shù)據(jù)主要來源的網(wǎng)絡(luò)爬蟲技術(shù)已經(jīng)逐漸成為數(shù)據(jù)分析類應(yīng)用產(chǎn)品的標(biāo)配。因此不管是在學(xué)術(shù)界還是工業(yè)界, 對它的研究和改良從未間斷過。

        一個好的爬蟲設(shè)計可以從以下幾點來評價。

        2 系統(tǒng)框架設(shè)計

        2.1 整體架構(gòu)

        爬蟲系統(tǒng)的整體框架主要包括四大模塊:調(diào)度模塊、采集模塊、解析模塊、存儲模塊,如圖1所示。爬蟲系統(tǒng)接收一個初始配置信息如起始URL,交遞給調(diào)度模型進(jìn)行處理,調(diào)度模型根據(jù)調(diào)度策略的設(shè)置將調(diào)度請求發(fā)送給采集模塊,采集模塊響應(yīng)請求,通過HTTP下載網(wǎng)頁信息,并將網(wǎng)頁信息傳遞給頁面解析模塊,解析模型調(diào)用解析規(guī)則對頁面進(jìn)行特定解析,并將數(shù)據(jù)存入數(shù)據(jù)庫,同時將解析的URL傳回調(diào)度器。

        圖1 系統(tǒng)整體框架

        2.2 云平臺設(shè)計

        本系統(tǒng)的云平臺底層架構(gòu)采用Docker容器集群代替虛擬機(jī)進(jìn)行構(gòu)建。Docker是一個基于輕量級虛擬化技術(shù)的容器引擎項目,其采用LXC(新版的基于Libcontainter)基于內(nèi)核的虛擬化技術(shù)隔離進(jìn)程、資源和網(wǎng)絡(luò),相比傳統(tǒng)的虛擬機(jī)技術(shù)具備更高的性能和效率,同時具有輕量化、快速啟動等優(yōu)點。

        本系統(tǒng)的分布式架構(gòu)構(gòu)建在 Kubernetes集群上,Kubernetes是一個管理跨主機(jī)容器化應(yīng)用的系統(tǒng),實現(xiàn)了包括部署、運(yùn)維和應(yīng)用彈性伸縮在內(nèi)的一系列基礎(chǔ)功能[1]。爬蟲各模塊為一個Pod容器組,集群通過Replication Controller(副本控制器)創(chuàng)建、維護(hù)和彈性伸縮 Pod集,爬蟲各模塊的通信通過Kafka分布式消息隊列進(jìn)行,如圖2所示。

        3 調(diào)度模塊設(shè)計

        調(diào)度模塊主要包括了調(diào)度器和調(diào)度策略兩大組件,調(diào)度器是調(diào)度模塊的核心,主要負(fù)責(zé)URL的調(diào)度和去重等工作,調(diào)度策略組件主要為調(diào)度器提供策略規(guī)則,解釋URL根據(jù)何種方式進(jìn)行調(diào)度和更新,調(diào)度策略組件可以根據(jù)初始配置進(jìn)行修改,從而實現(xiàn)不同任務(wù)采用不同調(diào)度策略。調(diào)度模型是爬蟲系統(tǒng)性能優(yōu)化的關(guān)鍵點之一,分布式爬蟲任務(wù)調(diào)度模型核心包括兩個部分:URL的分發(fā)服務(wù)和去重。

        圖2 Kubernetes分布式框架

        3.1 爬蟲任務(wù)調(diào)度策略

        對于爬蟲系統(tǒng)來說,大量重復(fù)的鏈接將給搜索引擎帶來巨大的負(fù)面影響,不但會造成索引存儲的內(nèi)存負(fù)擔(dān),同時將大大增加索引檢索的時間消耗。因此,去重算法的選擇是爬蟲性能優(yōu)化的關(guān)鍵。傳統(tǒng)的去重算法包括散列算法、布隆過濾器[2]及其各種變形[3,4],散列算法所需的存儲空間大,檢索速度慢,但錯判率低,可對指定URL進(jìn)行刪除;布隆過濾器所需存儲空間小,檢索速度快,但具有一定幾率的錯判,其只能判斷沖突,不能對指定URL進(jìn)行刪除。

        由于本系統(tǒng)在設(shè)計之初既要兼顧性能,又要兼顧其靈活性和錯判率,去重算法上采用嚴(yán)磊提出的基于MD5去重樹算法[5]進(jìn)行去重?;贛D5去重樹是通過將URL進(jìn)行MD5壓縮,然后構(gòu)建樹結(jié)構(gòu)存儲MD5值,如圖3所示。由于其結(jié)合了散列算法和樹結(jié)構(gòu)的特征,其即具有普通散列算法的低錯判率(16位MD5碰撞概率為又具有樹結(jié)構(gòu)的空間占用小、檢索速度快等特點,基于 MD5去重樹在性能和錯判率上取得較好的平衡,同時可以滿足對指定 URL的刪除功能。

        圖3 基于MD5去重樹算法

        3.2 分布式分發(fā)策略

        Google早在1998年就提出了mater-slave(主從)分布式爬蟲模型[6]提供URL的分發(fā)服務(wù)。為了保證抓取服務(wù)器間的負(fù)載均衡,Ubicrawler提出一種一致性散列的方法來分配任務(wù),抓取服務(wù)器負(fù)責(zé)散列環(huán)的一個片段URL下載,當(dāng)某一臺服務(wù)器發(fā)生異常時,它負(fù)責(zé)將地址片段上的任務(wù)由沿順時針方向?qū)ふ业降牡谝慌_服務(wù)器處理。一致性散列算法滿足了分布式系統(tǒng)中的平衡性、單調(diào)性、分散性和負(fù)載均衡性。本系統(tǒng)采用MD5去重樹做URL索引,因此在做URL服務(wù)分發(fā)的時候可以直接將去重的MD5的值構(gòu)建一致性散列值,從而將去重和分發(fā)結(jié)合起來。

        4 采集模塊設(shè)計

        采集模塊負(fù)責(zé)抓取網(wǎng)頁,是整個系統(tǒng)的基本與關(guān)鍵部分,直接影響爬行效果。采集模塊分為兩個子模塊,一個是下載器,一個是下載中間件。下載器主要是發(fā)送下載請求,下載中間件是指對訪問網(wǎng)頁的請求做加工和處理。

        4.1 下載器

        下載器主要通過HTTP與Web服務(wù)器進(jìn)行通信。采用socket方式下載的網(wǎng)絡(luò)編程模型主要有同步I/O、非阻塞I/O和異步I/O。本系統(tǒng)下載器采用Tornado Web Server開發(fā),支持多線程異步I/O,每個線程的I/O連接數(shù)維持在100個。

        對于利用AJAX技術(shù)動態(tài)生產(chǎn)數(shù)據(jù)的網(wǎng)頁,下載器將請求發(fā)給 PhantomJS進(jìn)行渲染,在PhantomJS完成網(wǎng)頁JavaScript腳本的解析、DOM樹的重構(gòu)以及瀏覽器事件觸發(fā)的模擬,最后PhantomJS將渲染后的頁面返回。

        4.2 下載中間件

        下載中間件是利用鉤子技術(shù)對下載器進(jìn)行截獲,從而構(gòu)建新的下載請求,本系統(tǒng)的下載中間件包括DNS優(yōu)化器、IP代理模塊等。

        (1)DNS優(yōu)化器

        由于URL中域名的大量重復(fù)使用,為了提高DNS解析效率,本系統(tǒng)引入了DNS本地緩存模塊,并對DNS本地緩存檢索、添加、刪除進(jìn)行優(yōu)化。本系統(tǒng)為DNS緩存構(gòu)建了一個域名散列樹主表和一個域名—IP地址映射表,首先通過散列樹將域名的散列值壓縮成樹結(jié)構(gòu),然后通過散列值指向域名—IP地址映射單元,沖突域中按照域名的權(quán)重值進(jìn)行排序,可以定期對IP地址做更新。

        (2)IP地址代理模塊

        IP地址代理模塊主要由3部分組成:IP地址采集器、IP地址池管理模塊、IP地址代理池。IP地址采集器負(fù)責(zé)采集代理網(wǎng)站上的IP地址,然后對其進(jìn)行測試和校驗,將可用的IP地址、響應(yīng)時間和運(yùn)營商等信息存入IP地址代理池中。IP地址池管理模塊是IP地址代理模塊的核心,主要負(fù)責(zé)IP地址調(diào)度和IP地址校驗工作。為了滿足高并發(fā)的采集需求,本文設(shè)計了一種基于域名的IP地址代理調(diào)度模型。首先將IP地址池中的IP地址按照響應(yīng)時間、運(yùn)營商進(jìn)行排序,然后首位相連構(gòu)建成一個環(huán)形鏈表,同一域名下的代理調(diào)度從環(huán)形鏈表頭部開始,逐級循環(huán)下去,這樣既可以保證優(yōu)質(zhì)IP地址被優(yōu)先使用,同時也保證了同一域名下代理IP地址盡可能分散,從而實現(xiàn)了host控制的功能。IP地址池管理模塊除了負(fù)責(zé)IP地址的調(diào)度工作,還負(fù)責(zé)IP地址的校驗更新,IP地址池管理模塊會定時對IP地址代理池中的IP地址進(jìn)行校驗,并對響應(yīng)時間進(jìn)行更新,將不能使用的IP地址進(jìn)行剔除。

        5 解析模塊

        解析模塊主要負(fù)責(zé)內(nèi)容分析和鏈接抽取。網(wǎng)頁中包含各種各樣不同格式的信息,比如文本信息、圖片、視頻,解析模塊就是負(fù)責(zé)將這些信息抽取出來。解析模塊有兩個子模塊:通用解析子模塊和規(guī)則解析子模塊。

        5.1 通用解析器子模塊

        此模塊是指對一些通用的采集、解析任務(wù)進(jìn)行頁面解析,通用解析模塊內(nèi)容包括網(wǎng)頁正文、圖片、視頻等,從常用的文本格式如PDF、txt中抽取文本信息。正文抽取技術(shù)主要采用了朱澤德等人[7]提出的文本密度模型,按行計算網(wǎng)頁文本密度,根據(jù)鄰近行的內(nèi)容連續(xù)性運(yùn)用高斯平滑獲取文本密度,最后利用最大子序列分割的方法抽取正文內(nèi)容。對于視頻和圖像等文件,一般是通過鏈接的錨文本和相關(guān)的文件注釋鎖定解析目標(biāo)位置。

        5.2 規(guī)則解析子模塊

        此模塊負(fù)責(zé)網(wǎng)頁分析和信息抽取,根據(jù)解析規(guī)則對頁面進(jìn)行解析和抽取。解析規(guī)則由用戶進(jìn)行設(shè)定,圖4(a)是本系統(tǒng)的解析文檔示意。解析規(guī)則文檔主要包括了三大部分:URL-pattern、數(shù)據(jù)解析、外鏈解析。URL-pattern主要是提供過濾器的作用,判斷哪些URL使用該模板,URL-pattern支持正則表達(dá)式進(jìn)行匹配。通過URL-pattern匹配的頁面會被交給數(shù)據(jù)解析模塊,數(shù)據(jù)解析模塊構(gòu)建DOM樹,通過CSS語法或Xpath語法抽取頁面內(nèi)容,根據(jù)字段描述信息將解析所得信息存入數(shù)據(jù)庫中,外鏈解析從頁面解析出 URL,通過消息隊列將 URL傳回調(diào)度器,如圖4(b)所示。值得注意的是,在設(shè)計之初考慮到數(shù)據(jù)解析的靈活性問題,數(shù)據(jù)解析子模塊不僅可以采用CSS語法或Xpath語法進(jìn)行解析,同時支持正則表達(dá)式解析和特定腳本語言進(jìn)行解析,如Python、JavaScript。規(guī)則解析可視化界面如圖5所示。

        圖4 規(guī)則解析模塊

        圖5 規(guī)則解析可視化界面

        6 實驗結(jié)果與分析

        本文以hao123網(wǎng)站作為起始URL,測試該系統(tǒng)爬蟲在各方面的性能指標(biāo)。測試環(huán)境為 3臺CPU24核,內(nèi)存32 GB的機(jī)器,運(yùn)行環(huán)境為CentOS 6.5,集群共運(yùn)行6 h,采集速率如圖6所示。3臺機(jī)器6 h共采集數(shù)據(jù)500多萬個頁面,平均采集速率為14 099頁/min,每臺機(jī)器的平均采集速率在4 699 頁/min。

        由于整個系統(tǒng)采用了多種優(yōu)化方案對爬蟲的性能進(jìn)行優(yōu)化,為了對比各種性能的優(yōu)化的效果,采用控制變量方法對各指標(biāo)優(yōu)化前后做對比,其結(jié)果如圖7所示。

        從圖7可以看出,Hash去重樹算法相對于普通的Hash表去重的方法具有非常大的提升,提升了近30倍,同時相對于布隆過濾器在性能上并沒有受到顯著的影響。與未通過DNS優(yōu)化的爬蟲相比,性能上也得到了一定的提升。

        圖6 爬蟲系統(tǒng)6 h采集速率

        圖7 各優(yōu)化項控制變量下對比結(jié)果

        7 結(jié)束語

        本文介紹了一種高性能的分布式云平臺爬蟲框架,底層分布式架構(gòu)利用Kubernetes實現(xiàn)了基于Docker的跨主機(jī)容器集群自動伸縮,并利用集群對資源進(jìn)行監(jiān)控和分配。為構(gòu)建一個高性能的爬蟲,本文采用了MD5去重樹對URL做去重,同時利用 MD5樹所得到的散列值構(gòu)建一致性散列作為URL分發(fā)算法實現(xiàn)負(fù)載均衡。爬蟲的下載器采用異步I/O請求,并對DNS緩存進(jìn)行了優(yōu)化,針對IP地址限制網(wǎng)站,本文設(shè)計了一種基于域名的IP地址代理調(diào)度模型,使IP地址代理池可以被高效利用。在靈活性方面,爬蟲設(shè)計了一套通用的解析規(guī)則,解決了多種類型頁面的解析需求。

        [1]NEGUS C. Docker containers from start to enterprise (includes content update program): build and deploy with Kubernetes, Flannel, Cockpit and Atomic[J]. Vaccine, 2016(19):S87-S95.

        [2]嚴(yán)華云,關(guān)佶紅. Bloom Filter研究進(jìn)展[J]. 電信科學(xué),2010, 26(2):31-36. YAN H Y, GUAN J H. Survey of Bloom Filter[J]. Telecommunications Science, 2010, 26(2):31-36.

        [3]吳樺,龔儉,楊望. 一種基于雙重Counter Bloom Filter的長流識別算法[J]. 軟件學(xué)報,2010, 21(5):1115-1126. WU H, GONG J, YANG W. Algorithm based on double Counter Bloom Filter for large flows identification[J]. Journal of Software, 2010, 21(5):1115-1126.

        [4]張進(jìn),鄔江興,劉勤讓. 4種計數(shù)型Bloom Filter的性能分析與比較[J]. 軟件學(xué)報, 2010, 21(5):1098-1114. ZHANG J, WU J X, LIU Q R. Performance evaluation and comparison of four Counting Bloom filter schemes[J]. Journal of Software, 2010, 21(5):1098-1114.

        [5]嚴(yán)磊,丁賓,姚志敏,等. 基于 MD5去重樹的網(wǎng)絡(luò)爬蟲的設(shè)計與優(yōu)化[J]. 計算機(jī)應(yīng)用與軟件, 2015(2):325-329, 333. YAN L, DING B, YAO Z M, et al. Design and optimisation of md5 duplicate elimination tree-based network crawler[J]. Computer Application and Software, 2015(2):325-329, 333.

        [6]BRIN S, PAGE J.The anatomy of a large-scale hypertextual web search engine[J].Computer Networks and Isdn Systems, 1998,98 (30) : 107-117.

        [7]朱澤德,李淼,張健,等. 基于文本密度模型的Web正文抽取[J].模式識別與人工智能,2013(7):667-672. ZHU Z D, LI M, ZHANG J, et al. Web content extraction based on text density model[J]. Pattern Recognition and Artificial Intelligence, 2013(7):667-672.

        Research and design of distributed high-performance network reptiles based on cloud platform

        SHI Enming, XIAO Xiaojun, LU Yu
        Guangzhou Useease Information Technology Co., Ltd., Guangzhou 510630, China

        With the arrival of large data age, data has become the most valuable resource. And web crawler technology as an important means of external data collection, has become a standard tool for data analysis. A high-performance, convenient cloud-based crawler architecture design was introduced. The overall structure of the reptile to the distributed design and the design of the sub-module was described in detail. Each module of the crawler was encapsulated in Docker, and Kubernetes was used as the resource scheduling and management of the cluster. In the performance of optimization, the MD5 reset tree algorithm, DNS optimization and asynchronous I/O were adopted. Experimental results show that the performance of crawler has obvious advantages compared with the UN optimized scheme.

        distributed system architecture, web crawler, Docker, high-performance

        TP393

        A

        10.11959/j.issn.1000?0801.2017234

        石恩名(1991?),男,現(xiàn)就職于廣州優(yōu)億信息科技有限公司,主要研究方向為數(shù)據(jù)挖掘、人工智能和地理信息系統(tǒng)等。

        肖曉軍(1970?),男,博士,廣州優(yōu)億信息科技有限公司高級工程師,主要研究方向為大數(shù)據(jù)、數(shù)據(jù)挖掘和電信行業(yè)應(yīng)用等。

        盧宇(1983?),男,現(xiàn)就職于廣州優(yōu)億信息科技有限公司,主要研究方向為大數(shù)據(jù)、機(jī)器學(xué)習(xí)和人工智能等。

        2017?04?18;

        2017?07?27

        猜你喜歡
        爬蟲IP地址分布式
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        鐵路遠(yuǎn)動系統(tǒng)幾種組網(wǎng)方式IP地址的申請和設(shè)置
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        分布式光伏熱錢洶涌
        能源(2017年10期)2017-12-20 05:54:07
        分布式光伏:爆發(fā)還是徘徊
        能源(2017年5期)2017-07-06 09:25:54
        基于SNMP的IP地址管理系統(tǒng)開發(fā)與應(yīng)用
        黑龍江電力(2017年1期)2017-05-17 04:25:16
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        基于DDS的分布式三維協(xié)同仿真研究
        西門子 分布式I/O Simatic ET 200AL
        朝鲜女人大白屁股ass孕交 | 日本成人字幕在线不卡| 欧美一级鲁丝片免费一区| 高清国产精品一区二区| 欧美综合图区亚洲综合图区| 亚洲高清美女久久av| 国产亚洲av综合人人澡精品| 精品卡一卡二乱码新区| 国产综合无码一区二区辣椒 | 内射白浆一区二区在线观看| 国产乱国产乱老熟300部视频| 日韩精品无码一区二区三区视频| 婷婷五月亚洲综合图区| 久久伊人久久伊人久久| 亚洲综合日韩一二三区| 免费a级毛片无码a∨中文字幕下载| 丰满人妻被中出中文字幕 | 欧美最大胆的西西人体44 | 韩国日本亚洲精品视频| 久久久人妻丰满熟妇av蜜臀| 国产桃色一区二区三区| 日本高清视频永久网站www| 久久无码高潮喷水| 色二av手机版在线| 久久99精品久久只有精品| 日本a级黄片免费观看| 亚洲va韩国va欧美va| 亚洲精华国产精华液的福利| 精品久久亚洲一级α| 久久亚洲综合亚洲综合| 老女老肥熟女一区二区| 久久久精品国产sm调教网站 | 精品无码无人网站免费视频| 日日摸夜夜添无码无码av| 亚洲精品国产福利在线观看| 成人男性视频在线观看| 国产大片内射1区2区| 老熟女高潮一区二区三区| 亚洲色拍拍噜噜噜最新网站| 男男做h嗯啊高潮涩涩| 精品综合久久久久久888蜜芽|