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

一種數(shù)據(jù)抓取系統(tǒng)及方法與流程

文檔序號(hào):11261968閱讀:479來(lái)源:國(guó)知局
一種數(shù)據(jù)抓取系統(tǒng)及方法與流程

本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域和信息技術(shù)領(lǐng)域。具體地說(shuō),是涉及一種數(shù)據(jù)抓取的系統(tǒng)及方法。



背景技術(shù):

隨著社交網(wǎng)絡(luò)、移動(dòng)互聯(lián)網(wǎng)的大規(guī)模發(fā)展,人們能更方便的通過(guò)手機(jī)獲取資訊、發(fā)表言論、溝通交流。特別是在社交網(wǎng)絡(luò)繁榮之后,每個(gè)網(wǎng)民都可以創(chuàng)造信息,使得網(wǎng)絡(luò)中的信息量出現(xiàn)爆發(fā)式的增長(zhǎng),這其中的文本信息有多種來(lái)源:微博、新聞、論壇、博客、問(wèn)答、評(píng)論(又包含視頻、電商、o2o的評(píng)論)等,可以統(tǒng)稱為輿情數(shù)據(jù)。品牌廣告主、政府部門都希望了解網(wǎng)民的輿論,對(duì)于品牌廣告主,他們希望從這些信息中獲取用戶對(duì)品牌的態(tài)度,以及用戶的興趣偏好,而且希望及時(shí)的獲取到網(wǎng)絡(luò)中對(duì)本品牌的負(fù)面信息,從而做出快速的處理。

為了對(duì)海量的文本進(jìn)行深入精細(xì)的分析,需要快速全面的抓取信息,并且能覆蓋多種來(lái)源。目前業(yè)內(nèi)抓取海量數(shù)據(jù)的方法,存在業(yè)務(wù)不明晰,并未針對(duì)性的解決實(shí)時(shí)性、高頻調(diào)用、高可用性的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明提供了一種數(shù)據(jù)抓取系統(tǒng)及方法,提供一種支持多業(yè)務(wù)、實(shí)時(shí)、高頻調(diào)用、高可用性的數(shù)據(jù)抓取系統(tǒng),低延遲的對(duì)多種業(yè)務(wù)的不同數(shù)據(jù)抓取需求進(jìn)行處理,滿足處理數(shù)據(jù)抓取請(qǐng)求量達(dá)10億級(jí)的能力,保證數(shù)據(jù)抓取請(qǐng)求不會(huì)被輕易拋棄,確保服務(wù)的可靠性。

根據(jù)本發(fā)明的第一方面,本發(fā)明提供一種數(shù)據(jù)抓取系統(tǒng),其包括:

任務(wù)去重模塊,接收業(yè)務(wù)線發(fā)來(lái)的抓取數(shù)據(jù)任務(wù),判斷并清除 重復(fù)任務(wù);

任務(wù)隊(duì)列模塊,接收去重后的抓取數(shù)據(jù)任務(wù),形成待抓取任務(wù)隊(duì)列;

任務(wù)調(diào)度模塊,根據(jù)優(yōu)先級(jí)將任務(wù)隊(duì)列中的任務(wù)發(fā)給數(shù)據(jù)抓取模塊;

數(shù)據(jù)抓取模塊,將任務(wù)下發(fā)給各個(gè)爬蟲節(jié)點(diǎn),通過(guò)爬蟲在互聯(lián)網(wǎng)中抓取數(shù)據(jù);

結(jié)果隊(duì)列模塊,緩存抓取到的數(shù)據(jù),將抓取數(shù)據(jù)結(jié)果返回給業(yè)務(wù)線。

優(yōu)選地,所述任務(wù)去重模塊,接收多個(gè)業(yè)務(wù)線發(fā)來(lái)的抓取數(shù)據(jù)任務(wù)。

在本發(fā)明的一些實(shí)施方式中,所述結(jié)果隊(duì)列模塊將抓取到的數(shù)據(jù)也發(fā)給任務(wù)去重模塊,以供所述任務(wù)去重模塊判斷并清除重復(fù)任務(wù)。

