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

一種數(shù)據(jù)采集的方法及其相關(guān)設(shè)備與流程

文檔序號:12199028閱讀:466來源:國知局
一種數(shù)據(jù)采集的方法及其相關(guān)設(shè)備與流程

本發(fā)明涉及互聯(lián)網(wǎng)搜索引擎技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)采集的方法及其相關(guān)設(shè)備。



背景技術(shù):

網(wǎng)絡(luò)爬蟲,用于自動采集互聯(lián)網(wǎng)上的網(wǎng)頁數(shù)據(jù),并將數(shù)據(jù)存儲在存儲介質(zhì)上。在海量數(shù)據(jù)采集的場景下,需要采集的目標網(wǎng)站數(shù)量眾多,需要采集的網(wǎng)頁數(shù)據(jù)量巨大,同時要求采集的效率要求極高,普通的單機爬蟲由于硬件資源有限,無法滿足需求,必須采用分布式爬蟲技術(shù)。

傳統(tǒng)的分布式爬蟲技術(shù),如Apache Nutch等,現(xiàn)有的解決方案是搭建一個主從模式的主機集群,主節(jié)點即控制節(jié)點負責任務(wù)調(diào)度和集群管理,從節(jié)點即爬蟲節(jié)點使用多線程調(diào)度的方式并發(fā)爬蟲程序,從而實現(xiàn)整個分布式爬蟲系統(tǒng)的高并發(fā)數(shù)據(jù)采集。

傳統(tǒng)的分布式爬蟲技術(shù),在爬蟲節(jié)點上使用多線程調(diào)度的方式并發(fā)運行爬蟲程序,多線程爬蟲線程的隔離性較差,開發(fā)者需要謹慎處理好爬蟲線程復(fù)雜的同步問題,否則容易造成線程死鎖或阻塞,同時,操作系統(tǒng)不能為每個線程獨立分配CPU、內(nèi)存等計算資源,若某個線程出現(xiàn)內(nèi)存溢出等問題,可能導(dǎo)致主機系統(tǒng)完全崩潰,影響整體系統(tǒng)的穩(wěn)定性。



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

本發(fā)明實施例提供了一種數(shù)據(jù)采集的方法及其相關(guān)設(shè)備,用于提高整體系統(tǒng)的穩(wěn)定性。

本發(fā)明實施例一方面提供了一種數(shù)據(jù)采集的方法,具體包括:

方法應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)包括控制節(jié)點和多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,方法包括:

控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例令一方面提供了一種數(shù)據(jù)采集的方法,具體包括:

方法應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)包括控制節(jié)點和多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,方法包括:

爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù);

爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù);

爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。

本發(fā)明實施例另一方面提供了一種控制節(jié)點,具體包括:

控制節(jié)點應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)還包括多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,控制節(jié)點包括:

確定單元,用于根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

調(diào)度單元,用于將確定單元確定的數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例另一方面提供了一種爬蟲節(jié)點,具體包括:

爬蟲節(jié)點應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)包括控制節(jié)點和多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,爬蟲節(jié)點中包括:

第一接收單元,用于通過爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù);

采集單元,用于通過爬蟲節(jié)點中的爬蟲容器根據(jù)接收單元接收到的數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù);

存儲單元,用于通過爬蟲節(jié)點中的爬蟲容器存儲采集單元采集到的數(shù)據(jù)。

本發(fā)明實施例另一方面提供了一種控制節(jié)點,具體包括:

控制節(jié)點應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)還包括多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,控制節(jié)點包括:

輸入裝置、輸出裝置、處理器和存儲器;

處理器通過調(diào)用存儲器存儲的操作指令,用于執(zhí)行如下步驟:

控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例另一方面提供了一種爬蟲節(jié)點,具體包括:

爬蟲節(jié)點應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)包括控制節(jié)點和多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器,爬蟲節(jié)點中包括:

輸入裝置、輸出裝置、處理器和存儲器;

處理器通過調(diào)用存儲器存儲的操作指令,用于執(zhí)行如下步驟:

爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù);

爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù);

爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。

從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:

本發(fā)明實施例中,控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高整體系統(tǒng)的穩(wěn)定性。

