王性國(guó) 郝文靜 董建 謝康 杜佳穎
摘要:隨著大數(shù)據(jù)應(yīng)用的深入,如何提高大數(shù)據(jù)應(yīng)用的時(shí)效性,成為大數(shù)據(jù)工作中的關(guān)鍵。針對(duì)實(shí)時(shí)海量數(shù)據(jù)預(yù)警處置的問(wèn)題,設(shè)計(jì)了一種基于流數(shù)據(jù)處理的預(yù)警系統(tǒng),系統(tǒng)包含了數(shù)據(jù)預(yù)處理、預(yù)警規(guī)則設(shè)置、預(yù)警數(shù)據(jù)識(shí)別、預(yù)警數(shù)據(jù)存儲(chǔ)等模塊,系統(tǒng)中關(guān)鍵組件包括了分布式消息系統(tǒng)Kafka、分布式流式計(jì)算框架Storm。預(yù)警規(guī)則支持關(guān)鍵詞匹配或正則表達(dá)式匹配兩種方式。系統(tǒng)可廣泛應(yīng)用于實(shí)時(shí)性要求較高的各類(lèi)預(yù)警處置系統(tǒng)。
關(guān)鍵詞:流數(shù)據(jù);預(yù)警規(guī)則;kafka;storm;預(yù)警系統(tǒng)
中圖分類(lèi)號(hào):TP302.1 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)30-0069-05
1背景
隨著信息技術(shù)的快速發(fā)展,不僅是互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)的數(shù)據(jù)正以指數(shù)級(jí)別的增長(zhǎng),其他社會(huì)各行業(yè)數(shù)據(jù)也呈現(xiàn)了高速增長(zhǎng)的趨勢(shì),因此如何快速、有效的從海量數(shù)據(jù)中提煉出更有價(jià)值的信息成為大數(shù)據(jù)應(yīng)用的關(guān)鍵。特別是在面向復(fù)雜業(yè)務(wù)需求,如智能分析、現(xiàn)場(chǎng)決策、個(gè)性化體驗(yàn)改進(jìn)等業(yè)務(wù)場(chǎng)景時(shí),對(duì)數(shù)據(jù)處理的實(shí)效性提出了更好的要求,大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息,而是在于如何通過(guò)有效的處理方式將這些大量的數(shù)據(jù)進(jìn)行有效的專(zhuān)業(yè)化處理。流式數(shù)據(jù)處理也正是基于這種場(chǎng)景誕生的,與以往數(shù)據(jù)處理方式不同,流計(jì)算是連續(xù)的、實(shí)時(shí)的、低延時(shí)的,因此流式數(shù)據(jù)處理特別適用于那些數(shù)據(jù)產(chǎn)生速度快、數(shù)據(jù)量大,同時(shí)需要對(duì)關(guān)鍵信息進(jìn)行及時(shí)報(bào)警的業(yè)務(wù)場(chǎng)景。
傳統(tǒng)的預(yù)警處置系統(tǒng)大多是對(duì)已經(jīng)存儲(chǔ)后的數(shù)據(jù)進(jìn)行離線(xiàn)計(jì)算,常見(jiàn)的如基于機(jī)器學(xué)習(xí)模型進(jìn)行預(yù)測(cè)或者是基于規(guī)則的判斷模型,此類(lèi)預(yù)警系統(tǒng)事先需要對(duì)數(shù)據(jù)進(jìn)行清洗、入庫(kù),然后在此基礎(chǔ)上進(jìn)行離線(xiàn)計(jì)算,進(jìn)而產(chǎn)生預(yù)警結(jié)果。此類(lèi)預(yù)警系統(tǒng)在預(yù)警前需要做大量的清洗、入庫(kù)、計(jì)算等相關(guān)工作,因此時(shí)效性相對(duì)較低,尤其是面向海量數(shù)時(shí),本身數(shù)據(jù)存儲(chǔ)已經(jīng)占用了大量的時(shí)間及存儲(chǔ)空間,同時(shí)基于海量數(shù)據(jù)的離線(xiàn)計(jì)算也需要消耗大量的時(shí)間。因此,在面向海量的更新速度較快的流數(shù)據(jù)時(shí),傳統(tǒng)的預(yù)警系統(tǒng)已經(jīng)無(wú)法滿(mǎn)足實(shí)際業(yè)務(wù)需要。基于此,本文設(shè)計(jì)了一種基于流式數(shù)據(jù)處理的預(yù)警系統(tǒng),系統(tǒng)以當(dāng)下最流行的Storm流計(jì)算框架、Kafka消息處理系統(tǒng)為基礎(chǔ),并結(jié)合HDFS、MongoDB分布式存儲(chǔ)系統(tǒng)進(jìn)行設(shè)計(jì)。系統(tǒng)設(shè)計(jì)的功能包括流數(shù)據(jù)的預(yù)處理、預(yù)警規(guī)則的配置、預(yù)警數(shù)據(jù)的識(shí)別、預(yù)警結(jié)果處置等功能。
2系統(tǒng)架構(gòu)
由圖1所示,系統(tǒng)邏輯框架分為四層,存儲(chǔ)層、支撐層、服務(wù)層和用戶(hù)層。
用戶(hù)層給出系統(tǒng)主要角色,角色分為三種,分別為預(yù)警規(guī)則設(shè)置人員、預(yù)警結(jié)果處置人員及系統(tǒng)管理人員。其中預(yù)警規(guī)則設(shè)置人員負(fù)責(zé)設(shè)置相關(guān)的預(yù)警規(guī)則,具體包括熟悉數(shù)據(jù)字段含義、制定具體預(yù)警對(duì)比規(guī)則、檢驗(yàn)規(guī)則是否正確、規(guī)則下發(fā)、規(guī)則維護(hù)等;預(yù)警結(jié)果處置人員負(fù)責(zé)對(duì)預(yù)警產(chǎn)生的數(shù)據(jù)進(jìn)行人工校驗(yàn),對(duì)結(jié)果數(shù)據(jù)進(jìn)行分析,具體工作包括,校驗(yàn)預(yù)警結(jié)果的正確性,并對(duì)校驗(yàn)結(jié)果進(jìn)行標(biāo)注,根據(jù)不同干的業(yè)務(wù)場(chǎng)景,對(duì)于預(yù)警正確的數(shù)據(jù)進(jìn)行處置;系統(tǒng)管理人員負(fù)責(zé)對(duì)系統(tǒng)中用戶(hù)、角色和權(quán)限資源的信息進(jìn)行維護(hù)和分配,也可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。
應(yīng)用服務(wù)層給出系統(tǒng)主要功能模塊,包括用戶(hù)系統(tǒng)管理模塊、預(yù)警規(guī)則設(shè)置模塊、人工校驗(yàn)處置模塊、規(guī)則管理模塊、預(yù)警結(jié)果查詢(xún)、預(yù)警結(jié)果綜合分析及系統(tǒng)管理等6個(gè)模塊。應(yīng)用服務(wù)層通過(guò)開(kāi)放相應(yīng)的服務(wù)接口,提供對(duì)前端功能的支持。
技術(shù)支撐層給出系統(tǒng)開(kāi)發(fā)過(guò)程中使用的相關(guān)工具,具體包括分布式、多副本的消息系統(tǒng)kafka、分布式存儲(chǔ)系統(tǒng)HDFS、分布式應(yīng)用程序協(xié)調(diào)服務(wù)框架Zookeeper、分布式流式數(shù)據(jù)處理框架storm。以上組件均按照分布式集群方式進(jìn)行部署,以及對(duì)原始數(shù)據(jù)處理應(yīng)用程序及基于流式數(shù)據(jù)的在線(xiàn)識(shí)別算法。
數(shù)據(jù)存儲(chǔ)層給出系統(tǒng)中用到的數(shù)據(jù),主要包括原始數(shù)據(jù)存儲(chǔ)、中間結(jié)果數(shù)據(jù)、用戶(hù)信息、預(yù)警規(guī)則及預(yù)警結(jié)果等存儲(chǔ)。根據(jù)不同的數(shù)據(jù)形態(tài),數(shù)據(jù)分別存儲(chǔ)在HDFS、MongoDB、KafkaAz。
3系統(tǒng)工作流程
本系統(tǒng)的邏輯流程圖如圖2所示。由圖可知,本系統(tǒng)的邏輯流程主要分為以下幾個(gè)步驟:1)數(shù)據(jù)預(yù)處理(包括原始數(shù)據(jù)處理、數(shù)據(jù)寫(xiě)人kafka);2)預(yù)警規(guī)則設(shè)置;3)storm預(yù)警數(shù)據(jù)識(shí)別(包括storm數(shù)據(jù)處理、在線(xiàn)識(shí)別);4)預(yù)警結(jié)果(包括預(yù)警結(jié)果存儲(chǔ)、預(yù)警結(jié)果處置、預(yù)警結(jié)果分析)等4個(gè)步驟。
3.1數(shù)據(jù)預(yù)處理
包括原始數(shù)據(jù)的采集,存儲(chǔ)及數(shù)據(jù)清洗等相關(guān)工作。在這里數(shù)據(jù)采集與數(shù)據(jù)的預(yù)處理進(jìn)行解耦,數(shù)據(jù)采集專(zhuān)注數(shù)據(jù)的獲取與存儲(chǔ),數(shù)據(jù)預(yù)處理專(zhuān)注對(duì)獲取的原始數(shù)據(jù)進(jìn)行清洗。通過(guò)數(shù)據(jù)預(yù)處理,將原始數(shù)據(jù)轉(zhuǎn)化為ison格式數(shù)據(jù),并寫(xiě)人到kafka消息系統(tǒng)中。
3.2預(yù)警規(guī)則設(shè)置
根據(jù)元數(shù)據(jù)格式,設(shè)置不同的預(yù)警規(guī)則,實(shí)現(xiàn)對(duì)預(yù)處理后的流式數(shù)據(jù)得在線(xiàn)識(shí)別,并將命中規(guī)則的數(shù)據(jù)進(jìn)行保存。預(yù)警規(guī)則支持基于字段的and,or等邏輯組合操作,支持自定義的正則表達(dá)式規(guī)則,支持多條子規(guī)則添加等多種預(yù)警方式。通過(guò)界面化的操作支持用戶(hù)將預(yù)警規(guī)則在線(xiàn)填寫(xiě)并進(jìn)行保存,同時(shí)提供對(duì)規(guī)則的查詢(xún)、編輯、啟動(dòng)、停止等操作。
3.3storm預(yù)警數(shù)據(jù)識(shí)別
用戶(hù)將設(shè)置好的預(yù)警規(guī)則進(jìn)行下發(fā),storm將根據(jù)收到的預(yù)警規(guī)則,進(jìn)行任務(wù)分配。任務(wù)分配完畢后,storm啟動(dòng)任務(wù)對(duì)kafka中的消息進(jìn)行實(shí)時(shí)處理,最終將命中規(guī)則數(shù)據(jù)推送給后臺(tái)進(jìn)行存儲(chǔ)。
3.4預(yù)警結(jié)果
步驟3)中命中的數(shù)據(jù)存儲(chǔ)在相應(yīng)的數(shù)據(jù)庫(kù)后,前端頁(yè)面對(duì)預(yù)警結(jié)果數(shù)據(jù)進(jìn)行展示,根據(jù)業(yè)務(wù)需要,預(yù)警結(jié)果處置人員首先判斷預(yù)警信息的真?zhèn)?,并根絕判斷結(jié)果該數(shù)據(jù)進(jìn)行標(biāo)注f正確或者錯(cuò)誤)。對(duì)于預(yù)警錯(cuò)誤的數(shù)據(jù),標(biāo)注后數(shù)據(jù)會(huì)同步給預(yù)警規(guī)則設(shè)置人員,輔助其對(duì)規(guī)則進(jìn)行優(yōu)化;對(duì)于預(yù)警正確的數(shù)據(jù),根據(jù)不同的業(yè)務(wù)場(chǎng)景,數(shù)據(jù)將分發(fā)給不同的業(yè)務(wù)人員進(jìn)行處置。同時(shí),管理人員可以根據(jù)預(yù)警結(jié)果以及可視化的展示等方式,對(duì)預(yù)警數(shù)據(jù)進(jìn)行綜合分析,以達(dá)到對(duì)全局業(yè)務(wù)的整體把控,提升管理和工作效率。
4系統(tǒng)功能設(shè)計(jì)
按照功能詳細(xì)劃分,基于流數(shù)據(jù)處理的預(yù)警系統(tǒng)的主要功能點(diǎn)包括:數(shù)據(jù)預(yù)處理、預(yù)警規(guī)則配置、預(yù)警數(shù)據(jù)識(shí)別、預(yù)警結(jié)果分析、數(shù)據(jù)存儲(chǔ)、系統(tǒng)管理等6個(gè)部分。
4.1數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理模塊主要包含了兩個(gè)部分,分別是原始數(shù)據(jù)處理和數(shù)據(jù)寫(xiě)入kafka消息系統(tǒng)。
原始數(shù)據(jù)處理環(huán)節(jié)包含了兩個(gè)環(huán)節(jié):
1)數(shù)據(jù)的實(shí)時(shí)獲取
獲取途徑包括遠(yuǎn)端服務(wù)器實(shí)時(shí)數(shù)據(jù)推送以及通過(guò)布控方式獲取所需要的特定數(shù)據(jù)。
2)數(shù)據(jù)處理寫(xiě)入kafka
Kafka數(shù)據(jù)處理流程如下圖所示:
相關(guān)定義:
Broker:Kafka集群包含一個(gè)或多個(gè)服務(wù)器,這種服務(wù)器被稱(chēng)為broker。
Topic:在向Kafka集群發(fā)布消息的過(guò)程中,每條消息都會(huì)對(duì)應(yīng)一個(gè)名為T(mén)opic的類(lèi)別。物理上屬于不同主題消息會(huì)被單獨(dú)存儲(chǔ),邏輯上同一主題消息可能存儲(chǔ)在一個(gè)或多個(gè)Broker上,但用戶(hù)只需指定消息的主題即可生產(chǎn)或使用數(shù)據(jù),而無(wú)需關(guān)心數(shù)據(jù)的存儲(chǔ)位置。
Partition:Partition是物理上的概念,每個(gè)Topic包含一個(gè)或多個(gè)Partition。
Producer:數(shù)據(jù)生產(chǎn)者,負(fù)責(zé)將消息發(fā)布到Kaika。
Consumer:消息消費(fèi)者,向Kafka broker讀取消息的客戶(hù)端。
Consumer Group:每個(gè)Consumer屬于一個(gè)特定的ConsumerGroup(可為每個(gè)Consumer指定group name,若不指定groupname則屬于默認(rèn)的group。
數(shù)據(jù)處理流程如下:
1)實(shí)時(shí)接收遠(yuǎn)端服務(wù)器推送進(jìn)來(lái)的數(shù)據(jù),或者是通過(guò)布控方式從其他系統(tǒng)獲取的特定數(shù)據(jù)并緩存至本地。
2)啟動(dòng)掃描工作線(xiàn)程,輪詢(xún)步驟1)中獲取的緩存數(shù)據(jù)資源,將緩存的數(shù)據(jù)資源以流的形式分發(fā)到N個(gè)工作目錄。
3)啟動(dòng)N個(gè)線(xiàn)程對(duì)步驟2)各個(gè)目錄的數(shù)據(jù)進(jìn)行預(yù)處理,將數(shù)據(jù)清洗處理后生成特定格式。
4)啟動(dòng)katka數(shù)據(jù)處理程序,創(chuàng)建Topic,將處理后的數(shù)據(jù)以消息的形式發(fā)布到kafka broker。Kafka集群包含多個(gè)消息代理服務(wù)器,由于每條消息都對(duì)應(yīng)相應(yīng)的Topic,因此可以使用不同的Topic來(lái)代表不同來(lái)源的數(shù)據(jù)。
5)消費(fèi)者(consumer)通過(guò)kafka broker獲取數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,一個(gè)主題的數(shù)據(jù)可以有多個(gè)消費(fèi)者(Consumer),一個(gè)消費(fèi)者也可以同時(shí)訂閱多個(gè)主題的數(shù)據(jù)。當(dāng)生產(chǎn)者發(fā)布消息到某個(gè)主題時(shí),訂閱了這個(gè)主題的消費(fèi)者都可以接收到生成者寫(xiě)入的新消息。
6)重復(fù)步驟1)一步驟5)將獲取的數(shù)據(jù)通過(guò)kafka以消息流的信息實(shí)時(shí)提供給后端的消費(fèi)者進(jìn)行計(jì)算。
4.2預(yù)警規(guī)則
預(yù)警規(guī)則模塊包含的主要功能為預(yù)警規(guī)則的配置及規(guī)則的管理,預(yù)警規(guī)則的配置主要是通過(guò)storm的任務(wù)接口進(jìn)行開(kāi)發(fā)設(shè)計(jì),將storm數(shù)據(jù)處理算法進(jìn)行接口封裝,通過(guò)與前端頁(yè)面的互動(dòng),使得用戶(hù)可以通過(guò)前端頁(yè)面將預(yù)警算法相關(guān)參數(shù)進(jìn)行配置。預(yù)警規(guī)則管理包括對(duì)規(guī)則的檢索、編輯、刪除、修改、啟用、停用等。通過(guò)前端頁(yè)面可以實(shí)時(shí)對(duì)預(yù)警任務(wù)進(jìn)行啟動(dòng)或者停止。具體功能流程,如圖5所示。
預(yù)警規(guī)則配置:每條預(yù)警規(guī)則描述了對(duì)不同類(lèi)型和來(lái)源的數(shù)據(jù)進(jìn)行預(yù)警。通過(guò)多條子規(guī)則的組合來(lái)描述一條規(guī)則,每條子則規(guī)則定義如何對(duì)一個(gè)字段進(jìn)行匹配。子規(guī)則有相應(yīng)的強(qiáng)度,強(qiáng)度為與表示數(shù)據(jù)必須匹配這條子規(guī)則,而強(qiáng)度為或的子規(guī)則只需匹配一條即可。配置預(yù)警規(guī)則時(shí),首先需要完成整條規(guī)則的設(shè)置,包括指定規(guī)則用途和數(shù)據(jù)源,命中模式和是否對(duì)外發(fā)送。之后便可通過(guò)內(nèi)容匹配,正則匹配,以及時(shí)間匹配對(duì)原始數(shù)據(jù)的各個(gè)字段制定不同的過(guò)濾子規(guī)則,同時(shí)也需為每個(gè)子規(guī)則設(shè)置相應(yīng)的匹配強(qiáng)度。
具體實(shí)現(xiàn)流程如下:
1)新建預(yù)警任務(wù),填寫(xiě)任務(wù)名稱(chēng)及任務(wù)描述;
2)選擇需要預(yù)警的數(shù)據(jù)源,在數(shù)據(jù)預(yù)處理環(huán)節(jié),數(shù)據(jù)在寫(xiě)人katka的過(guò)程中,需要對(duì)不同的類(lèi)型的數(shù)據(jù)進(jìn)行標(biāo)識(shí),增加來(lái)源標(biāo)識(shí)字段;
3)配置預(yù)警規(guī)則,首先選擇需要設(shè)置規(guī)則的字段,其次選擇預(yù)警規(guī)則類(lèi)型,類(lèi)型主要包括基于內(nèi)容匹配(and,or操作)和基于正則表達(dá)式的匹配兩種方式;
4)重復(fù)步驟3),添加子規(guī)則;
5)執(zhí)行預(yù)警規(guī)則。
4.3預(yù)警數(shù)據(jù)識(shí)別
預(yù)警數(shù)據(jù)識(shí)別模塊主要是通過(guò)Storm來(lái)實(shí)現(xiàn),在實(shí)際應(yīng)用中,Storm一般采用集群化部署,Storm集群是由一個(gè)Master節(jié)點(diǎn)和多個(gè)Work節(jié)點(diǎn)組成,其中Master節(jié)點(diǎn)也被稱(chēng)為主節(jié)點(diǎn),Work節(jié)點(diǎn)也稱(chēng)為工作節(jié)點(diǎn)。
Master節(jié)點(diǎn)運(yùn)行名為Nimbus的后臺(tái)程序,主要作用是在Storm集群內(nèi)分發(fā)代碼、同時(shí)為Work節(jié)點(diǎn)分配任務(wù)并監(jiān)控任務(wù)的執(zhí)行狀態(tài)m。
Worker節(jié)點(diǎn)運(yùn)行一個(gè)名為Supervisor的守護(hù)程序,它負(fù)責(zé)監(jiān)視主節(jié)點(diǎn)分配的任務(wù),即根據(jù)Nimbus分配的任務(wù)確定是啟動(dòng)還是停止工作進(jìn)程。一個(gè)Worker節(jié)點(diǎn)上可以同時(shí)運(yùn)行多個(gè)Worker進(jìn)程。
Storm使用Zookeeper來(lái)作為分布式協(xié)調(diào)組件,同時(shí)作為元數(shù)據(jù)存儲(chǔ),負(fù)責(zé)Nimbus和多個(gè)Supervisor之間的所有協(xié)調(diào)工作。
預(yù)警數(shù)據(jù)識(shí)別具體實(shí)現(xiàn)流程如下:
1)提交Topology,即用戶(hù)提交3.2節(jié)中設(shè)置的預(yù)警規(guī)則至Storm的Nimbus節(jié)點(diǎn);
2)Nimbus節(jié)點(diǎn)將步驟1)中的任務(wù)進(jìn)行切分,分成若干個(gè)Task,并將這些Task分配到不同的Supervisor,任務(wù)分配完畢后,將分配信息存儲(chǔ)在Zookeeper中;
3)Supervisor節(jié)點(diǎn)讀取Zookeeper上的任務(wù)信息,認(rèn)領(lǐng)各自的任務(wù),并將任務(wù)分配給所屬的Task進(jìn)行執(zhí)行;
4)將步驟3)中的各任務(wù)執(zhí)行的結(jié)果存儲(chǔ)在數(shù)據(jù)庫(kù)中。
4.4預(yù)警結(jié)果
預(yù)警結(jié)果模塊主要提供了對(duì)預(yù)警結(jié)果的查詢(xún)、處置及分析相關(guān)的功能。具體功能如下:
1)檢索功能
在檢索頁(yè)面支持通過(guò)以業(yè)務(wù)方向方向、關(guān)鍵詞、時(shí)間等維度對(duì)結(jié)果進(jìn)行查詢(xún),并且對(duì)于錯(cuò)誤信息提供編輯修改及刪除功能,支持?jǐn)?shù)據(jù)的批量導(dǎo)出、批量刪除等操作。
2)預(yù)警結(jié)果處置
對(duì)于預(yù)警結(jié)果數(shù)據(jù)用戶(hù)可以在此進(jìn)行人工校驗(yàn),校驗(yàn)正確的數(shù)據(jù),標(biāo)記為“正確”并自動(dòng)保存,對(duì)于預(yù)警識(shí)別錯(cuò)誤數(shù)據(jù),標(biāo)記為“錯(cuò)誤”并自動(dòng)保存。對(duì)于標(biāo)記“正確”的數(shù)據(jù),可以根據(jù)報(bào)警信息進(jìn)行處置,對(duì)于識(shí)別錯(cuò)誤信息,反饋給規(guī)則設(shè)置人員,用來(lái)提升識(shí)別方法的準(zhǔn)確度。如在互聯(lián)網(wǎng)違法網(wǎng)站預(yù)警識(shí)別中,可以將識(shí)別出來(lái)的違法網(wǎng)站及時(shí)通報(bào)并報(bào)相關(guān)機(jī)構(gòu)進(jìn)行及時(shí)處置。
3)預(yù)警結(jié)果分析
預(yù)警結(jié)果分析模塊提供對(duì)預(yù)警數(shù)據(jù)可視化展示、統(tǒng)計(jì)分析等相關(guān)功能。通過(guò)統(tǒng)計(jì)分析,可以對(duì)高發(fā)的預(yù)警信息進(jìn)行總結(jié),輔助相關(guān)工作人員進(jìn)行問(wèn)題的發(fā)現(xiàn)及整改。如在互聯(lián)網(wǎng)違法網(wǎng)站識(shí)別中,可以通過(guò)可視化的方式展示不同預(yù)警規(guī)則識(shí)別的準(zhǔn)確率,幫助規(guī)則設(shè)置人員優(yōu)化預(yù)警規(guī)則;通過(guò)預(yù)警結(jié)果的分析,可以對(duì)不同的類(lèi)型的違法網(wǎng)站數(shù)量、活躍度進(jìn)行整體摸排,對(duì)違法網(wǎng)站的用戶(hù)訪問(wèn)的地域、時(shí)間等進(jìn)行分析輔助相關(guān)機(jī)關(guān)對(duì)違法信息進(jìn)行處置。
4.5數(shù)據(jù)存儲(chǔ)設(shè)計(jì)
結(jié)構(gòu)化存儲(chǔ)的數(shù)據(jù)包括:原始數(shù)據(jù)、kafka流數(shù)據(jù)、用戶(hù)信息、預(yù)警規(guī)則信息及預(yù)警結(jié)果。其中原始數(shù)據(jù)以文件的形式存儲(chǔ)在磁盤(pán)上,通過(guò)程序?qū)崿F(xiàn)自動(dòng)處理。
1)預(yù)警結(jié)果存儲(chǔ)
通過(guò)預(yù)警規(guī)則命中的數(shù)據(jù),將通過(guò)storm實(shí)寫(xiě)入到后臺(tái)數(shù)據(jù)庫(kù),預(yù)警結(jié)果數(shù)據(jù)采用mongdb進(jìn)行存儲(chǔ)
預(yù)警結(jié)果是指通過(guò)預(yù)警規(guī)則在流式數(shù)據(jù)中命中的數(shù)據(jù),以違法網(wǎng)站預(yù)警結(jié)果為例,數(shù)據(jù)庫(kù)的字段設(shè)置如表1所示:
2)用戶(hù)信息
用戶(hù)信息用戶(hù)存儲(chǔ)用戶(hù)基本信息,數(shù)據(jù)存儲(chǔ)在mongdb中,字段設(shè)置如表2所示。
3)預(yù)警規(guī)則
預(yù)警規(guī)則表用于存儲(chǔ)預(yù)警規(guī)則,數(shù)據(jù)存儲(chǔ)在mongdb數(shù)據(jù)庫(kù)中,字段設(shè)置如表3所示:
4)流數(shù)據(jù)存儲(chǔ)
流數(shù)據(jù)以消息的形式存儲(chǔ)在kafka中,Kafka中的消息是以主題(Topic)為基本單位進(jìn)行組織的,各個(gè)主題之間相互獨(dú)立。在這里主題只是一個(gè)邏輯上的抽象概念,而在實(shí)際數(shù)據(jù)文件的存儲(chǔ)中,Kafka中的消息存儲(chǔ)在物理上是以一個(gè)或多個(gè)分區(qū)(Partition)構(gòu)成,每個(gè)分區(qū)對(duì)應(yīng)本地磁盤(pán)上的一個(gè)文件夾,分區(qū)數(shù)量可以在創(chuàng)建主題時(shí)指定,也可以在創(chuàng)建Topic后進(jìn)行修改。
4.6系統(tǒng)管理設(shè)計(jì)
瀏覽器客戶(hù)端通過(guò)Chrome瀏覽器對(duì)系統(tǒng)進(jìn)行訪問(wèn),具有權(quán)限的用戶(hù)可以進(jìn)行系統(tǒng)管理的操作,在該模塊中,操作一方面可以進(jìn)行用戶(hù)管理、權(quán)限分配管理,三個(gè)功能管理模塊與數(shù)據(jù)庫(kù)交互完成相應(yīng)操作;另一方面還可以進(jìn)行數(shù)據(jù)備份操作,可以手動(dòng)備份數(shù)據(jù),可以設(shè)置自動(dòng)備份,也可以進(jìn)行數(shù)據(jù)庫(kù)的清除。
系統(tǒng)管理模塊中,首先系統(tǒng)操作人員登錄到系統(tǒng),然后選擇操作類(lèi)型,包括三種,分別為用戶(hù)管理、權(quán)限分配管理和數(shù)據(jù)庫(kù)備份操作,在用戶(hù)管理中可以進(jìn)行用戶(hù)的添加、編輯和刪除操作;在權(quán)限分配管理中,可以為一個(gè)角色分配其相應(yīng)的功能頁(yè)面;數(shù)據(jù)庫(kù)備份中有三種備份操作可以執(zhí)行,分別為數(shù)據(jù)手動(dòng)備份、自動(dòng)備份和數(shù)據(jù)庫(kù)清除操作。
5結(jié)束語(yǔ)
隨著大數(shù)據(jù)深入發(fā)展,數(shù)據(jù)的維度更多,來(lái)源更廣,數(shù)據(jù)產(chǎn)生的速度越來(lái)越快,因此如何更好地利用大數(shù)據(jù),提高大數(shù)據(jù)的時(shí)效性,成為大數(shù)據(jù)工作中重中之中。本文結(jié)合實(shí)際應(yīng)用情況,提出了一種基于流式數(shù)據(jù)預(yù)警系統(tǒng)的設(shè)計(jì)方案,系統(tǒng)設(shè)計(jì)之初主要是應(yīng)用于公安部門(mén)對(duì)用戶(hù)訪問(wèn)違法網(wǎng)站的實(shí)時(shí)報(bào)警處置,系統(tǒng)統(tǒng)還可廣泛應(yīng)用于對(duì)時(shí)效性要求較高的業(yè)務(wù)場(chǎng)景,如應(yīng)急處置系統(tǒng)、公安重點(diǎn)人員布控、安防等領(lǐng)域。在未來(lái)的研究中,將進(jìn)一步加深對(duì)大數(shù)據(jù)流數(shù)據(jù)在預(yù)警處置中的理論及應(yīng)用研究,并將結(jié)合具體業(yè)務(wù)場(chǎng)景,將本設(shè)計(jì)應(yīng)用到實(shí)際業(yè)務(wù)中。