優(yōu)選地,所述任務(wù)去重模塊具有歷史任務(wù)庫(kù),存儲(chǔ)結(jié)果隊(duì)列模塊發(fā)來(lái)的抓取到的數(shù)據(jù)。

優(yōu)選地,所述任務(wù)隊(duì)列模塊利用redis形成待抓取任務(wù)隊(duì)列。

優(yōu)選地,本發(fā)明的數(shù)據(jù)抓取系統(tǒng)還包括系統(tǒng)監(jiān)控模塊,用于監(jiān)控各模塊的工作狀態(tài)。在本發(fā)明的一些實(shí)施方式中,所述系統(tǒng)監(jiān)控模塊監(jiān)控各個(gè)任務(wù)隊(duì)列的長(zhǎng)度、每個(gè)爬蟲節(jié)點(diǎn)的負(fù)載,從而確保裝置的高可用性。

在本發(fā)明的一些實(shí)施方式中,所述結(jié)果隊(duì)列模塊利用kafka隊(duì)列,流式返回結(jié)果。如此,可以減少多次建立連接的開(kāi)銷,同時(shí)能保證數(shù)據(jù)的實(shí)時(shí)性。

優(yōu)選地,所述數(shù)據(jù)抓取模塊包括對(duì)外交互模塊和爬蟲模塊,所述爬蟲模塊負(fù)責(zé)控制爬蟲節(jié)點(diǎn),所述對(duì)外交互模塊用于連接服務(wù)器系統(tǒng)與外網(wǎng)。

優(yōu)選地,所述對(duì)外交互模塊為httpapi。

在本發(fā)明的一些實(shí)施方式中,所述數(shù)據(jù)抓取模塊將抓取到的數(shù)據(jù)返回任務(wù)調(diào)度模塊,再由任務(wù)調(diào)度模塊發(fā)給結(jié)果隊(duì)列模塊。

在本發(fā)明的另一些實(shí)施方式中,所述數(shù)據(jù)抓取模塊將抓取到的數(shù)據(jù)發(fā)給結(jié)果隊(duì)列模塊,并通知任務(wù)調(diào)度模塊。

在本發(fā)明的一些實(shí)施方式中,所述任務(wù)調(diào)度模塊對(duì)請(qǐng)求返回錯(cuò)誤的任務(wù)進(jìn)行后續(xù)處理,在所述后續(xù)處理中,當(dāng)出現(xiàn)數(shù)據(jù)抓取錯(cuò)誤時(shí),對(duì)該請(qǐng)求返回錯(cuò)誤的任務(wù)進(jìn)行多次抓取,超過(guò)預(yù)設(shè)次數(shù)后,儲(chǔ)存該請(qǐng)求返回錯(cuò)誤的任務(wù)記錄,從而減少漏抓數(shù)據(jù),保證抓取數(shù)據(jù)的全面。

在本發(fā)明的一些實(shí)施方式中,所述任務(wù)調(diào)度模塊利用雙重加權(quán)輪詢算法確定調(diào)度優(yōu)先級(jí)。

優(yōu)選地,所述雙重加權(quán)輪詢算法基于業(yè)務(wù)線和任務(wù)種類進(jìn)行。

優(yōu)選地,所述任務(wù)調(diào)度模塊根據(jù)業(yè)務(wù)線和任務(wù)種類賦予任務(wù)不同的優(yōu)先級(jí)和權(quán)重并進(jìn)行調(diào)度。

根據(jù)本發(fā)明的第二方面,本發(fā)明提供一種數(shù)據(jù)抓取的方法,其包括:

接收各業(yè)務(wù)線發(fā)送的抓取數(shù)據(jù)任務(wù)并去重;

將去重后的任務(wù)形成任務(wù)隊(duì)列;

