本發(fā)明涉及搜索引擎技術(shù)領(lǐng)域,具體地說是涉及一種負(fù)載均衡的分布式大數(shù)據(jù)爬蟲系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,網(wǎng)頁信息正以指數(shù)級(jí)的速度高速膨脹,人們對(duì)于能夠從互聯(lián)網(wǎng)上準(zhǔn)確且高效地查找出自己想要的信息提出了越來越高的要求。網(wǎng)絡(luò)爬蟲作為搜索引擎的核心組件之一,負(fù)責(zé)采集互聯(lián)網(wǎng)上的信息。而今隨著大數(shù)據(jù)時(shí)代的來臨,信息爆炸式地增長(zhǎng),對(duì)網(wǎng)絡(luò)爬蟲的性能提出更高的要求。目前,單節(jié)點(diǎn)爬行器不論從cpu的運(yùn)算能力,還是從硬盤的i/o速率及存儲(chǔ)容量,都難以應(yīng)對(duì)大規(guī)模數(shù)據(jù)量的采集。因此,采用分布式處理技術(shù)的網(wǎng)絡(luò)爬蟲系統(tǒng)成為提升網(wǎng)絡(luò)數(shù)據(jù)采集能力的必然選擇。
目前,分布式爬蟲系統(tǒng)在互聯(lián)網(wǎng)信息采集中廣泛應(yīng)用,但是從負(fù)載均衡設(shè)計(jì)的角度來看,均存在不足,因而造成了系統(tǒng)性能的瓶頸。負(fù)載均衡問題本身與系統(tǒng)自身和實(shí)際需求緊密關(guān)聯(lián),沒有統(tǒng)一的標(biāo)準(zhǔn),因此對(duì)于不同的分布式爬蟲系統(tǒng)而言,需根據(jù)實(shí)際的需求情況設(shè)計(jì)不同的負(fù)載均衡策略。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種負(fù)載均衡的分布式大數(shù)據(jù)爬蟲系統(tǒng),該系統(tǒng)通過管理者對(duì)網(wǎng)絡(luò)爬蟲集群進(jìn)行統(tǒng)一管理和分布式部署,能夠靈活管理爬蟲任務(wù),實(shí)現(xiàn)爬蟲集群的負(fù)載均衡,使得爬蟲工作高效、穩(wěn)定。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為,一種負(fù)載均衡的分布式大數(shù)據(jù)爬蟲系統(tǒng),包括用戶管理端、服務(wù)器端、爬蟲集群端和數(shù)據(jù)存儲(chǔ)端,所述用戶管理端是爬蟲系統(tǒng)對(duì)管理者提供的web接口,管理者通過用戶管理端連接并訪問web平臺(tái),所述服務(wù)器端通過服務(wù)接口連接用戶管理端,在服務(wù)器端設(shè)有爬蟲負(fù)載均衡管理模塊、爬蟲任務(wù)調(diào)度模塊、爬蟲性能監(jiān)控模塊,所述爬蟲集群端設(shè)有若干個(gè)彼此獨(dú)立的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn),所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)均通過爬行器接口連接服務(wù)器端,設(shè)置在數(shù)據(jù)存儲(chǔ)端的存儲(chǔ)接口通過數(shù)據(jù)總線連接爬蟲集群端,數(shù)據(jù)存儲(chǔ)端設(shè)有用于存儲(chǔ)抓取結(jié)果文件的數(shù)據(jù)庫系統(tǒng)。
作為本發(fā)明的一種改進(jìn),所述用戶管理端設(shè)有爬蟲的任務(wù)配置文件,服務(wù)器端設(shè)有爬蟲健康狀態(tài)列表,所述任務(wù)配置文件中包含的信息包括網(wǎng)絡(luò)爬蟲id、種子url(即待抓取網(wǎng)頁的入口)、域名和下載地址,所述爬蟲健康狀態(tài)列表記載的信息包括每個(gè)網(wǎng)絡(luò)爬蟲所在服務(wù)器的磁盤容量、網(wǎng)絡(luò)爬蟲執(zhí)行一輪任務(wù)的運(yùn)行速度。
作為本發(fā)明的一種改進(jìn),所述爬蟲負(fù)載均衡管理模塊與爬蟲任務(wù)調(diào)度模塊和爬蟲性能監(jiān)控模塊相連,所述爬蟲負(fù)載均衡管理模塊設(shè)有爬蟲負(fù)載輕重判別模塊,爬蟲性能監(jiān)控模塊接收所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的心跳信息和運(yùn)行狀態(tài)信息,并根據(jù)運(yùn)行狀態(tài)信息定時(shí)更新爬蟲健康狀態(tài)列表,爬蟲任務(wù)調(diào)度模塊記錄所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的任務(wù)采集信息。
作為本發(fā)明的一種改進(jìn),所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)設(shè)有任務(wù)管理模塊、網(wǎng)頁抓取模塊、網(wǎng)頁分析模塊和心跳信息上報(bào)模塊,任務(wù)管理模塊與網(wǎng)頁抓取模塊和網(wǎng)頁分析模塊相連,網(wǎng)頁抓取模塊與網(wǎng)頁分析模塊相連,心跳信息上報(bào)模塊與任務(wù)管理模塊相連,任務(wù)管理模塊與爬蟲任務(wù)調(diào)度模塊相連,心跳信息上報(bào)模塊與爬蟲性能監(jiān)控模塊相連,其中網(wǎng)頁抓取模塊采用httpclient開源組件抓取網(wǎng)頁,網(wǎng)頁分析模塊采用htmlparser開源組件解析網(wǎng)頁內(nèi)容并生成抓取結(jié)果文件存儲(chǔ)在數(shù)據(jù)庫系統(tǒng)。
作為本發(fā)明的一種改進(jìn),所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的心跳信息和任務(wù)采集信息均包括磁盤剩余容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)、平均運(yùn)行時(shí)長(zhǎng)、采集的數(shù)據(jù)數(shù)量以及啟動(dòng)后第一次上報(bào)或任務(wù)有變動(dòng)時(shí)上報(bào)的任務(wù)信息,所述運(yùn)行狀態(tài)信息包括磁盤剩余容量、爬蟲運(yùn)行速度。
作為本發(fā)明的一種改進(jìn),所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)抓取并解析網(wǎng)頁內(nèi)容所產(chǎn)生的抓取結(jié)果文件的格式為txt格式和/或xml格式。
上述分布式大數(shù)據(jù)爬蟲系統(tǒng)所采用的動(dòng)態(tài)負(fù)載均衡的方法,管理者在用戶管理端通過服務(wù)器端向爬蟲集群端上的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)下發(fā)或回收任務(wù),同時(shí)接收所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的心跳信息、運(yùn)行狀態(tài)信息,記錄所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)采集信息,對(duì)所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)進(jìn)行實(shí)時(shí)性能監(jiān)控;在接收到web平臺(tái)下發(fā)的新任務(wù)時(shí),根據(jù)心跳信息和運(yùn)行狀態(tài)信息檢查整個(gè)爬蟲集群端上每一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài),挑選最優(yōu)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行新任務(wù),同時(shí)根據(jù)任務(wù)采集信息和爬蟲負(fù)載輕重判別模塊的判別結(jié)果,重啟負(fù)載較輕的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)程序或停止負(fù)載較重的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)程序,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的負(fù)載均衡。
作為本發(fā)明的一種改進(jìn),管理者通過用戶管理端接收到web平臺(tái)下發(fā)的新任務(wù)時(shí),一方面管理者可直接在用戶管理端將新任務(wù)寫入具體某個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)配置文件中,另一方面管理者可根據(jù)服務(wù)器端設(shè)置的爬蟲健康狀態(tài)列表所記錄的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài)信息,從中挑選最優(yōu)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)并對(duì)應(yīng)更改該網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)配置文件,對(duì)應(yīng)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)接收到新任務(wù)后,自動(dòng)加載該任務(wù),而無需管理者重啟爬蟲程序。
作為本發(fā)明的一種改進(jìn),web平臺(tái)根據(jù)不同的網(wǎng)頁結(jié)構(gòu)和主題內(nèi)容,對(duì)待爬取的目標(biāo)內(nèi)容進(jìn)行細(xì)粒度切分,并根據(jù)切分后的內(nèi)容分別建立各爬取任務(wù),所述切分后的內(nèi)容之間無關(guān)聯(lián)性,各爬取任務(wù)之間也無關(guān)聯(lián)性,每一爬取任務(wù)通過一獨(dú)立線程完成,所述爬蟲任務(wù)調(diào)度模塊根據(jù)心跳信息和運(yùn)行狀態(tài)信息可將各爬取任務(wù)分配給同一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行,也可將各爬取任務(wù)分配給不同的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行。
作為本發(fā)明的一種改進(jìn),挑選最優(yōu)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的具體實(shí)現(xiàn)方法是:比較每個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的剩余磁盤容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng),從中選取剩余磁盤容量大、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng)差別小的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)作為最優(yōu)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn);檢查整個(gè)爬蟲集群端上每一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài)的具體實(shí)現(xiàn)方法是:設(shè)定剩余磁盤容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng)分別作為健康狀態(tài)指標(biāo),并在同一種健康狀態(tài)指標(biāo)下,比較心跳信息中的非健康狀態(tài)指標(biāo)的信息。
相對(duì)于現(xiàn)有技術(shù),本發(fā)明提出的是一種可持續(xù)抓取網(wǎng)頁、可實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡的分布式大數(shù)據(jù)爬蟲系統(tǒng),能夠持續(xù)爬取目標(biāo)網(wǎng)頁的更新內(nèi)容,定時(shí)爬取目標(biāo)頁面,并將主題內(nèi)容采集保存至數(shù)據(jù)存儲(chǔ)端的數(shù)據(jù)庫系統(tǒng),管理者在用戶管理端通過服務(wù)器端向爬蟲集群端上的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)下發(fā)或回收任務(wù),同時(shí)接收所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的心跳信息、運(yùn)行狀態(tài)信息,記錄所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)采集信息,對(duì)所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)進(jìn)行實(shí)時(shí)性能監(jiān)控;有效實(shí)現(xiàn)對(duì)爬蟲集群端上所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的分布式部署和統(tǒng)一管理,任務(wù)分配方式靈活,可對(duì)爬蟲集群端實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,從而確保各網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)爬取工作高效、穩(wěn)定。
附圖說明
圖1為本發(fā)明的分布式大數(shù)據(jù)爬蟲系統(tǒng)結(jié)構(gòu)示意圖。
圖2為本發(fā)明的流程示意圖。
具體實(shí)施方式
為了加深對(duì)本發(fā)明的理解和認(rèn)識(shí),下面結(jié)合附圖對(duì)本發(fā)明內(nèi)容作進(jìn)一步描述和介紹。
隨著計(jì)算機(jī)普及,以及網(wǎng)絡(luò)的飛速發(fā)展,越來越多的組織或個(gè)人在網(wǎng)絡(luò)上網(wǎng)體上發(fā)表輿論信息。因此,需要能夠爬取并解析網(wǎng)頁的工具將這些信息下載保存下來以供分析監(jiān)控使用。
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本;分布式網(wǎng)絡(luò)爬蟲包含多個(gè)爬蟲,每個(gè)爬蟲需要完成的任務(wù)與單個(gè)的爬行器類似,它們都是從互聯(lián)網(wǎng)上下載網(wǎng)頁,并把解析后的內(nèi)容保存到本地的磁盤。
如圖1所示為一種持續(xù)抓取網(wǎng)頁并下載網(wǎng)絡(luò)言論的可實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡的分布式大數(shù)據(jù)爬蟲系統(tǒng),包括用戶管理端、服務(wù)器端、爬蟲集群端和數(shù)據(jù)存儲(chǔ)端,所述用戶管理端是爬蟲系統(tǒng)對(duì)管理者提供的web接口,管理者通過用戶管理端連接并訪問web平臺(tái),所述服務(wù)器端通過服務(wù)接口連接用戶管理端,在服務(wù)器端設(shè)有爬蟲負(fù)載均衡管理模塊、爬蟲任務(wù)調(diào)度模塊、爬蟲性能監(jiān)控模塊,所述爬蟲集群端設(shè)有若干個(gè)彼此獨(dú)立的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn),所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)均通過爬行器接口連接服務(wù)器端,設(shè)置在數(shù)據(jù)存儲(chǔ)端的存儲(chǔ)接口通過數(shù)據(jù)總線連接爬蟲集群端,數(shù)據(jù)存儲(chǔ)端設(shè)有用于存儲(chǔ)抓取結(jié)果文件的數(shù)據(jù)庫系統(tǒng)。所述的數(shù)據(jù)庫系統(tǒng)可以為本地磁盤。
其中,所述用戶管理端設(shè)有爬蟲的任務(wù)配置文件,服務(wù)器端設(shè)有爬蟲健康狀態(tài)列表。所述任務(wù)配置文件中包含的信息包括網(wǎng)絡(luò)爬蟲id、種子url(即待抓取網(wǎng)頁的入口)、域名和下載地址,其中,網(wǎng)絡(luò)爬蟲id為網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的唯一標(biāo)識(shí),種子url是網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行爬取任務(wù)的關(guān)鍵信息,域名和下載地址均用于校驗(yàn)種子url的正確與否。爬蟲的任務(wù)配置文件是對(duì)爬蟲集群端所有的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)進(jìn)行任務(wù)分配的重要文件,所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的爬取任務(wù)均通過任務(wù)配置文件進(jìn)行調(diào)整。所述爬蟲健康狀態(tài)列表記載的信息包括每個(gè)網(wǎng)絡(luò)爬蟲所在服務(wù)器的磁盤容量、網(wǎng)絡(luò)爬蟲執(zhí)行一輪任務(wù)的運(yùn)行速度。通過比較爬蟲健康狀態(tài)列表中所記載的信息可獲得爬蟲集群端所有的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài),從而為網(wǎng)絡(luò)爬蟲的負(fù)載均衡控制提供數(shù)據(jù)依據(jù)。
所述爬蟲負(fù)載均衡管理模塊與爬蟲任務(wù)調(diào)度模塊和爬蟲性能監(jiān)控模塊相連,爬蟲性能監(jiān)控模塊接收所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的心跳信息和運(yùn)行狀態(tài)信息,并根據(jù)運(yùn)行狀態(tài)信息定時(shí)更新爬蟲健康狀態(tài)列表。因此,爬蟲性能監(jiān)控模塊是爬蟲負(fù)載均衡管理模塊與爬蟲任務(wù)調(diào)度模塊分別進(jìn)行負(fù)載均衡管理與爬取任務(wù)調(diào)度的重要依據(jù)。所述爬蟲負(fù)載均衡管理模塊設(shè)有爬蟲負(fù)載輕重判別模塊,用于對(duì)每個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的負(fù)載輕重進(jìn)行判別。爬蟲任務(wù)調(diào)度模塊記錄所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的任務(wù)采集信息,該模塊根據(jù)記錄的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)采集信息對(duì)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的爬取任務(wù)進(jìn)行實(shí)時(shí)監(jiān)控并在必要時(shí)對(duì)某個(gè)或某些網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的爬取任務(wù)進(jìn)行調(diào)整。
所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)設(shè)有任務(wù)管理模塊、網(wǎng)頁抓取模塊、網(wǎng)頁分析模塊和心跳信息上報(bào)模塊,任務(wù)管理模塊與網(wǎng)頁抓取模塊和網(wǎng)頁分析模塊相連,為網(wǎng)頁抓取模塊和網(wǎng)頁分析模塊提供任務(wù)觸發(fā)信息,網(wǎng)頁抓取模塊與網(wǎng)頁分析模塊相連,通過網(wǎng)頁抓取模塊連續(xù)抓取網(wǎng)頁,然后提供給網(wǎng)頁分析模塊對(duì)抓取的網(wǎng)頁內(nèi)容進(jìn)行解析,心跳信息上報(bào)模塊與任務(wù)管理模塊相連,為任務(wù)管理模塊提供參考依據(jù),任務(wù)管理模塊與爬蟲任務(wù)調(diào)度模塊相連,從而能夠?qū)崟r(shí)接收爬蟲任務(wù)調(diào)度模塊所下達(dá)的任務(wù)調(diào)整指令并對(duì)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)進(jìn)行爬取任務(wù)的調(diào)整管理,心跳信息上報(bào)模塊與爬蟲性能監(jiān)控模塊相連,向爬蟲性能監(jiān)控模塊提供該網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的心跳信息和運(yùn)行狀態(tài)信息。其中網(wǎng)頁抓取模塊采用httpclient開源組件抓取網(wǎng)頁,網(wǎng)頁分析模塊采用htmlparser開源組件解析網(wǎng)頁內(nèi)容并生成抓取結(jié)果文件存儲(chǔ)在數(shù)據(jù)庫系統(tǒng)。
httpclient是apachejakartacommon下的子項(xiàng)目,用來提供高效的、最新的、功能豐富的支持http協(xié)議的客戶端編程工具包,并且它支持http協(xié)議最新的版本和建議。httpclient開源組件的使用方法如下:
1.創(chuàng)建httpclient對(duì)象。
2.創(chuàng)建請(qǐng)求方法的實(shí)例,并指定請(qǐng)求種子url。
3.調(diào)用httpclient對(duì)象的execute(httpurirequestrequest)發(fā)送請(qǐng)求,該方法返回一個(gè)httpresponse。
4.調(diào)用httpresponse相關(guān)方法獲取相應(yīng)內(nèi)容。
5.釋放連接。
htmlparser開源組件提供方便、簡(jiǎn)潔的處理html文件的方法,它將html頁面中的標(biāo)簽按樹形結(jié)構(gòu)解析成一個(gè)一個(gè)結(jié)點(diǎn),一種類型的結(jié)點(diǎn)對(duì)應(yīng)一個(gè)類,通過調(diào)用其方法可以輕松地訪問標(biāo)簽中的內(nèi)容。對(duì)于基于關(guān)鍵詞匹配的主題網(wǎng)絡(luò)爬蟲,htmlparser開源組件的功能是將與主題相關(guān)的網(wǎng)頁的相關(guān)信息進(jìn)行解析后得到與主題關(guān)鍵詞相匹配的內(nèi)容存儲(chǔ)到數(shù)據(jù)庫系統(tǒng)中。
所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的心跳信息和任務(wù)采集信息均包括磁盤剩余容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)、平均運(yùn)行時(shí)長(zhǎng)、采集的數(shù)據(jù)數(shù)量以及啟動(dòng)后第一次上報(bào)或任務(wù)有變動(dòng)時(shí)上報(bào)的任務(wù)信息,所述運(yùn)行狀態(tài)信息包括磁盤剩余容量、爬蟲運(yùn)行速度。
所述網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)抓取并解析網(wǎng)頁內(nèi)容所產(chǎn)生的抓取結(jié)果文件的格式為txt格式和/或xml格式。
如圖2所示,上述的分布式大數(shù)據(jù)爬蟲系統(tǒng)所采用的動(dòng)態(tài)負(fù)載均衡的方法,具體為:管理者在用戶管理端通過服務(wù)器端向爬蟲集群端上的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)下發(fā)或回收任務(wù),重啟或停止網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)程序,同時(shí)接收所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)上報(bào)的心跳信息、運(yùn)行狀態(tài)信息,記錄所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)采集信息,對(duì)所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)進(jìn)行實(shí)時(shí)性能監(jiān)控。在接收到web平臺(tái)下發(fā)的新任務(wù)時(shí),根據(jù)心跳信息和運(yùn)行狀態(tài)信息檢查整個(gè)爬蟲集群端上每一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài),挑選最優(yōu)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行新任務(wù),同時(shí)根據(jù)任務(wù)采集信息和爬蟲負(fù)載輕重判別模塊的判別結(jié)果,重啟負(fù)載較輕的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)程序或停止負(fù)載較重的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)程序,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的負(fù)載均衡。具體是管理者遠(yuǎn)程修改爬蟲的任務(wù)配置文件,將任務(wù)添加進(jìn)負(fù)載較輕的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn),而將負(fù)載較重的爬取任務(wù)從任務(wù)配置文件中刪除,然后將該爬取任務(wù)下發(fā)給負(fù)載較輕的其他網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)。
其中,管理者通過用戶管理端接收到web平臺(tái)下發(fā)的新任務(wù)時(shí),一方面管理者可直接在用戶管理端將新任務(wù)寫入具體某個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)配置文件中,另一方面管理者可根據(jù)服務(wù)器端設(shè)置的爬蟲健康狀態(tài)列表所記錄的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài)信息,從中挑選最優(yōu)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)并對(duì)應(yīng)更改該網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的任務(wù)配置文件,對(duì)應(yīng)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)接收到新任務(wù)后,自動(dòng)加載該任務(wù),而無需管理者重啟爬蟲程序。
web平臺(tái)根據(jù)不同的網(wǎng)頁結(jié)構(gòu)和主題內(nèi)容,對(duì)待爬取的目標(biāo)內(nèi)容進(jìn)行細(xì)粒度切分,并根據(jù)切分后的內(nèi)容分別建立各爬取任務(wù),所述切分后的內(nèi)容之間無關(guān)聯(lián)性,各爬取任務(wù)之間也無關(guān)聯(lián)性,每一爬取任務(wù)通過一獨(dú)立線程完成,所述爬蟲任務(wù)調(diào)度模塊根據(jù)心跳信息和運(yùn)行狀態(tài)信息可將各爬取任務(wù)分配給同一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行,也可將各爬取任務(wù)分配給不同的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)執(zhí)行。不同的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)相互之間無直接聯(lián)系。當(dāng)需要爬取的主題內(nèi)容包括多個(gè)類型相同的網(wǎng)頁時(shí),web平臺(tái)將多個(gè)類型相同的網(wǎng)頁切分為單個(gè)網(wǎng)頁并建立對(duì)應(yīng)的爬取任務(wù),當(dāng)單個(gè)網(wǎng)頁包含多個(gè)內(nèi)容不同的版塊時(shí),web平臺(tái)將單個(gè)網(wǎng)頁切分為不同的版塊并建立對(duì)應(yīng)的爬取任務(wù),而當(dāng)單一版塊中包含多個(gè)頁面時(shí),web平臺(tái)將單一版塊切分為多個(gè)頁面并建立對(duì)應(yīng)的爬取任務(wù)。
挑選最優(yōu)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的具體實(shí)現(xiàn)方法是:比較每個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的剩余磁盤容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng),從中選取剩余磁盤容量大、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng)差別小的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)作為最優(yōu)的網(wǎng)絡(luò)爬蟲節(jié)點(diǎn);檢查整個(gè)爬蟲集群端上每一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的健康狀態(tài)的具體實(shí)現(xiàn)方法是:設(shè)定剩余磁盤容量、本次爬蟲運(yùn)行時(shí)長(zhǎng)和平均時(shí)長(zhǎng)分別作為健康狀態(tài)指標(biāo),并在同一種健康狀態(tài)指標(biāo)下,比較心跳信息中的非健康狀態(tài)指標(biāo)的信息。
本發(fā)明所提出的分布式大數(shù)據(jù)爬蟲系統(tǒng),能夠持續(xù)爬取目標(biāo)網(wǎng)頁的更新內(nèi)容,定時(shí)爬取目標(biāo)網(wǎng)頁,將新發(fā)表的言論采集保存至本地磁盤,實(shí)現(xiàn)對(duì)言論的持續(xù)采集;本系統(tǒng)對(duì)爬蟲集群端的所有網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)實(shí)行分布式部署及統(tǒng)一管理,爬取任務(wù)分配靈活且能夠?qū)崿F(xiàn)爬蟲集群的負(fù)載均衡,各網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的工作高效穩(wěn)定。另外,網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的網(wǎng)頁抓取模塊、網(wǎng)頁分析模塊相互獨(dú)立,網(wǎng)頁抓取模塊只負(fù)責(zé)抓取目標(biāo)網(wǎng)頁,網(wǎng)頁分析模塊只負(fù)責(zé)分析接收到的目標(biāo)網(wǎng)頁內(nèi)容而不關(guān)心內(nèi)容的來源,因此,針對(duì)一個(gè)網(wǎng)絡(luò)爬蟲節(jié)點(diǎn)的網(wǎng)頁抓取模塊、網(wǎng)頁分析模塊可根據(jù)實(shí)際任務(wù)需求進(jìn)行靈活擴(kuò)展。
需要說明的是上述實(shí)施例,并非用來限定本發(fā)明的保護(hù)范圍,在上述技術(shù)方案的基礎(chǔ)上所作出的等同變換或替代均落入本發(fā)明權(quán)利要求所保護(hù)的范圍。
本發(fā)明方案所公開的技術(shù)手段不僅限于上述實(shí)施方式所公開的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍。