欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Kafka和Quartz的分布式爬蟲架構(gòu)及其實現(xiàn)方法

文檔序號:9911284閱讀:896來源:國知局
一種基于Kafka和Quartz的分布式爬蟲架構(gòu)及其實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及計算機數(shù)據(jù)挖掘技術(shù)領(lǐng)域,具體地說是一種基于Kafka和Quartz的分布式爬蟲架構(gòu)及其實現(xiàn)方法。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)爬蟲是搜索引擎技術(shù)的基礎(chǔ)組成部分。網(wǎng)絡(luò)爬蟲技術(shù)是從一個或若干個初始網(wǎng)頁的URL(Uniform Resource Locator,統(tǒng)一資源定位符)開始,活的初始網(wǎng)頁上的URL,在抓取網(wǎng)頁信息的過程中,根據(jù)網(wǎng)頁的抓取策略,不斷從當前頁面上抽取新的URL放入隊列,直到滿足某種停止條件。然后將抓取到的網(wǎng)頁信息存儲在搜索引擎的服務(wù)器中,從而可以加快用戶的搜索速度。
[0003]隨著互聯(lián)網(wǎng)的爆炸性增長,網(wǎng)絡(luò)所承載的數(shù)據(jù)量已經(jīng)遠遠超出人們的想象。在大數(shù)據(jù)時代,面對如此巨大的數(shù)據(jù)量,如何快速精準的檢索信息,如何能夠更高效的收集網(wǎng)絡(luò)信息,顯然變得至關(guān)重要。
[0004]為滿足上述的要求,作為抓取工具的爬蟲必須具備更加優(yōu)越的性能。具備單一節(jié)點的傳統(tǒng)爬蟲架構(gòu)無法滿足海量數(shù)據(jù)的抓取需求。因此,便產(chǎn)生了支持高并發(fā),多節(jié)點分布式部署的分布式爬蟲架構(gòu)。
[0005]對于分布式爬蟲來說,其中有兩個需要解決的重點問題是:一,爬取隊列消息的多節(jié)點分發(fā)問題;二,定時爬取問題;對于解決上述兩個問題,不同的分布式爬蟲架構(gòu)有不同的解決方案,就目前來講,因為分布式爬蟲架構(gòu)往往是各個公司的核心機密,所以一般不會公開分布式爬蟲的具體實現(xiàn)細節(jié)。已經(jīng)開源的常用的分布式爬蟲包括Google Crawler,Mercator ,Nutch等,但開源分布式爬蟲缺乏一定的定制性,不能很好的滿足多變的爬取需求。是否可以利用已有的成熟的單機爬蟲框架結(jié)合分布式工具完成分布式爬蟲的需求,使其可以滿足大部分的爬取需求,并具備高并發(fā),支持分布式等特征,成為眾多技術(shù)人員研究的方向。
[0006]綜上所述,如何能夠通過單機爬蟲框架結(jié)合分布式工具完成分布式爬蟲的需求,實現(xiàn)爬取隊列消息的多節(jié)點分發(fā)以及定時爬取是目前現(xiàn)有技術(shù)中存在的問題。
[0007]

【發(fā)明內(nèi)容】