基于雙重輪詢算法計(jì)算任務(wù)優(yōu)先級(jí),并基于優(yōu)先級(jí)調(diào)度任務(wù),發(fā)放給爬蟲節(jié)點(diǎn);

利用爬蟲在互聯(lián)網(wǎng)中抓取數(shù)據(jù);

將抓取到的數(shù)據(jù)返回形成結(jié)果隊(duì)列發(fā)回業(yè)務(wù)線。

優(yōu)選地,調(diào)度任務(wù)通過(guò)httpapi發(fā)放給爬蟲節(jié)點(diǎn)。httpapi起到隔離外網(wǎng)與服務(wù)器的作用,從而可以保護(hù)服務(wù)器的安全。

在本發(fā)明的一些實(shí)施方式中,在做任務(wù)去重時(shí),將接收到的任務(wù)與歷史任務(wù)庫(kù)中的任務(wù)進(jìn)行比較。

可選地,當(dāng)發(fā)現(xiàn)與歷史任務(wù)庫(kù)中任務(wù)相同時(shí),與歷史任務(wù)庫(kù)中相同的任務(wù)被丟棄。

可選地,當(dāng)發(fā)現(xiàn)與歷史任務(wù)庫(kù)中任務(wù)相同時(shí),向業(yè)務(wù)線返回歷史任務(wù)的數(shù)據(jù)。

可選地,當(dāng)在歷史任務(wù)庫(kù)中沒(méi)有發(fā)現(xiàn)相同任務(wù)時(shí),將該任務(wù)發(fā)送給任務(wù)隊(duì)列。

在本發(fā)明的一些實(shí)施方式中,所述結(jié)果隊(duì)列將抓取到的數(shù)據(jù)存儲(chǔ)在歷史任務(wù)庫(kù)。

優(yōu)選地,所述結(jié)果隊(duì)列將抓取到的數(shù)據(jù)緩存在歷史任務(wù)庫(kù)。

優(yōu)選地,利用redis形成所述任務(wù)隊(duì)列。

在本發(fā)明的一些實(shí)施方式中,使用雙重輪詢算法計(jì)算任務(wù)優(yōu)先級(jí)時(shí),基于業(yè)務(wù)線和任務(wù)類型賦予任務(wù)不同的優(yōu)先級(jí)和權(quán)重。

在本發(fā)明的一些實(shí)施方式中,所述結(jié)果隊(duì)列利用kafka隊(duì)列,流式返回結(jié)果。

根據(jù)本發(fā)明,數(shù)據(jù)抓取系統(tǒng)各模塊劃分明確,每個(gè)模塊處理簡(jiǎn)單的任務(wù),從而保證數(shù)據(jù)抓取低延時(shí)、抓取規(guī)模方便擴(kuò)展,支持多業(yè)務(wù)、實(shí)時(shí)、高頻調(diào)用、高可用性的數(shù)據(jù)抓取。數(shù)據(jù)延遲不超過(guò)5min,支持每天抓取10億條數(shù)據(jù),抓取任務(wù)不輕易丟棄。

附圖說(shuō)明

本發(fā)明的下列附圖在此作為本發(fā)明的一部分用于理解本發(fā)明。附圖中示出了本發(fā)明的實(shí)施例及其描述,用來(lái)解釋本發(fā)明的原理。在附圖中,

圖1是示意地表示本發(fā)明一些實(shí)施方式的系統(tǒng)構(gòu)成的框圖。

圖2是示意地表示本發(fā)明一些實(shí)施方式的方法的流程圖。

圖3是示意地表示本發(fā)明又一些實(shí)施方式的系統(tǒng)的示意圖。

圖4是示意地表示本發(fā)明又一些實(shí)施方式的方法的流程圖。

具體實(shí)施方式

在下文的描述中,給出了大量具體的細(xì)節(jié)以便提供對(duì)本發(fā)明更為徹底的理解。然而,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)顯而易見(jiàn)的是,本發(fā)明可以無(wú)需一個(gè)或多個(gè)這些細(xì)節(jié)而得以實(shí)施。在其他的例子中,為了避免與本發(fā)明發(fā)生混淆,對(duì)于本領(lǐng)域公知的一些技術(shù)特征未進(jìn)行描述。