附圖說明

圖1為本發(fā)明實施例中基于Docker的分布式爬蟲技術(shù)的基礎(chǔ)架構(gòu);

圖2為本發(fā)明實施例中數(shù)據(jù)采集方法一個實施例示意圖;

圖3為本發(fā)明實施例中數(shù)據(jù)采集方法另一實施例示意圖;

圖4為本發(fā)明實施例中數(shù)據(jù)采集方法另一實施例示意圖;

圖5為本發(fā)明實施例中數(shù)據(jù)采集方法另一實施例示意圖;

圖6為本發(fā)明實施例中數(shù)據(jù)采集方法另一實施例示意圖;

圖7為本發(fā)明實施例中基于Docker的分布式爬蟲系統(tǒng)裝置圖;

圖8為本發(fā)明實施例中控制節(jié)點一個實施例示意圖;

圖9為本發(fā)明實施例中控制節(jié)點另一實施例示意圖;

圖10為本發(fā)明實施例中控制節(jié)點另一實施例示意圖;

圖11為本發(fā)明實施例中爬蟲節(jié)點一個實施例示意圖;

圖12為本發(fā)明實施例中爬蟲節(jié)點另一實施例示意圖;

圖13為本發(fā)明實施例中控制節(jié)點另一個實施例示意圖;

圖14為本發(fā)明實施例中爬蟲節(jié)點另一實施例示意圖。

具體實施方式

本發(fā)明實施例提供了一種數(shù)據(jù)采集的方法及其相關(guān)設(shè)備,用于提高整體系統(tǒng)的穩(wěn)定性。

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明保護的范圍。

本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的實施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤4送?,術(shù)語“包括”或“具有”及其任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

下面首先對本發(fā)明的一些名詞進行描述:

分布式爬蟲是指在多個節(jié)點(例如物理主機、虛擬主機)上并發(fā)運行的多個爬蟲。每個爬蟲從互聯(lián)網(wǎng)上獨立或與其它爬蟲協(xié)同采集網(wǎng)頁數(shù)據(jù),并把數(shù)據(jù)持久化存儲。

Docker是一個基于輕量級虛擬化技術(shù)的開源容器引擎,開發(fā)者在此引擎上可以把應(yīng)用以及相關(guān)依賴軟件及工具集合打包到一個可移植的鏡像中,并將鏡像快速發(fā)布到生產(chǎn)環(huán)境上。

Kubernetes是谷歌Google開源的容器集群管理系統(tǒng)。

etcd是一個高可用的鍵值存儲系統(tǒng),主要用于共享配置和服務(wù)發(fā)現(xiàn)。

Shipyard是一個集中化的萬維網(wǎng)Web界面Docker可視化管理平臺。

本發(fā)明實施例應(yīng)用于如圖1所示的基于Docker的分布式爬蟲技術(shù)的基礎(chǔ)架構(gòu),整個爬蟲架構(gòu)分為前端可視化和后臺數(shù)據(jù)采集兩大模塊。前端可視化模塊包括可視化控制和可視化監(jiān)控、后臺數(shù)據(jù)采集模塊包括控制者,監(jiān)控者、工作者和工作者代理,其中控制者和工作者代理相當于控制節(jié)點,工作者相當于爬蟲節(jié)點中的爬蟲容器。

控制者基于RabbitMQ消息隊列和Kubernetes組件,主要負責任務(wù)調(diào)度和容器集群管理。監(jiān)控者基于Shipyard組件,對容器集群中各容器的運行狀況進行監(jiān)控。工作者代理基于etcd組件,負責對工作者進行服務(wù)注冊和服務(wù)發(fā)現(xiàn)。工作者是Docker容器,各個容器內(nèi)部部署運行著各類爬蟲程序和存儲模塊。前端可視化模塊基于RestfulAPI方式與后端模塊交互,為系統(tǒng)提供可視化運維工具。

需要說明的是,以下實施例均應(yīng)用于分布式爬蟲系統(tǒng),分布式爬蟲系統(tǒng)包括控制節(jié)點和多個爬蟲節(jié)點,其中,每個爬蟲節(jié)點中都創(chuàng)建有多個爬蟲容器。

