劉曉東 林鳳德 朱文歡
摘? 要:分布式爬蟲系統(tǒng)復(fù)雜的構(gòu)建過程使其在運(yùn)行過程中出現(xiàn)任務(wù)錯(cuò)誤的時(shí)候得不到及時(shí)的反饋和提醒,從而可能導(dǎo)致對(duì)應(yīng)任務(wù)渠道的數(shù)據(jù)存在缺失;另外,對(duì)過程數(shù)據(jù)缺少必要的監(jiān)控還可能導(dǎo)致所獲數(shù)據(jù)并非我們最終所需?;赒uartz的可視化爬蟲管理系統(tǒng)可以實(shí)現(xiàn)對(duì)爬蟲任務(wù)狀態(tài)和數(shù)據(jù)進(jìn)行有效的監(jiān)控和管理,確保分布式爬蟲系統(tǒng)的穩(wěn)定、高效運(yùn)轉(zhuǎn),從而解決以上兩點(diǎn)問題。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;Quartz;監(jiān)控;管理
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):2095-2945(2020)14-0193-03
Abstract: The complex construction process of the distributed crawler system makes it unable to get timely feedback and reminder when there is a task error in the running process, which may lead to the lack of data in the corresponding task channel. In addition, the lack of necessary monitoring of the process data may also lead to the fact that the data obtained is not what we ultimately need. The visual crawler management system based on Quartz can effectively monitor and manage the crawler task status and data, and thus ensure the stable and efficient operation of the distributed crawler system, so as to solve the above two problems.
Keywords: Web crawler; Quartz; monitoring; management
1 概述
眾所周知,管理是為了提高效率和質(zhì)量。同樣的,爬蟲管理系統(tǒng)是為了能夠監(jiān)控分布式爬蟲系統(tǒng),讓分布式爬蟲系統(tǒng)數(shù)據(jù)獲取高效,保證數(shù)據(jù)的質(zhì)量。爬蟲管理系統(tǒng)是分布式爬蟲系統(tǒng)的有力補(bǔ)充,兩者是相輔相成的[1]。
實(shí)現(xiàn)爬蟲管理系統(tǒng)除了要達(dá)到監(jiān)控和管理的基本要求外,一般還要求系統(tǒng)的開發(fā)要簡單易上手。Quartz的以下特點(diǎn)可以很好的滿足構(gòu)建可視化爬蟲管理系統(tǒng)的要求:第一,功能豐富且配置簡單。Quartz的環(huán)境依賴程度低,Java的普通應(yīng)用均能使用;第二,能夠完成較為復(fù)雜的定時(shí)任務(wù),實(shí)現(xiàn)穩(wěn)定、快速的分布式定時(shí)爬蟲系統(tǒng)的構(gòu)建;第三,由于Quartz各個(gè)節(jié)點(diǎn)的狀態(tài)保存在數(shù)據(jù)庫中,在已有數(shù)據(jù)庫表狀態(tài)上開發(fā)對(duì)應(yīng)的爬蟲管理系統(tǒng),能夠很好的對(duì)分布式系統(tǒng)實(shí)現(xiàn)增刪改查的監(jiān)控和管理[2],提高系統(tǒng)的可操作性和穩(wěn)定性;第四,Quartz可以結(jié)合現(xiàn)如今非常熱門的SpringBoot,使其開發(fā)簡單易上手。
2 爬蟲系統(tǒng)的上下游
分布式爬蟲系統(tǒng)的上下游如圖1所示,爬蟲系統(tǒng)集群從網(wǎng)絡(luò)中獲取所需數(shù)據(jù),根據(jù)數(shù)據(jù)的特性進(jìn)行編碼,引入Redis來去重,去重后的數(shù)據(jù)發(fā)Kafka集群,供下游應(yīng)用;同時(shí)爬蟲管理端提供RESTful接口,監(jiān)控爬蟲集群,管理集群中的任務(wù)[3]?;赒uartz的分布式實(shí)現(xiàn)需要以數(shù)據(jù)庫作為邊界,為此選取Mysql為基礎(chǔ)數(shù)據(jù)庫[4]。
3 系統(tǒng)監(jiān)控和管理
基于Quartz開發(fā)的可視化爬蟲管理系統(tǒng)能夠?qū)崿F(xiàn)監(jiān)控和管理兩個(gè)主要的功能[5]。對(duì)于監(jiān)控會(huì)從任務(wù)和數(shù)據(jù)兩個(gè)層面來闡述;而對(duì)于管理功能主要體現(xiàn)在能夠?qū)崿F(xiàn)動(dòng)態(tài)的增刪改查。
3.1 任務(wù)監(jiān)控
根據(jù)Quartz本身維護(hù)的mysql數(shù)據(jù)庫基礎(chǔ)表并結(jié)合自己設(shè)計(jì)的t_crawler_task表和t_sched_card表可以實(shí)現(xiàn)對(duì)爬蟲任務(wù)的可視化。Quartz本身維護(hù)的mysql數(shù)據(jù)庫表具有節(jié)點(diǎn)狀態(tài)、任務(wù)狀態(tài)及抓取數(shù)據(jù)的統(tǒng)計(jì)等內(nèi)容。如圖2展示了各個(gè)節(jié)點(diǎn)的狀態(tài)。
當(dāng)要查看單節(jié)點(diǎn)中正在運(yùn)行任務(wù)信息時(shí),只需點(diǎn)擊操作就能獲取到相應(yīng)的信息。如圖3所示,圖中展示了節(jié)點(diǎn)中正在運(yùn)行的所有任務(wù)及相關(guān)信息。對(duì)于任務(wù)維度來說,任務(wù)自身帶有一些信息,在爬蟲管理端中也實(shí)現(xiàn)了對(duì)于任務(wù)的監(jiān)控。如圖4所示,在頁面中會(huì)展示該任務(wù)對(duì)應(yīng)的爬蟲規(guī)則,以及是否在集群中運(yùn)行,是否正在運(yùn)行,而且還可以通過操作來獲取更多信息,從多個(gè)維度來監(jiān)控任務(wù)??偨Y(jié)來說,從節(jié)點(diǎn)切入,然后到運(yùn)行的任務(wù),從而轉(zhuǎn)向任務(wù)層面。任務(wù)的監(jiān)控內(nèi)容包括任務(wù)的基本屬性以及任務(wù)與集群的相應(yīng)關(guān)系。如果能實(shí)時(shí)獲取任務(wù)當(dāng)前狀態(tài),并且提供相應(yīng)操作提醒,就能實(shí)現(xiàn)很好的監(jiān)控功能。
3.2 數(shù)據(jù)監(jiān)控
從整體層次來看,需要監(jiān)控的就是同種類型數(shù)據(jù)每天的數(shù)據(jù)量以及總的數(shù)據(jù)量。這里,我們只選取一些主要的渠道,每天的數(shù)據(jù)量和總的數(shù)據(jù)量,如門戶網(wǎng)站的新聞、快訊、自媒體新聞等等。在對(duì)總體數(shù)據(jù)做粗粒度監(jiān)控后就需要監(jiān)控每個(gè)渠道對(duì)應(yīng)數(shù)據(jù)。這里,每個(gè)渠道的數(shù)據(jù)取該渠道過去一周的平均值,且標(biāo)記出距離當(dāng)前時(shí)間最近一條數(shù)據(jù)的時(shí)間節(jié)點(diǎn)。當(dāng)超過三天沒有數(shù)據(jù),對(duì)應(yīng)的渠道的字體就會(huì)加粗變色,同時(shí)發(fā)郵件或短信告知管理者需要關(guān)注該渠道出現(xiàn)的問題,如圖5所示。點(diǎn)擊監(jiān)控可以了解對(duì)應(yīng)渠道在近一個(gè)月內(nèi)每天爬取的數(shù)據(jù)統(tǒng)計(jì)情況,如圖6所示(圖中的例子是看看新聞網(wǎng)渠道)。從以上的展示來看,對(duì)于數(shù)據(jù)的監(jiān)控先從整體監(jiān)控,而后轉(zhuǎn)到關(guān)注每一個(gè)渠道每天數(shù)據(jù)量的監(jiān)控,這樣既能夠很好的從面上展示整體數(shù)據(jù),也能夠從細(xì)節(jié)上監(jiān)控好每個(gè)渠道獲取的數(shù)據(jù)量。
3.3 動(dòng)態(tài)管理任務(wù)
動(dòng)態(tài)的管理任務(wù)一方面是指能夠在集群系統(tǒng)正常工作時(shí)進(jìn)行操作,另一方面是指對(duì)任務(wù)的動(dòng)態(tài)增刪改查及定制化。由于Quartz的實(shí)現(xiàn)需要對(duì)任務(wù)進(jìn)行各種參數(shù)配置,所以要實(shí)現(xiàn)動(dòng)態(tài)增加任務(wù),需要在網(wǎng)頁上把對(duì)應(yīng)任務(wù)的信息配置到數(shù)據(jù)庫中,并且通過預(yù)留的接口把任務(wù)添加到集群中;對(duì)于動(dòng)態(tài)修改各種參數(shù),需要先將該任務(wù)從集群中剔除,隨后把設(shè)置好的任務(wù)重新動(dòng)態(tài)添加到集群中;對(duì)于刪除任務(wù),需要先把任務(wù)從集群中剔除,然后再刪除配置表,這個(gè)任務(wù)才算完整刪除。
對(duì)于按賬號(hào)或關(guān)鍵字來獲取數(shù)據(jù),要實(shí)現(xiàn)動(dòng)態(tài)操作賬號(hào)或關(guān)鍵字的數(shù)據(jù),需要維護(hù)一張對(duì)應(yīng)的任務(wù)賬號(hào)表,當(dāng)需要操作賬號(hào)的時(shí)候,只需在頁面中修改對(duì)應(yīng)任務(wù)賬號(hào)表就能夠?qū)崿F(xiàn)動(dòng)態(tài)操作,而無需停止該任務(wù)。
4 結(jié)束語
本文基于Quartz架構(gòu)的特性來構(gòu)建可視化的爬蟲管理系統(tǒng),在保證分布式爬蟲系統(tǒng)正常運(yùn)行的同時(shí)還監(jiān)控了數(shù)據(jù)的可靠性。爬蟲管理系統(tǒng)是分布式爬蟲系統(tǒng)的有力補(bǔ)充,有了該系統(tǒng),對(duì)于大規(guī)模的增加爬蟲渠道、增加數(shù)據(jù)爬取的維度,只需在網(wǎng)頁上操作,方便且簡易。
參考文獻(xiàn):
[1]劉志鵬,衛(wèi)晨.基于Quartz與Spring的動(dòng)態(tài)任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(13):263-264.
[2]張康.基于Quartz的分布式定時(shí)任務(wù)調(diào)度模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].南京大學(xué),2019.
[3]梁思率,王臻,楊樹國.清華大學(xué)儀器共享平臺(tái)性能優(yōu)化實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2016,33(04):240-243.
[4]張鵬,白朝旭,王錕,等.基于Quartz的集團(tuán)化調(diào)度任務(wù)分布部署研究[J].現(xiàn)代電子技術(shù),2014(2):80-83.
[5]葉剛.基于Quartz的可視化定時(shí)任務(wù)管理方案[J].電子技術(shù)與軟件工程,2018(17):139-140.