本文中所用的術(shù)語(yǔ)

數(shù)據(jù)抓取(又稱網(wǎng)絡(luò)爬蟲):是一種按照一定的規(guī)則,自動(dòng)地 抓取萬(wàn)維網(wǎng)信息的程序或者腳本。

kafka:kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。

redis:redis是一個(gè)開(kāi)源、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、key-value數(shù)據(jù)庫(kù)。

api:applicationprogramminginterface,應(yīng)用程序編程接口,是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。

以下結(jié)合附圖1說(shuō)明本發(fā)明的一種數(shù)據(jù)抓取系統(tǒng)的構(gòu)成。

圖1是示意地表示本發(fā)明涉及的一種實(shí)施方式的系統(tǒng)構(gòu)成的框圖。

如圖1所示,數(shù)據(jù)抓取系統(tǒng)1(以下簡(jiǎn)稱系統(tǒng)1)處理各業(yè)務(wù)線的抓取數(shù)據(jù)任務(wù),抓取數(shù)據(jù)并返回給請(qǐng)求業(yè)務(wù)源。

所述系統(tǒng)構(gòu)成包括:任務(wù)去重模塊100,任務(wù)隊(duì)列模塊200,任務(wù)調(diào)度模塊300,數(shù)據(jù)抓取模塊400,結(jié)果隊(duì)列模塊500。

任務(wù)去重模塊100接收各業(yè)務(wù)線通過(guò)api發(fā)送的抓取數(shù)據(jù)任務(wù),判斷是否存在重復(fù)任務(wù),將未發(fā)現(xiàn)重復(fù)的任務(wù)發(fā)送到任務(wù)隊(duì)列模塊200。所述任務(wù)去重模塊100中包括歷史任務(wù)庫(kù),其中存儲(chǔ)了已抓取的任務(wù)的數(shù)據(jù)。當(dāng)接收到的任務(wù)與歷史任務(wù)庫(kù)中的任務(wù)相同時(shí),根據(jù)不同業(yè)務(wù)線的設(shè)定,任務(wù)去重模塊100可以直接向業(yè)務(wù)線返回存儲(chǔ)的歷史數(shù)據(jù),也可以僅刪除重復(fù)任務(wù)。

相同的任務(wù)可以來(lái)自相同或不同的業(yè)務(wù)線,在判斷的時(shí)候,首先考慮任務(wù)的實(shí)質(zhì)內(nèi)容,例如網(wǎng)址和網(wǎng)頁(yè)內(nèi)容等。

判斷是否為重復(fù)任務(wù)的方法已為本領(lǐng)域技術(shù)人員所熟知,在此不再贅述。在本發(fā)明中,可以使用任何可以實(shí)現(xiàn)本功能的技術(shù)手段。

任務(wù)隊(duì)列模塊200接收任務(wù)去重模塊100進(jìn)行去重處理后的抓取數(shù)據(jù)任務(wù),應(yīng)用redis形成待抓取任務(wù)列表。所述待抓取任務(wù)列表包括具體任務(wù)和抽象任務(wù),所述抽象任務(wù)通過(guò)數(shù)據(jù)抓取模塊400變成具體任務(wù)。

任務(wù)調(diào)度模塊300從任務(wù)隊(duì)列模塊200中讀取任務(wù),利用雙重加權(quán)輪詢算法確定調(diào)度優(yōu)先級(jí),并根據(jù)任務(wù)優(yōu)先級(jí)將任務(wù)推送給數(shù)據(jù)抓取模塊400。其中抽象任務(wù)的優(yōu)先級(jí)高于具體任務(wù)的優(yōu)先級(jí)。當(dāng)出現(xiàn)數(shù)據(jù)抓取錯(cuò)誤時(shí),任務(wù)調(diào)度模塊300對(duì)該請(qǐng)求返回錯(cuò)誤的任務(wù)進(jìn)行多次抓取,超過(guò)預(yù)設(shè)次數(shù)后,儲(chǔ)存該請(qǐng)求返回錯(cuò)誤的任務(wù)記錄,保證抓取數(shù)據(jù)的全面。