請參閱圖2,本發(fā)明實施例中數(shù)據(jù)采集方法一個實施例包括:

201、控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù)。

本實施例中,控制節(jié)點確定數(shù)據(jù)采集目標之后,會根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù)。

202、控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器。

本實施例中,控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例中,控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高整體系統(tǒng)的穩(wěn)定性。

請參閱圖3,本發(fā)明實施例中數(shù)據(jù)采集方法令一個實施例包括:

301、控制節(jié)點向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像。

本實施例中,控制節(jié)點向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器,爬蟲容器鏡像包括爬蟲程序和爬蟲程序的依賴包。

302、控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù)。

303、控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器。

本實施例中,步驟302和303與圖2中步驟201和202類似,具體此處不做贅述。

需要說明的是控制節(jié)點包括任務(wù)調(diào)度中心和Docker容器集群管理中心,其中,任務(wù)調(diào)度控制中心的核心組件是RabbitMQ消息隊列技術(shù),會根據(jù)采集目標網(wǎng)站或采集目標內(nèi)容的不同進行分類,RabbitMQ創(chuàng)建了多個不同的工作隊列,通過交換器Exchanger將各類采集任務(wù)路由到相應(yīng)的工作隊列中。集群上的爬蟲容器充當消費者,以訂閱的方式從相應(yīng)的工作隊列中領(lǐng)取采集任務(wù)。Docker容器集群管理中心的核心組件是Kubernetes和etcd。Kubernetes對爬蟲集群中的所有容器進行集中的管理,進行資源調(diào)度和均衡容災(zāi),確保系統(tǒng)的可維護性和穩(wěn)定性。etcd負責服務(wù)注冊和服務(wù)發(fā)現(xiàn),根據(jù)容器內(nèi)運行采集程序的不同劃分各個服務(wù)組,分配相對應(yīng)的采集任務(wù),并對各容器內(nèi)采集任務(wù)的運行狀態(tài)進行標記。

本發(fā)明實施例中,控制節(jié)點向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器??刂乒?jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù),控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性。

請參閱圖4,本發(fā)明實施例中數(shù)據(jù)采集方法令一個實施例包括:

401、控制節(jié)點向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像。

本實施例中,步驟401與圖3中步驟301類似,具體此處不做贅述。

402、控制節(jié)點監(jiān)控每個爬蟲容器的運行狀況。

本實施例中,控制節(jié)點監(jiān)控每個爬蟲容器的運行狀況,控制節(jié)點根據(jù)每個爬蟲容器的運行狀況,管理每個爬蟲容器。

其中,管理每個爬蟲容器,包括控制節(jié)點停止、啟動或者銷毀每個爬蟲容器。

需要說明的是,步驟402在步驟401之后,也可以在步驟403或404之后,具體此處不做限定。

403、控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù)。

404、控制節(jié)點將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器。

本實施例中,步驟403和404與圖2中步驟201和202類似,具體此處不做贅述。

需要說明的是控制節(jié)點包括任務(wù)調(diào)度中心和Docker容器集群管理中心,其中,任務(wù)調(diào)度控制中心的核心組件是RabbitMQ消息隊列技術(shù),會根據(jù)采集目標網(wǎng)站或采集目標內(nèi)容的不同進行分類,RabbitMQ創(chuàng)建了多個不同的工作隊列,通過交換器Exchanger將各類采集任務(wù)路由到相應(yīng)的工作隊列中。集群上的爬蟲容器充當消費者,以訂閱的方式從相應(yīng)的工作隊列中領(lǐng)取采集任務(wù)。Docker容器集群管理中心的核心組件是Kubernetes和etcd。Kubernetes對爬蟲集群中的所有容器進行集中的管理,進行資源調(diào)度和均衡容災(zāi),確保系統(tǒng)的可維護性和穩(wěn)定性。etcd負責服務(wù)注冊和服務(wù)發(fā)現(xiàn),根據(jù)容器內(nèi)運行采集程序的不同劃分各個服務(wù)組,分配相對應(yīng)的采集任務(wù),并對各容器內(nèi)采集任務(wù)的運行狀態(tài)進行標記。

