郭淑嫻, 楊金民
(湖南大學(xué) 信息科學(xué)與工程學(xué)院, 長沙 410082)
流式計算模型在廢棄話單處理中的應(yīng)用①
郭淑嫻, 楊金民
(湖南大學(xué) 信息科學(xué)與工程學(xué)院, 長沙 410082)
對廢棄話單進(jìn)行有效管理, 是保障通信系統(tǒng)計費可靠性的重要內(nèi)容之一, 然而對于廢棄話單數(shù)據(jù)所呈現(xiàn)出的實時性、突發(fā)性等特征, 現(xiàn)有的大數(shù)據(jù)處理模式并不能很好地應(yīng)對. 本文采用動態(tài)路由策略實現(xiàn)計算系統(tǒng)運(yùn)行時的輕量級伸縮, 應(yīng)對廢棄話單實時性和突發(fā)性帶來的挑戰(zhàn). 在此基礎(chǔ)之上, 本文給出了一種基于流式計算模型的廢棄話單處理系統(tǒng)的實現(xiàn), 并通過實際數(shù)據(jù)驗證了本文提出的動態(tài)路由策略在應(yīng)對數(shù)據(jù)突發(fā)方面的有效性.
廢棄話單; 流式計算模型; 實時性; 突發(fā)性; 動態(tài)路由
通信行業(yè)競爭的加劇, 導(dǎo)致競爭領(lǐng)域不斷由外部市場領(lǐng)域向內(nèi)部質(zhì)量管理領(lǐng)域延伸, 話單計費可靠性目前已成為通信運(yùn)營商質(zhì)量管控的核心, 而對BOSS計費系統(tǒng)所產(chǎn)生的廢棄話單進(jìn)行有效管理, 是保證計費可靠性的重要內(nèi)容之一.
廢棄話單是指計費系統(tǒng)在預(yù)處理環(huán)節(jié)中廢棄的話單, 例如時長為0、撥出方為空的話單. 湖南移動BOSS系統(tǒng)每天處理近30億條話單, 而被廢棄的話單每天約有14億. 為何廢棄話單的數(shù)量如此之多, 什么原因?qū)е铝巳绱舜罅康膹U棄話單, 其中是否包含了本該計費, 但因被廢棄而未進(jìn)行計費的話單. 對這些問題, 迫切需要建立廢棄話單分析引擎, 對被BOSS系統(tǒng)廢棄的話單進(jìn)行檢測和統(tǒng)計分析, 判定BOSS對話單的廢棄判斷是否正確. 同時需要發(fā)掘廢棄話單產(chǎn)生根源, 識別廢棄話單的特征和特性, 定位產(chǎn)生廢棄話單的設(shè)備, 進(jìn)而提升計費的可靠性, 減少收入的流失,實現(xiàn)創(chuàng)收.
對于廢棄話單, 其特性可以歸結(jié)為以下幾點:
(1) 實時性. 廢棄話單數(shù)據(jù)實時產(chǎn)生, 處理越及時,定位問題就越快速. 同時隨著時間的流失, 其所包含的價值就越低. 因此, 話單產(chǎn)生之后, 需要及時處理.
(2) 易失性. 每天都會產(chǎn)生數(shù)據(jù)量巨大的廢棄話單數(shù)據(jù), 對于所有數(shù)據(jù)持久化保存會導(dǎo)致很高的存儲成本. 注意到大部分廢棄話單數(shù)據(jù)具有共性, 信息重疊性較高, 通常提取共性就可, 原始話單數(shù)據(jù)無需保存.
(3) 突發(fā)性. 由于業(yè)務(wù)特性, 廢棄話單的量隨著時間的變動并不一致, 即前一時刻數(shù)據(jù)速率和后一時刻數(shù)據(jù)速率可能會有巨大的差異. 同時, 由于廢棄話單屬于異常監(jiān)控類的應(yīng)用場景, 當(dāng)異常發(fā)生時, 其數(shù)據(jù)量本就會突增. 因此, 需要計算系統(tǒng)既要能夠在數(shù)據(jù)量突發(fā)時仍然保證計算的低延遲性, 又要能夠在數(shù)據(jù)量降下來時, 快速的釋放計算資源.
(4) 無關(guān)聯(lián)性. 通常廢棄話單數(shù)據(jù)之間并不存在關(guān)聯(lián)性, 即不同的廢棄話單之間并沒有直接的聯(lián)系.這個特性可以簡化分析的處理邏輯.
(5) 無限性. 廢棄話單每天都在產(chǎn)生, 是實時產(chǎn)生、動態(tài)增加的. 潛在的數(shù)據(jù)量是無限的, 無法用一個具體確定的數(shù)據(jù)實現(xiàn)對其進(jìn)行量化.
綜上所述, 對于廢棄話單, 其價值是有時間效應(yīng)的, 因此需在數(shù)據(jù)的有效時間內(nèi)完成數(shù)據(jù)的計算, 而不應(yīng)等待后續(xù)全部數(shù)據(jù)到來再進(jìn)行計算. 同時, 為了應(yīng)對廢棄話單突發(fā)的特性, 計算架構(gòu)必須具有較好的伸縮特性: 一方面, 當(dāng)數(shù)據(jù)量突增時, 系統(tǒng)能夠擴(kuò)展計算節(jié)點; 另一方面, 當(dāng)數(shù)據(jù)量恢復(fù)時, 系統(tǒng)能夠回收計算節(jié)點, 防止計算資源的浪費. 最后, 由于廢棄話單具有無限的特性, 因此需確保計算系統(tǒng)的長期可靠性, 即需自動應(yīng)對節(jié)點出錯的情況. 因此, 理想的廢棄話單處理系統(tǒng)應(yīng)具備如下功能特性:
數(shù)據(jù)處理低延遲: 應(yīng)對數(shù)據(jù)實時和易失的特性;
數(shù)據(jù)負(fù)載均衡和節(jié)點擴(kuò)展性: 應(yīng)對數(shù)據(jù)突發(fā)的特性;節(jié)點容錯性: 應(yīng)對數(shù)據(jù)無限的特性;
實際上, 廢棄話單的分析可以歸結(jié)為海量數(shù)據(jù)的處理. 對于海量數(shù)據(jù)的處理, 通常有兩種計算模式——批量計算模式[1]和流式計算模式[1-3]. 批量計算采用的是先存儲再集中計算的模式, 無法滿足實時性的要求. 現(xiàn)有的流式計算模式大多采用拓?fù)浣Y(jié)構(gòu)進(jìn)行計算節(jié)點的組織, 動態(tài)擴(kuò)展性較差, 無法達(dá)到應(yīng)該數(shù)據(jù)突發(fā)的目的.
本文以廢棄話單處理系統(tǒng)的設(shè)計為核心, 對現(xiàn)有大數(shù)據(jù)處理系統(tǒng)中的一些不足之處進(jìn)行優(yōu)化, 為大數(shù)據(jù)流式計算系統(tǒng)的設(shè)計以及應(yīng)用提供一些指導(dǎo)性原則,以彌補(bǔ)當(dāng)前關(guān)于大數(shù)據(jù)流式計算在實踐應(yīng)用層面欠缺的局面.
批量計算采用的是先存儲再集中計算的模式. 當(dāng)數(shù)據(jù)記錄來到時, 并不立即進(jìn)行計算, 而是等到數(shù)據(jù)量達(dá)到一定規(guī)模之后集中進(jìn)行計算. 因此除了計算之外, 還涉及到海量數(shù)據(jù)的存儲. 目前, 對于海量數(shù)據(jù)批量分析技術(shù)的研究已相當(dāng)完善, 并形成了以Google的MapReduce編程模型[4]為理論基礎(chǔ)、開源的Hadoop計算架構(gòu)為其代表的穩(wěn)定高效的批量計算系統(tǒng).
然而數(shù)據(jù)記錄的價值通常隨著時間的流逝而降低,如果不能立即對其進(jìn)行處理, 就可能丟失其價值. 例如對于許多組織機(jī)構(gòu), 尤其是金融服務(wù)、國防、情報和稅收部門、電信、電子商務(wù)等, 需要的是不間斷并且實時獲取情報的能力, 進(jìn)而能夠分析大流量的實時事件, 及時洞察事件的始末, 并及時且通常是自動的響應(yīng)變化. 例如對于股票的交易數(shù)據(jù)記錄等, 數(shù)據(jù)實時性強(qiáng), 數(shù)據(jù)量巨大, 并且無止境, 傳統(tǒng)的批量計算模式已很難適用.
為了應(yīng)對海量數(shù)據(jù)實時計算的要求, 流式計算模式被提出. 所謂流式計算[5-7], 是指將數(shù)據(jù)記錄當(dāng)作是數(shù)據(jù)流的形式來處理, 而非是靜態(tài)的一批數(shù)據(jù). 數(shù)據(jù)流是指在時間分布和數(shù)量上無止境的一系列數(shù)據(jù)記錄的集合, 其最小的組成單元是每條數(shù)據(jù)記錄. 流式計算的本質(zhì), 就是在數(shù)據(jù)記錄不斷流動的過程中對其進(jìn)行及時的分析計算, 發(fā)現(xiàn)其蘊(yùn)含的內(nèi)在價值, 并將其內(nèi)在價值通過一定的途徑展示給用戶. 例如對于大型電商網(wǎng)站, 其對于流式數(shù)據(jù)的應(yīng)用則非常常見, 這些流式數(shù)據(jù)包含用戶搜索了什么關(guān)鍵字、查看了什么商品、購買了什么商品等, 對于這些數(shù)據(jù)的計算分析, 可以實時的對用戶作出商品的推薦, 在提供更好的用戶體驗的同時, 也可以實現(xiàn)創(chuàng)收.
對于流式計算的早期研究, 通常集中在數(shù)據(jù)庫環(huán)境中開展數(shù)據(jù)計算的流式化, 其數(shù)據(jù)記錄的規(guī)模往往較小, 數(shù)據(jù)記錄的類型也比較單一. 然而新時期的流式大數(shù)據(jù)呈現(xiàn)出實時性、易失性、突發(fā)性、無關(guān)聯(lián)性、無限性等特征, 對系統(tǒng)提出了更高的要求. S4流式計算系統(tǒng)[8,9], Storm流式計算系統(tǒng)[10]的相繼推出, 在一定程度上推動了大數(shù)據(jù)流式計算技術(shù)的發(fā)展和應(yīng)用. 這些系統(tǒng)的本質(zhì)是以拓?fù)涞慕Y(jié)構(gòu)來完成節(jié)點的組織, 每個節(jié)點在自己所處的鏈路上完成數(shù)據(jù)的處理并傳輸給下一個節(jié)點. 然而這些系統(tǒng)在自由伸縮性、計算容錯和可靠性、負(fù)載均衡等諸多方面仍然存在著明顯不足.例如對于廢棄話單, 其突發(fā)的特性需要計算系統(tǒng)具備運(yùn)行時伸縮節(jié)點的特性, 而這是現(xiàn)有流式系統(tǒng)無法完成的. 如何構(gòu)建低延遲、高伸縮性且持續(xù)可靠運(yùn)行的大數(shù)據(jù)流式計算系統(tǒng), 是當(dāng)前亟待解決的問題.
對于廢棄話單的處理, 其本質(zhì)是發(fā)現(xiàn)廢棄話單的廢棄共性, 對于異常的廢棄共性予以的及時發(fā)現(xiàn)和快速處理, 進(jìn)而減少損失. 根據(jù)廢棄話單數(shù)據(jù)所呈現(xiàn)的特性, 本文設(shè)計了一種具備高伸縮性和計算可靠性的流式計算模型來完成廢棄話單的處理. 其實現(xiàn)過程有兩個方面需要考慮: 一是如何應(yīng)對廢棄話單突發(fā)性的需求; 二是如何設(shè)計廢棄話單處理的流式處理模型.本節(jié)分別從路由策略、系統(tǒng)架構(gòu)以及實現(xiàn)兩個方面進(jìn)行詳細(xì)的描述.
3.1 高伸縮性的動態(tài)路由策略
為了滿足廢棄話單處理系統(tǒng)對于突發(fā)性的要求,需要計算系統(tǒng)具備計算節(jié)點的高伸縮性. 為了實現(xiàn)高度伸縮的特性, 本文放棄了之前的靜態(tài)路由方式, 轉(zhuǎn)而采用動態(tài)路由的方式來管理計算節(jié)點之間的數(shù)據(jù)通信. 對于靜態(tài)路由, 在任務(wù)開始時已固定計算節(jié)點個數(shù)以及數(shù)據(jù)和計算節(jié)點之間的路由關(guān)系. 而動態(tài)路由則是使用專門的管理節(jié)點來對計算節(jié)點的路由關(guān)系進(jìn)行管理, 并實現(xiàn)路由關(guān)系的實時下發(fā). 動態(tài)路由的運(yùn)行機(jī)制如圖1所示.
圖1 動態(tài)路由機(jī)制
其中ProcessNode表示計算節(jié)點, Manage表示路由管理節(jié)點. 當(dāng)某個ProcessNode節(jié)點發(fā)生故障時, Manage會動態(tài)的剔除該節(jié)點的相關(guān)路由關(guān)系以實現(xiàn)節(jié)點容錯. 同時, 為了防止Manage引起的單點故障,每個ProcessNode節(jié)點會緩存下發(fā)的路由信息, 這樣即使Manage發(fā)生故障, 也不會影響拓?fù)潢P(guān)系的正確執(zhí)行, 從而可以實現(xiàn)Manage節(jié)點的容錯.
對于動態(tài)路由策略, 除了運(yùn)行機(jī)制之外, 還需設(shè)計對應(yīng)的路由信息獲取機(jī)制. 為了實現(xiàn)這種動態(tài)路由機(jī)制, 本文將路由信息采用組的方式來組織, 每個路由組具有一個編號, 當(dāng)節(jié)點需要路由信息時需根據(jù)路由組編號, 然后通過一定的策略(隨機(jī)性策略, 一致性hash, 權(quán)重策略等)從組內(nèi)獲取一條路由信息. 其中獲取路由的參數(shù)包括: 路由組編號, 路由策略以及參數(shù).由于是按組編號的方式來獲取路由信息, 而組內(nèi)的路由信息又可以自由的進(jìn)行組織, 因此可以實現(xiàn)路由信息的動態(tài)伸縮. 動態(tài)路由的組織方式如圖2所示.
圖2 路由表的組織方式
當(dāng)需要節(jié)點伸縮時, 可以簡單的修改Manage的路由信息, 然后由Manage完成路由信息的下發(fā). 通過這種機(jī)制, 可以自由的對節(jié)點進(jìn)行伸縮. 結(jié)合心跳機(jī)制和動態(tài)路由策略, 同樣可以有效的實現(xiàn)節(jié)點級容錯.動態(tài)路由機(jī)制的運(yùn)行實例如圖3所示.
3.2 系統(tǒng)架構(gòu)和實現(xiàn)
本文結(jié)合提出的動態(tài)路由機(jī)制來實現(xiàn)廢棄話單的處理, 并從系統(tǒng)架構(gòu)、系統(tǒng)實現(xiàn)三個方面進(jìn)行描述.
3.2.1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)如圖4所示.
其中ProcessNode負(fù)責(zé)消息處理邏輯, 同時接收Manage下發(fā)的路由信息. MessageCollector是特殊的ProcessNode節(jié)點, 負(fù)責(zé)消息收集. Manage負(fù)責(zé)節(jié)點管理和路由信息管理;
其中, ProcessNode節(jié)點又被細(xì)分為輸入模塊, 心跳檢測和路由模塊, 邏輯處理模塊, 輸出模塊四個部分: 輸入模塊負(fù)責(zé)接收請求數(shù)據(jù); 邏輯處理模塊負(fù)責(zé)數(shù)據(jù)處理邏輯; 輸出模塊負(fù)責(zé)按照路由信息將消息傳送到其他節(jié)點; 心跳檢測和路由模塊負(fù)責(zé)向Manage發(fā)送心跳包, 并接收Manage下發(fā)的路由. ProcessNode節(jié)點的組成如圖5所示.
圖3 動態(tài)路由機(jī)制運(yùn)行實例
圖4 系統(tǒng)架構(gòu)圖
圖5 ProcessNode構(gòu)成
注意到對于廢棄話單的處理, 其處理信息的傳播策略應(yīng)該是主動的, 而非用戶被動拉取, 因此本文在設(shè)計中加入了告警機(jī)制, 實現(xiàn)重要消息的主動推送.廢棄話單的處理過程為: MessageCollector從其他消息源接收信息, 然后采用流式的方式和隨機(jī)路由策略分散到一級處理節(jié)點, 一級處理節(jié)點完成關(guān)鍵字段的抽取并按照關(guān)鍵字段執(zhí)行負(fù)載均衡策略, 并分發(fā)到二級節(jié)點完成處理和重要信息入庫, 并將重要信息實時推送給用戶.
3.2.2 系統(tǒng)實現(xiàn)
為了方便實現(xiàn)各個模塊, 本文提取了各個模塊的共性, 提供了一種通用的服務(wù)架構(gòu). 通過這種架構(gòu),可以很方便的構(gòu)建各個模塊. 通用架構(gòu)的主要功能是構(gòu)建服務(wù)器架構(gòu), 完成消息的收發(fā), 并在不同的階段掛接不同的函數(shù)完成邏輯的處理. 通用架構(gòu)如圖6所示.
圖6 通用服務(wù)架構(gòu)
每個模塊在實現(xiàn)時, 可以簡單的通過定制掛接的函數(shù)來實現(xiàn)各自的功能. 例如ProcessNode的實現(xiàn)如圖7所示.
為了驗證本文提出的動態(tài)路由策略的有效性, 本文使用實際的廢棄話單數(shù)據(jù), 分別測試動態(tài)路由策略和靜態(tài)路由策略在數(shù)據(jù)突發(fā)的場景下, 話單數(shù)據(jù)的處理延遲情況, 來驗證本文提出的動態(tài)路由策略的有效性. 所謂處理延時, 是指從消息發(fā)出到消息最終完成處理并提交所花費的時間.
在實驗中, 為了充分發(fā)揮動態(tài)路由機(jī)制的性能,本文開發(fā)了一個輔助系統(tǒng), 該輔助系統(tǒng)可以根據(jù)系統(tǒng)負(fù)載情況, 按照預(yù)先設(shè)計的策略自動啟用資源池中的備用計算節(jié)點并下發(fā)路由, 以實現(xiàn)系統(tǒng)的自動擴(kuò)展.
實驗環(huán)境為Xeon E5-2680 V2, linux操作系統(tǒng), 16GB內(nèi)存, 使用進(jìn)程模擬計算節(jié)點. 為了模擬突發(fā)性,實驗中使用1GB總量的廢棄話單數(shù)據(jù)先以較小的速率發(fā)送, 然后以較高的發(fā)送速率發(fā)送到流式計算系統(tǒng),在處理過程中統(tǒng)計話單消息的平均處理延時. 兩種路由策略在不同突發(fā)速率下的平均延時如圖8所示.
圖8 靜態(tài)路由策略和動態(tài)路由策略在不同突發(fā)速率下的平均延時
從實驗結(jié)果可以看出, 對于靜態(tài)路由策略, 由于缺乏擴(kuò)展性, 隨著消息數(shù)據(jù)產(chǎn)生速率的增長, 其消息的平均處理延遲也越來越高. 對于動態(tài)路由策略, 在數(shù)據(jù)突發(fā)的情況下, 其仍能維持較低的處理延遲.和批量計算模式相比, 采用流式計算模式的廢棄話單系統(tǒng)具有以下特征: (1)可以對廢棄話單消息進(jìn)行實時處理, 因此可以更快的發(fā)現(xiàn)問題; (2)可以連續(xù)進(jìn)行計算, 而非集中計算, 因此可以有效的利用計算資源; (3)流式計算模型對于廢棄話單進(jìn)行實時處理, 無需存儲大量信息, 而批量模式需要存儲到一定數(shù)據(jù)才會計算, 需要大量的存儲資源; (4)流式計算模型可以在運(yùn)行時對節(jié)點進(jìn)行伸縮, 而批量計算通常只能在任務(wù)創(chuàng)建時完成節(jié)點的負(fù)載均衡. 兩者的對比如表1所示.
表1 基于流式計算模式的廢棄話單系統(tǒng)和批量計算模式的對比
對BOSS計費系統(tǒng)所產(chǎn)生的廢棄話單進(jìn)行有效管理, 是保證計費可靠性的重要內(nèi)容之一. 本文總結(jié)了廢棄話單數(shù)據(jù)所呈現(xiàn)出的實時性、易失性、突發(fā)性、無關(guān)聯(lián)性、無限性等特征, 給出了理想的廢棄話單處理系統(tǒng)應(yīng)該具有的關(guān)鍵功能特征. 闡述了已有的大數(shù)據(jù)計算模式的研究現(xiàn)狀, 并就其在節(jié)點伸縮性方面的缺點進(jìn)行了分析. 在此基礎(chǔ)之上, 本文設(shè)計了一種動態(tài)路由策略來實現(xiàn)計算系統(tǒng)的運(yùn)行時伸縮, 以應(yīng)對廢棄話單突發(fā)性的需求. 本文提出的動態(tài)路由策略, 通過路由信息分組和按組編號獲取路由信息的方式對路由進(jìn)行動態(tài)管理. 通過提供的接口可以自由的對組內(nèi)的路由信息進(jìn)行增加和修改, 極大的提高了系統(tǒng)的熱伸縮性. 最后, 本文給出了一種基于流式計算模型的廢棄話單處理系統(tǒng)的實現(xiàn), 并通過實驗驗證了本文所提出的動態(tài)路由策略在應(yīng)對突發(fā)性方面的有效性, 進(jìn)而有效的滿足了廢棄話單處理的需求.
1 孫大為,張廣艷,鄭緯民.大數(shù)據(jù)流式計算:關(guān)鍵技術(shù)及系統(tǒng)實例.軟件學(xué)報,2014,25(4):839–862.
2 Sun DW, Zhang GY, Yang SL, Zheng WM, Khan SU, Li KQ. Re-Stream: Real-time and energy-efficient resource scheduling in big data stream computing environments. Information Sciences, 2015, 319: 92–112.
3 孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn).計算機(jī)研究與發(fā)展,2013,50(1):146–169.
4 Dittrich J, Quiané-Ruiz JA. Efficient big data processing in Hadoop MapReduce. Proc. of the VLDB Endowment, 2012, 5(12): 2014–2015.
5 亓開元,趙卓峰,房俊,馬強(qiáng).針對高速數(shù)據(jù)流的大規(guī)模數(shù)據(jù)實時處理方法.計算機(jī)學(xué)報,2012,35(3):477–490.
6 Wang LZ, Tao J, Ranjan R, Marten H, Streit A, Chen JY, Chen D. G-Hadoop: MapReduce across distributed data centers for data-intensive computing. Future Generation Computer Systems, 2013, 29(3): 739–750.
7 顧昕.分布式流式計算框架關(guān)鍵技術(shù)的研究與實現(xiàn)[碩士學(xué)位論文].北京:北京郵電大學(xué),2012.
8 Ajwani D, Ali S, Katrinis K, Li CH, Park AJ, Morrison JP, Schenfeld E. Generating synthetic task graphs for simulating stream computing systems. Journal of Parallel and Distributed Computing, 2013, 73(10): 1362–1374.
9 劉子英,唐宏建,肖嘉耀,張賽.基于流式計算的Web實時故障診斷分析與設(shè)計.華東交通大學(xué)學(xué)報,2014,31(1): 119–123.
10 張振華,吳開超.一種分布式Twitter數(shù)據(jù)處理方案及應(yīng)用.計算機(jī)應(yīng)用研究,2015,32(7):2073–2077.
Abandoned Bill Handling System Based on Stream Computing Model
GUO Shu-Xian, YANG Jin-Min
(School of Information Science and Engineering, Hunan University, Changsha 410082, China)
Managing abandoned bills effectively is an important part to guarantee the accounting reliability of communication systems. However, for the distinctive features of the abandoned bills such as real time and burstiness, etc., the existing big data computing models can not deal with them well. In order to meet the challenges of real time and burstiness of abandoned bill system, this paper presents a dynamic routing strategy to realize the run time lightweight scaling of the computing system. On this basis, this paper gives an implementation of the abandoned bill system based on the stream computing model. Finally, the results demonstrate that the proposed dynamic routing strategy is an effective way on handling burstiness of data.
abandoned bill; stream computing model; real time; burstiness; dynamic routing strategy
國家自然科學(xué)基金(61272401)
2016-03-21;收到修改稿時間:2016-04-27
10.15888/j.cnki.csa.005488