利用雙重加權(quán)輪詢算法,可以支持多條業(yè)務(wù)線不同要求的數(shù)據(jù)抓取工作。例如,微博的內(nèi)容傳播很快,普遍要求數(shù)據(jù)抓取快,數(shù)據(jù)入庫(kù)延遲小,而論壇的內(nèi)容傳播相對(duì)較慢,抓取延遲要求不高,但是數(shù)據(jù)量大。當(dāng)微博業(yè)務(wù)線和論壇業(yè)務(wù)線都發(fā)來(lái)抓取任務(wù)時(shí),優(yōu)先抓取微博。

例如有業(yè)務(wù)線a、b、c,都發(fā)起一批網(wǎng)頁(yè)抓取請(qǐng)求的任務(wù),它們的抓取優(yōu)先級(jí)分別是:3、2、1(3級(jí)為最高),權(quán)重系數(shù)分別是:5、2、1。假設(shè)每次從任務(wù)隊(duì)列中抽取8條任務(wù),則每次從業(yè)務(wù)線a中取5條,業(yè)務(wù)線b取2條,業(yè)務(wù)線c取1條。

對(duì)于同一業(yè)務(wù)線發(fā)來(lái)抓取任務(wù),根據(jù)不同的網(wǎng)站分類、網(wǎng)頁(yè)類型優(yōu)先級(jí)也有不同。例如對(duì)于論壇業(yè)務(wù)線,一般先抓取網(wǎng)站首頁(yè)和帖子列表頁(yè)(抽象任務(wù)),從這些頁(yè)面,去獲取到大量的帖子地址,再進(jìn)一步抓取帖子的內(nèi)容(具體任務(wù))。因此,網(wǎng)站首頁(yè)和帖子列表頁(yè)的優(yōu)先級(jí)比帖子具體內(nèi)容的優(yōu)先級(jí)高。

假設(shè)業(yè)務(wù)線a內(nèi)分x、y兩種類型的數(shù)據(jù),抓取優(yōu)先級(jí)分別為:2、1,權(quán)重系數(shù)分別是:3、2,則每次從業(yè)務(wù)線a中取的5條任務(wù)中,x類型任務(wù)取3條,y型任務(wù)取2條。

這樣在各業(yè)務(wù)線之間和同一業(yè)務(wù)線內(nèi)均考慮優(yōu)先級(jí)和權(quán)重即為雙重加權(quán)輪詢。在實(shí)際應(yīng)用中,可以根據(jù)需要而設(shè)定或調(diào)整優(yōu)先級(jí)和權(quán)重。在本發(fā)明中,由于任務(wù)的頭部都帶有來(lái)自業(yè)務(wù)線的信息,因此任務(wù)調(diào)度模塊300根據(jù)這些信息,即可計(jì)算出該任務(wù)的值,并依據(jù)該值進(jìn)行調(diào)度。

本發(fā)明所述的雙重加權(quán)輪詢方法并不僅限于上述說(shuō)明的具體方式,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)知曉實(shí)現(xiàn)這種功能的其他具體方案。

數(shù)據(jù)抓取模塊400接收任務(wù)調(diào)度模塊300向其推送的數(shù)據(jù)抓取任務(wù),數(shù)據(jù)抓取模塊400在公網(wǎng)分布式部署大量爬蟲節(jié)點(diǎn),并將抓取任務(wù)發(fā)給爬蟲節(jié)點(diǎn)進(jìn)行數(shù)據(jù)抓取,抓取節(jié)點(diǎn)布置在微軟azure或者ucloud的低配服務(wù)器,每個(gè)服務(wù)器可以配置多個(gè)ip地址,保證數(shù)據(jù)抓取的穩(wěn)定性,對(duì)于抓取出現(xiàn)錯(cuò)誤的任務(wù),返回給任務(wù)調(diào)度模塊300進(jìn)行處理。