本發(fā)明實施例中,控制節(jié)點向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器,控制節(jié)點對每個爬蟲容器進行監(jiān)控,根據(jù)該監(jiān)控管理每個爬蟲容器。控制節(jié)點根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù),將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性,且控制節(jié)點可以管理到爬蟲節(jié)點里的每一個爬蟲容器,增強了系統(tǒng)的管理力度。

請參閱圖5,本發(fā)明實施例中數(shù)據(jù)采集方法令一個實施例包括:

501、爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù)。

本實施例中,當爬蟲節(jié)點中的爬蟲容器創(chuàng)建好之后,從控制節(jié)點接收數(shù)據(jù)采集任務(wù)。

502、爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù)。

本實施例中,當爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù)之后,爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù)。

503、爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。

本實施例中,爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集到對應(yīng)的數(shù)據(jù)之后,爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。

本發(fā)明實施例中,爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù),爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性。

請參閱圖6,本發(fā)明實施例中數(shù)據(jù)采集方法令一個實施例包括:

601、爬蟲節(jié)點從控制節(jié)點接收爬蟲容器鏡像。

本實施例中,控制節(jié)點中的將爬蟲程序和爬蟲程序的依賴包打包成可移植的爬蟲容器鏡像,在將該爬蟲容器鏡像發(fā)送至爬蟲節(jié)點。

602、爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器。

本實施例中,當爬蟲節(jié)點從控制節(jié)點接收爬蟲容器鏡像之后,爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器,通過多容器協(xié)同的方式實現(xiàn)爬蟲高并發(fā)。

需要說明的是,操作系統(tǒng)為每個爬蟲容器都分配了限定的中央處理器CPU和內(nèi)存資源,避免了某個容器過多的占用資源而導(dǎo)致系統(tǒng)性能下降甚至系統(tǒng)崩潰。

603、爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù)。

604、爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù)。

605、爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。

本實施例中,步驟603至605與圖5中步驟501至503類似,具體此處不做贅述。

需要說明的是每個爬蟲節(jié)點都安裝了Docker,且運行著一系列的爬蟲容器,該爬蟲容器分為兩類,一類爬蟲容器中運行著各類爬蟲程序,負責網(wǎng)頁數(shù)據(jù)的下載和解析,一類為MongoDB容器,MongoDB容器運行著MongoDB數(shù)據(jù)庫,負責網(wǎng)頁數(shù)據(jù)的本地存儲。

本發(fā)明實施例中,爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù),爬蟲節(jié)點中的爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),爬蟲節(jié)點中的爬蟲容器存儲采集到的數(shù)據(jù)。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),由于Docker基于Linux的Namespace、cgroup技術(shù),容器之間的隔離性好,減少了容器內(nèi)各個爬蟲程序之間的干擾,同時通過為每個容器分配限定的CPU、內(nèi)存資源,避免了某個容器過多的占用資源而導(dǎo)致系統(tǒng)性能下降甚至系統(tǒng)崩潰,從而提高了整體系統(tǒng)的穩(wěn)定性,且控制節(jié)點可以管理到爬蟲節(jié)點里的每一個爬蟲容器,增強了系統(tǒng)的管理力度。

本發(fā)明實施例中,系統(tǒng)可以通過制作鏡像和創(chuàng)建容器的方式動態(tài)的增加定制化的爬蟲程序,擴展系統(tǒng)采集功能,而且爬蟲程序的開發(fā)可以不限于任何一種語言,如Java、Phyton等,系統(tǒng)的可擴展性好。且爬蟲容器的創(chuàng)建、啟動、停止、銷毀速度都在秒級以內(nèi),所以該系統(tǒng)可伸縮性也好。

為便于理解,下面結(jié)合具體的應(yīng)用場景對本實施例進行描述:

如圖7所示的系統(tǒng)裝置圖,系統(tǒng)將爬蟲程序和所需的依賴包打包制作成可移植的Docker鏡像,將鏡像發(fā)布到各個爬蟲節(jié)點上,再由鏡像快速創(chuàng)建大量的爬蟲容器。任務(wù)調(diào)度控制中心的核心組件是RabbitMQ消息隊列技術(shù)。根據(jù)采集目標網(wǎng)站或采集目標內(nèi)容的不同進行分類,RabbitMQ創(chuàng)建了多個不同的工作隊列,通過Exchanger將各類采集任務(wù)路由到相應(yīng)的工作隊列中。集群上的爬蟲容器充當消費者,以訂閱的方式從相應(yīng)的工作隊列中領(lǐng)取采集任務(wù)。Docker容器集群管理中心的核心組件是Kubernetes和etcd。Kubernetes對爬蟲集群中的所有容器進行集中的管理,進行資源調(diào)度和均衡容災(zāi),確保系統(tǒng)的可維護性和穩(wěn)定性。etcd負責服務(wù)注冊和服務(wù)發(fā)現(xiàn),根據(jù)容器內(nèi)運行采集程序的不同劃分各個服務(wù)組,分配相對應(yīng)的采集任務(wù),并對各容器內(nèi)采集任務(wù)的運行狀態(tài)進行標記。

Web前端控制臺基于RestfulAPI的方式與后臺任務(wù)調(diào)度控制中心和Docker容器集群控制中心進行交互,實現(xiàn)整個分布式爬蟲系統(tǒng)的可視化控制。Shipyard提供了一個Web界面的監(jiān)控平臺,實現(xiàn)系統(tǒng)的可視化監(jiān)控。

上面對本發(fā)明實施例中的數(shù)據(jù)采集方法進行了描述,下面對本發(fā)明實施例中的服務(wù)器進行描述,請參閱圖8,本發(fā)明實施例中的控制節(jié)點包括:

確定單元801,用于根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

調(diào)度單元802,用于將確定單元確定的數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例中,確定單元801根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);調(diào)度單元802將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高整體系統(tǒng)的穩(wěn)定性。

請參閱圖9,本發(fā)明實施例中控制節(jié)點令一個實施例包括:

發(fā)送單元901,用于向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器,爬蟲容器鏡像包括爬蟲程序和爬蟲程序的依賴包;

確定單元902,用于根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

調(diào)度單元903,用于將確定單元確定的數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

本發(fā)明實施例中,發(fā)送單元901向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器。確定單元902根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù),調(diào)度單元903將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性。

請參閱圖10,本發(fā)明實施例中控制節(jié)點令一個實施例包括:

發(fā)送單元1001,用于向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器,爬蟲容器鏡像包括爬蟲程序和爬蟲程序的依賴包;

監(jiān)控單元1002,用于監(jiān)控每個爬蟲容器的運行狀況;

管理單元1003,用于根據(jù)每個爬蟲容器的運行狀況,管理每個爬蟲容器;

確定單元1004,用于根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù);

調(diào)度單元1005,用于將確定單元確定的數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。

其中,管理單元1003包括:

管理子單元10031,用于控制節(jié)點停止、啟動或者銷毀每個爬蟲容器。

本發(fā)明實施例中,發(fā)送單元1001向每個爬蟲節(jié)點發(fā)送爬蟲容器鏡像,以使每個爬蟲節(jié)點根據(jù)爬蟲容器鏡像創(chuàng)建多個爬蟲容器。確定單元1004根據(jù)數(shù)據(jù)采集目標確定數(shù)據(jù)采集任務(wù),調(diào)度單元1005將數(shù)據(jù)采集任務(wù)調(diào)度到目標爬蟲容器,以使目標爬蟲容器根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),并存儲采集到的數(shù)據(jù),目標爬蟲容器為多個爬蟲容器中的一個。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性,且控制節(jié)點可以管理到爬蟲節(jié)點里的每一個爬蟲容器,增強了系統(tǒng)的管理力度。

上面對本發(fā)明實施例中的控制節(jié)點進行了描述,下面對本發(fā)明實施例中的爬蟲節(jié)點進行描述,請參閱圖11,本發(fā)明實施例中的爬蟲節(jié)點包括:

第一接收單元1101,用于通過爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù);

采集單元1102,用于通過爬蟲節(jié)點中的爬蟲容器根據(jù)接收單元接收到的數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù);

存儲單元1103,用于通過爬蟲節(jié)點中的爬蟲容器存儲采集單元采集到的數(shù)據(jù)。