本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種基于Kafka和Quartz的分布式爬蟲架構(gòu)及其實現(xiàn)方法,來解決如何能夠通過單機爬蟲框架結(jié)合分布式工具完成分布式爬蟲的需求,實現(xiàn)爬取隊列消息的多節(jié)點分發(fā)以及定時爬取的問題。
[0008]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于Kafka和Quartz的分布式爬蟲架構(gòu),該爬蟲架構(gòu)包括基礎(chǔ)爬蟲組件、URL存儲隊列、基于Kafka的URL消息分發(fā)機制、基于Quartz的爬蟲作業(yè)調(diào)度機制和前端控制臺;
所述基礎(chǔ)爬蟲組件是基于開源的單機爬蟲組件,包括頁面解析生成URL、URL過濾器和頁面爬取;
所述URL存儲隊列,采用內(nèi)存數(shù)據(jù)庫,內(nèi)存數(shù)據(jù)庫用來存儲待爬取以及已經(jīng)爬取完成的URL消息隊列,實現(xiàn)分布式爬蟲的增量爬取;其中,URL存儲隊列利用高校的內(nèi)存數(shù)據(jù)庫來完成,如使用鍵值結(jié)構(gòu)自動去重的Redis,或者是具備優(yōu)良性能的伯克利數(shù)據(jù)庫。
[0009]所述基于Kafka的消息分發(fā)機制,采用生產(chǎn)者-消費者異步請求處理機制,一個生產(chǎn)者對應(yīng)N個消費者,分別部署于不同的節(jié)點;生產(chǎn)者負責產(chǎn)生待爬取的URL消息隊列,而消費者負責從待爬取隊列中獲取URL消息隊列進行爬取,并將已完成的爬取存入已爬取隊列;其中,Kafka是Linkedin開發(fā)的一種分布式的消息隊列系統(tǒng)(Message Queue),支持分布式部署,Kafka集群有多個Broker服務(wù)器組成,每個類型的消息被定義為topic內(nèi)部的消息按照一定的key和算法被分區(qū)(partit1n)存儲在不同的Broker Iafka采用生產(chǎn)者-消費者模式來異步處理請求,信息生產(chǎn)者(Producer)和消費者(Consumer)可以在多個Broker上生產(chǎn)和消費topic,達到消除請求高峰的目的,從而提高系統(tǒng)穩(wěn)定性和吞吐量。
[0010]所述基于Quartz的作業(yè)調(diào)度機制,負責完成對分布式爬蟲架構(gòu)的爬取作業(yè)的調(diào)度,爬取作業(yè)分為生產(chǎn)者作業(yè)(Producer Job)和消費者作業(yè)(Consumer Job)兩種類型,使用不同的作業(yè)調(diào)度規(guī)則進行調(diào)度;其中,生產(chǎn)者作業(yè)與消費者作業(yè)的對應(yīng)關(guān)系是I對N的關(guān)系,N不同,調(diào)度規(guī)則也不同,即由于N的不同,不同組的消費者作業(yè)使用不同的調(diào)度規(guī)則,故消費者作業(yè)使用不同的作業(yè)調(diào)度規(guī)則;消費者端可以部署在多臺機器上,生產(chǎn)者僅需部署在一臺機器上,這樣就可以實現(xiàn)爬蟲作業(yè)的分布式部署,通過Quartz的調(diào)度就可以實現(xiàn)不同節(jié)點的分布式調(diào)度。Quartz是一種開源的輕量級作業(yè)調(diào)度框架,完全由java編寫,具備很大的靈活性而又不失簡單性,可以用來為執(zhí)行一個作業(yè)創(chuàng)建簡單或者復(fù)雜的調(diào)度,為確保可伸縮性,Quartz采用了基于多線程的架構(gòu),Quartz同樣支持分布式部署,能夠并發(fā)運行多個作業(yè),可以很好的滿足分布式爬蟲作業(yè)的調(diào)度需求。
[0011]所述前端控制臺,負責完成對分布式爬蟲的管理以及定制。
[0012]作為優(yōu)選,所述頁面解析生成URL負責從當前頁面中提取URL鏈接。
[0013]更優(yōu)地,所述URL過濾器負責根據(jù)爬取規(guī)則將產(chǎn)生URL鏈接進行過濾,得到符合規(guī)則的URL鏈接。
[0014]更優(yōu)地,所述頁面爬取負責符合爬取規(guī)則的URL鏈接進行頁面抓取,定制頁面抓取內(nèi)容。
[0015]更優(yōu)地,所述前端控制臺負責完成爬取入口、爬取規(guī)則、爬取結(jié)果存儲方式和調(diào)度規(guī)則的參數(shù)設(shè)定以及完成對爬取作業(yè)的啟停管理和分布式爬蟲的集群部署管理。
[0016]更優(yōu)地,所述內(nèi)存數(shù)據(jù)庫自動完成數(shù)據(jù)的去重存儲,完成待爬取隊列的去重存儲以及已爬取隊列的存儲,實現(xiàn)分布式爬蟲的增量爬取和中斷爬取。
[0017]—種基于Kafka和Quartz的分布式爬蟲架構(gòu)的實現(xiàn)方法,采用上述任意一種基于Kafka和Quartz的分布式爬蟲架構(gòu),包括如下步驟:
(1)、通過前端控制臺的頁面設(shè)定爬取入口、爬取規(guī)則、爬取結(jié)果存儲方式以及調(diào)度規(guī)則的參數(shù),同時選擇要部署的集群節(jié)點進行部署;
(2)、生產(chǎn)者作業(yè)根據(jù)基于Quartz的作業(yè)調(diào)度機制,調(diào)用基礎(chǔ)爬蟲組件根據(jù)爬蟲入口,提取爬取URL鏈接,并去重存儲在待爬取隊列中;
(3)、各個結(jié)點的消費者作業(yè)根據(jù)基于Quartz的作業(yè)調(diào)度機制,調(diào)用基礎(chǔ)爬蟲組件,通過獲取基于Kaf ka的消息分發(fā)機制分發(fā)到本節(jié)點的URL鏈接消息,對URL鏈接進行解析爬取,并將結(jié)果存儲到系統(tǒng)中; (4)、通過前端控制臺的頁面完成對已部署爬取作業(yè)的啟停管理以及各個結(jié)點的消費者作業(yè)增刪管理。
[0018]本發(fā)明的一種基于Kafka和Quartz的分布式爬蟲架構(gòu)及其實現(xiàn)方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
1、本發(fā)明是基于開源組件構(gòu)建分布式爬蟲,可以在利用原有技術(shù)框架的基礎(chǔ)之上進行深度開發(fā)定制,滿足特定的需求,節(jié)省開發(fā)成本;
2、Kafka與Quartz都是經(jīng)過實戰(zhàn)驗證的開源分布式框架,可以很好的滿足分布式爬蟲的需求,可靈活的與其他框架相結(jié)合,從而在保證架構(gòu)性能的基礎(chǔ)之上,實現(xiàn)靈活開發(fā)定制;
3、本發(fā)明利用已有的成熟的單機爬蟲框架結(jié)合Kafka與Quartz分布式工具完成分布式爬蟲的需求,使其可以滿足大部分的爬取需求,并具備高并發(fā),支持分布式等特征,解決了爬取隊列消息的多節(jié)點分發(fā)以及定時爬取的問題。
[0019]由此可見,本發(fā)明具有設(shè)計合理、結(jié)構(gòu)簡單、使用方便、一物多用等特點,因而,具有很好的推廣使用價值。
【附圖說明】
[0020]下面結(jié)合附圖對本發(fā)明進一步說明。
[0021 ]
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
威远县| 蕲春县| 梁平县| 建湖县| 泾阳县| 新巴尔虎右旗| 五河县| 克东县| 玛沁县| 九龙城区| 新蔡县| 霸州市| 当涂县| 林周县| 岚皋县| 寻甸| 泽普县| 宝鸡市| 晋宁县| 乌海市| 郑州市| 西藏| 寻甸| 梅河口市| 呼玛县| 新宁县| 无为县| 中西区| 承德县| 应城市| 伊金霍洛旗| 上杭县| 九江县| 嘉峪关市| 宜宾市| 达拉特旗| 建平县| 哈尔滨市| 黄梅县| 达拉特旗| 凤冈县|