為了保證服務(wù)器的安全,數(shù)據(jù)抓取模塊400還可以包括對(duì)外交互模塊410和爬蟲模塊420,從而避免服務(wù)器與外網(wǎng)的爬蟲節(jié)點(diǎn)直接鏈接。

在本發(fā)明的一些實(shí)施方式中,對(duì)外交互模塊410為httpapi服務(wù)接口,爬蟲模塊420為公網(wǎng)上的爬蟲節(jié)點(diǎn),系統(tǒng)(服務(wù)器)通過(guò)對(duì)外交互模塊與爬蟲節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互。此外,通過(guò)盡可能多地布設(shè)爬蟲節(jié)點(diǎn),提高抓取速度。數(shù)據(jù)抓取模塊400也可以配置防ddos的子模塊,以進(jìn)一步保障抓取安全。

結(jié)果隊(duì)列模塊500緩存抓取到的數(shù)據(jù),爬蟲將抓取到的數(shù)據(jù),通過(guò)數(shù)據(jù)抓取模塊400返回給任務(wù)調(diào)度模塊300,任務(wù)調(diào)度模塊300將結(jié)果發(fā)送給結(jié)果隊(duì)列模塊500,結(jié)果隊(duì)列模塊500將抓取到的數(shù)據(jù)結(jié)果,利用kafka流式返回給發(fā)起任務(wù)的api請(qǐng)求,同時(shí)結(jié)果隊(duì)列模塊500將抓取到的數(shù)據(jù)結(jié)果發(fā)送一份給任務(wù)去重模塊100。去重任務(wù)模塊100將未抓取的任務(wù)發(fā)送到任務(wù)隊(duì)列模塊200,對(duì)于已抓取的任務(wù),可以直接返回抓取結(jié)果或丟棄任務(wù)。

在本發(fā)明的一些實(shí)施方式中,數(shù)據(jù)抓取模塊400也可以向任務(wù)調(diào)度模塊300返回任務(wù)完成通知,并將抓取的數(shù)據(jù)直接發(fā)給結(jié)果隊(duì)列模塊500。

接下來(lái),參照?qǐng)D2說(shuō)明本發(fā)明一些實(shí)施方式的方法的流程圖。

首先,對(duì)數(shù)據(jù)抓取任務(wù)去重,即在任務(wù)去重步驟s101,各業(yè)務(wù)線通過(guò)api將抓取數(shù)據(jù)任務(wù)發(fā)送到任務(wù)去重模塊100進(jìn)行去重處理。

接下來(lái),獲取數(shù)據(jù)抓取任務(wù),即在任務(wù)獲取步驟s102,任務(wù)隊(duì)列模塊200接收經(jīng)過(guò)任務(wù)去重模塊100處理過(guò)的已去重的抓取數(shù)據(jù)任 務(wù),應(yīng)用redis形成待抓取任務(wù)列表。

然后,在任務(wù)調(diào)度步驟s103中,任務(wù)調(diào)度模塊300從任務(wù)隊(duì)列模塊200中讀取任務(wù),利用雙重加權(quán)輪詢算法確定調(diào)度優(yōu)先級(jí),將帶優(yōu)先級(jí)的數(shù)據(jù)抓取任務(wù)推送給數(shù)據(jù)抓取模塊400。

接著,數(shù)據(jù)抓取步驟s104通過(guò)數(shù)據(jù)抓取模塊400接收任務(wù)調(diào)度步驟s103推送過(guò)來(lái)的數(shù)據(jù)抓取任務(wù),通過(guò)大量公網(wǎng)節(jié)點(diǎn)進(jìn)入公網(wǎng)進(jìn)行數(shù)據(jù)抓取,將抓取結(jié)果通過(guò)任務(wù)調(diào)度模塊300發(fā)送到結(jié)果隊(duì)列模塊500中。