本發(fā)明實施例中,第一接收單元1101從控制節(jié)點接收數(shù)據(jù)采集任務(wù),采集單元1102根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),存儲單元1103存儲采集到的數(shù)據(jù)。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性。

請參閱圖12,本發(fā)明實施例中爬蟲節(jié)點令一個實施例包括:

第二接收單元1201,用于從控制節(jié)點接收爬蟲容器鏡像,爬蟲容器鏡像包括爬蟲程序和爬蟲程序的依賴包;

創(chuàng)建單元1202,用于根據(jù)第二接收單元接收到的爬蟲容器鏡像創(chuàng)建多個爬蟲容器;

第一接收單元1203,用于通過爬蟲節(jié)點中的爬蟲容器從控制節(jié)點接收數(shù)據(jù)采集任務(wù);

采集單元1204,用于通過爬蟲節(jié)點中的爬蟲容器根據(jù)接收單元接收到的數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù);

存儲單元1205,用于通過爬蟲節(jié)點中的爬蟲容器存儲采集單元采集到的數(shù)據(jù)。

本發(fā)明實施例中,第二接收單元1201從控制節(jié)點接收爬蟲容器鏡像,爬蟲容器鏡像包括爬蟲程序和爬蟲程序的依賴包,創(chuàng)建單元1202根據(jù)第二接收單元接收到的爬蟲容器鏡像創(chuàng)建多個爬蟲容器;第一接收單元1203從控制節(jié)點接收數(shù)據(jù)采集任務(wù),采集單元1204根據(jù)數(shù)據(jù)采集任務(wù),采集對應(yīng)的數(shù)據(jù),存儲單元1205存儲采集到的數(shù)據(jù)。由于本發(fā)明實施例采用爬蟲容器協(xié)同的方式實現(xiàn)爬蟲的高并發(fā),控制節(jié)點可對爬蟲容器進行集群管理,且爬蟲容器間的隔離性好,可以減少容器內(nèi)各個爬蟲程序之間的干擾,提高了整體系統(tǒng)的穩(wěn)定性,且控制節(jié)點可以管理到爬蟲節(jié)點里的每一個爬蟲容器,增強了系統(tǒng)的管理力度。

圖13是本發(fā)明實施例提供的一種控制節(jié)點結(jié)構(gòu)示意圖,該控制節(jié)點1300可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)1322(例如,一個或一個以上處理器)和存儲器1332,一個或一個以上存儲應(yīng)用程序1342或數(shù)據(jù)1344的存儲介質(zhì)1330(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1332和存儲介質(zhì)1330可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1330的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器1322可以設(shè)置為與存儲介質(zhì)1330通信,在控制節(jié)點1300上執(zhí)行存儲介質(zhì)1330中的一系列指令操作。

控制節(jié)點1300還可以包括一個或一個以上電源1326,一個或一個以上有線或無線網(wǎng)絡(luò)接口1350,一個或一個以上輸入輸出接口1358,和/或,一個或一個以上操作系統(tǒng)1341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。

上述實施例中由服務(wù)器所執(zhí)行的步驟可以基于該圖14所示的服務(wù)器結(jié)構(gòu)。

圖14是本發(fā)明實施例提供的一種爬蟲節(jié)點結(jié)構(gòu)示意圖,該爬蟲節(jié)點1400可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)1422(例如,一個或一個以上處理器)和存儲器1432,一個或一個以上存儲應(yīng)用程序1442或數(shù)據(jù)1444的存儲介質(zhì)1430(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1432和存儲介質(zhì)1430可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1430的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器1422可以設(shè)置為與存儲介質(zhì)1430通信,在爬蟲節(jié)點1400上執(zhí)行存儲介質(zhì)1430中的一系列指令操作。

爬蟲節(jié)點1400還可以包括一個或一個以上電源1426,一個或一個以上有線或無線網(wǎng)絡(luò)接口1450,一個或一個以上輸入輸出接口1458,和/或,一個或一個以上操作系統(tǒng)1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。

上述實施例中由服務(wù)器所執(zhí)行的步驟可以基于該圖14所示的服務(wù)器結(jié)構(gòu)。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。

作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1