然后,在數(shù)據(jù)返回步驟s105中,結(jié)果隊(duì)列模塊500將緩存的數(shù)據(jù)抓取結(jié)果利用kafka隊(duì)列流式返回給發(fā)起任務(wù)的api請(qǐng)求。

圖3是本發(fā)明系統(tǒng)另一些實(shí)施方式的示意圖,其中所述系統(tǒng)還包括系統(tǒng)監(jiān)控模塊600。所述系統(tǒng)監(jiān)控模塊600用于監(jiān)控各個(gè)模塊的工作狀態(tài)、各個(gè)隊(duì)列的長(zhǎng)度、每個(gè)抓取節(jié)點(diǎn)的負(fù)載等,記錄各模塊工作狀態(tài),對(duì)異常狀況進(jìn)行報(bào)警和處理反饋等,從而確保裝置的高可用性。

圖4是本發(fā)明方法的另一些實(shí)施方式的示意圖,其中被判定與歷史任務(wù)庫(kù)中相同的任務(wù)不是被丟棄,而是將歷史任務(wù)的數(shù)據(jù)直接返回業(yè)務(wù)線。

實(shí)施例1

視頻業(yè)務(wù)通過(guò)api發(fā)來(lái)任務(wù)抓取網(wǎng)頁(yè)a1(網(wǎng)站首頁(yè))、a2,輿情業(yè)務(wù)通過(guò)api發(fā)來(lái)任務(wù)抓取網(wǎng)頁(yè)b1(網(wǎng)站首頁(yè))、b2、b3、b4。去重模塊接收到任務(wù)a1、a2、b1、b2、b3和b4,在歷史任務(wù)庫(kù)中查詢,發(fā)現(xiàn)與b4相同的任務(wù),遂丟棄任務(wù)b4,剩下的任務(wù)進(jìn)入任務(wù)隊(duì)列模塊。

在任務(wù)隊(duì)列模塊中,應(yīng)用redis形成待抓取任務(wù)列表。

任務(wù)調(diào)度模塊讀取待抓取任務(wù)列表,根據(jù)任務(wù)頭部信息中所攜帶的業(yè)務(wù)線信息和網(wǎng)頁(yè)類型信息,利用雙重加權(quán)輪詢算法計(jì)算優(yōu)先級(jí)。

輿情業(yè)務(wù)比視頻業(yè)務(wù)的權(quán)重高,所以任務(wù)b1、b2、b3會(huì)更快地被調(diào)度模塊取走。視頻業(yè)務(wù)中由于a1為網(wǎng)站首頁(yè),因此a1比a2更快地被調(diào)取模塊取走。

a1與b2或b3被取走的順序取決于業(yè)務(wù)線優(yōu)先級(jí)和任務(wù)種類優(yōu)先級(jí)的權(quán)重。這個(gè)根據(jù)整體業(yè)務(wù)需要是可調(diào)的。

任務(wù)調(diào)度模塊利用雙重加權(quán)輪詢算法計(jì)算優(yōu)先級(jí)并調(diào)取任務(wù)之后,發(fā)送給數(shù)據(jù)抓取模塊。通過(guò)對(duì)外交互模塊(例如,httpapi),任務(wù)a1、a2、b1、b2、b3最終都會(huì)被分配到爬蟲節(jié)點(diǎn),進(jìn)行數(shù)據(jù)抓取。數(shù)據(jù)抓取到之后,通過(guò)任務(wù)調(diào)度模塊的調(diào)度,傳給結(jié)果隊(duì)列模塊。結(jié)果隊(duì)列模塊將新抓取到得數(shù)據(jù)傳一份給去重模塊,同時(shí)將結(jié)果利用kafka隊(duì)列流式返回給發(fā)起任務(wù)請(qǐng)求的視頻業(yè)務(wù)和輿情業(yè)務(wù),最終,視頻業(yè)務(wù)得到網(wǎng)頁(yè)a1、a2的結(jié)果,輿情業(yè)務(wù)得到網(wǎng)頁(yè)b1、b2、b3的結(jié)果。

實(shí)施例2

與實(shí)施例1的流程基本相同,不同在于當(dāng)發(fā)現(xiàn)與b4相同的歷史任務(wù)時(shí),直接向輿情業(yè)務(wù)返回該歷史任務(wù)的結(jié)果。

實(shí)施例3

與實(shí)施例1的流程基本相同,不同在于數(shù)據(jù)抓去到之后,數(shù)據(jù)抓取模塊將抓取到的數(shù)據(jù)發(fā)給結(jié)果隊(duì)列模塊,同時(shí)通知任務(wù)調(diào)度模塊抓取任務(wù)完成。

實(shí)施例4

與實(shí)施例1的流程基本相同,不同在于任務(wù)網(wǎng)頁(yè)b1(網(wǎng)站首頁(yè))抓取到的數(shù)據(jù)為網(wǎng)頁(yè)列表b1’。網(wǎng)頁(yè)列表b1’被結(jié)果列表發(fā)給去重模塊之后被識(shí)別出包含大量鏈接,且未發(fā)現(xiàn)相同的歷史任務(wù)。于是網(wǎng)頁(yè)列表b1’被拆解成新的任務(wù)b1,b2,b3…。新的任務(wù)b1,b2,b3繼續(xù)通過(guò)任務(wù)去重模塊,任務(wù)隊(duì)列模塊等進(jìn)行處理。

實(shí)施例5

與實(shí)施例1的流程基本相同,不同在于任務(wù)b2在抓取時(shí)發(fā)生錯(cuò)誤。爬蟲模塊通過(guò)對(duì)外交互模塊將錯(cuò)誤信息發(fā)送給任務(wù)調(diào)度模塊。任 務(wù)調(diào)度模塊通過(guò)對(duì)外交互模塊回應(yīng)繼續(xù)嘗試抓取。當(dāng)錯(cuò)誤超過(guò)預(yù)設(shè)條件時(shí)(例如5次,或延遲3min),保存錯(cuò)誤記錄,丟棄任務(wù)b2。

本發(fā)明的方案能夠支持多業(yè)務(wù)、實(shí)時(shí)、高頻調(diào)用、高可用性的數(shù)據(jù)抓取。數(shù)據(jù)延遲不超過(guò)5min,支持每天抓取10億條數(shù)據(jù),抓取任務(wù)不輕易丟棄。

本發(fā)明不限于上述實(shí)施方式,在本發(fā)明思想的范圍內(nèi)可以進(jìn)行各種變更。本發(fā)明已通過(guò)上述實(shí)施例進(jìn)行了說(shuō)明,但應(yīng)當(dāng)理解的是,上述實(shí)施例只是用于舉例和說(shuō)明的目的,而非意在將本發(fā)明限制于所描述的實(shí)施例范圍內(nèi)。此外本領(lǐng)域技術(shù)人員可以理解的是,本發(fā)明并不局限于上述實(shí)施例,根據(jù)本發(fā)明教導(dǎo)還可以做出更多種的變型和修改,這些變型和修改均落在本發(fā)明所要求保護(hù)的范圍以內(nèi)。本發(fā)明的保護(hù)范圍由附屬的權(quán)利要求書及其等效范圍所界定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
香河县| 平塘县| 珲春市| 拉孜县| 塘沽区| 阳新县| 宜川县| 汾阳市| 沽源县| 敦化市| 沧州市| 友谊县| 克拉玛依市| 木里| 临猗县| 镇远县| 亳州市| 湟中县| 将乐县| 鄯善县| 漾濞| 丰都县| 彭山县| 渝北区| 武汉市| 张掖市| 普格县| 阳泉市| 南部县| 城固县| 青河县| 双鸭山市| 手游| 兖州市| 揭西县| 隆德县| 兰考县| 广昌县| 铁岭县| 清丰县| 黔南|