郭淑嫻, 楊金民
(湖南大學 信息科學與工程學院, 長沙 410082)
流式計算模型在廢棄話單處理中的應用①
郭淑嫻, 楊金民
(湖南大學 信息科學與工程學院, 長沙 410082)
對廢棄話單進行有效管理, 是保障通信系統計費可靠性的重要內容之一, 然而對于廢棄話單數據所呈現出的實時性、突發性等特征, 現有的大數據處理模式并不能很好地應對. 本文采用動態路由策略實現計算系統運行時的輕量級伸縮, 應對廢棄話單實時性和突發性帶來的挑戰. 在此基礎之上, 本文給出了一種基于流式計算模型的廢棄話單處理系統的實現, 并通過實際數據驗證了本文提出的動態路由策略在應對數據突發方面的有效性.
廢棄話單; 流式計算模型; 實時性; 突發性; 動態路由
通信行業競爭的加劇, 導致競爭領域不斷由外部市場領域向內部質量管理領域延伸, 話單計費可靠性目前已成為通信運營商質量管控的核心, 而對BOSS計費系統所產生的廢棄話單進行有效管理, 是保證計費可靠性的重要內容之一.
廢棄話單是指計費系統在預處理環節中廢棄的話單, 例如時長為0、撥出方為空的話單. 湖南移動BOSS系統每天處理近30億條話單, 而被廢棄的話單每天約有14億. 為何廢棄話單的數量如此之多, 什么原因導致了如此大量的廢棄話單, 其中是否包含了本該計費, 但因被廢棄而未進行計費的話單. 對這些問題, 迫切需要建立廢棄話單分析引擎, 對被BOSS系統廢棄的話單進行檢測和統計分析, 判定BOSS對話單的廢棄判斷是否正確. 同時需要發掘廢棄話單產生根源, 識別廢棄話單的特征和特性, 定位產生廢棄話單的設備, 進而提升計費的可靠性, 減少收入的流失,實現創收.
對于廢棄話單, 其特性可以歸結為以下幾點:
(1) 實時性. 廢棄話單數據實時產生, 處理越及時,定位問題就越快速. 同時隨著時間的流失, 其所包含的價值就越低. 因此, 話單產生之后, 需要及時處理.
(2) 易失性. 每天都會產生數據量巨大的廢棄話單數據, 對于所有數據持久化保存會導致很高的存儲成本. 注意到大部分廢棄話單數據具有共性, 信息重疊性較高, 通常提取共性就可, 原始話單數據無需保存.
(3) 突發性. 由于業務特性, 廢棄話單的量隨著時間的變動并不一致, 即前一時刻數據速率和后一時刻數據速率可能會有巨大的差異. 同時, 由于廢棄話單屬于異常監控類的應用場景, 當異常發生時, 其數據量本就會突增. 因此, 需要計算系統既要能夠在數據量突發時仍然保證計算的低延遲性, 又要能夠在數據量降下來時, 快速的釋放計算資源.
(4) 無關聯性. 通常廢棄話單數據之間并不存在關聯性, 即不同的廢棄話單之間并沒有直接的聯系.這個特性可以簡化分析的處理邏輯.
(5) 無限性. 廢棄話單每天都在產生, 是實時產生、動態增加的. 潛在的數據量是無限的, 無法用一個具體確定的數據實現對其進行量化.
綜上所述, 對于廢棄話單, 其價值是有時間效應的, 因此需在數據的有效時間內完成數據的計算, 而不應等待后續全部數據到來再進行計算. 同時, 為了應對廢棄話單突發的特性, 計算架構必須具有較好的伸縮特性: 一方面, 當數據量突增時, 系統能夠擴展計算節點; 另一方面, 當數據量恢復時, 系統能夠回收計算節點, 防止計算資源的浪費. 最后, 由于廢棄話單具有無限的特性, 因此需確保計算系統的長期可靠性, 即需自動應對節點出錯的情況. 因此, 理想的廢棄話單處理系統應具備如下功能特性:
數據處理低延遲: 應對數據實時和易失的特性;
數據負載均衡和節點擴展性: 應對數據突發的特性;節點容錯性: 應對數據無限的特性;
實際上, 廢棄話單的分析可以歸結為海量數據的處理. 對于海量數據的處理, 通常有兩種計算模式——批量計算模式[1]和流式計算模式[1-3]. 批量計算采用的是先存儲再集中計算的模式, 無法滿足實時性的要求. 現有的流式計算模式大多采用拓撲結構進行計算節點的組織, 動態擴展性較差, 無法達到應該數據突發的目的.
本文以廢棄話單處理系統的設計為核心, 對現有大數據處理系統中的一些不足之處進行優化, 為大數據流式計算系統的設計以及應用提供一些指導性原則,以彌補當前關于大數據流式計算在實踐應用層面欠缺的局面.
批量計算采用的是先存儲再集中計算的模式. 當數據記錄來到時, 并不立即進行計算, 而是等到數據量達到一定規模之后集中進行計算. 因此除了計算之外, 還涉及到海量數據的存儲. 目前, 對于海量數據批量分析技術的研究已相當完善, 并形成了以Google的MapReduce編程模型[4]為理論基礎、開源的Hadoop計算架構為其代表的穩定高效的批量計算系統.
然而數據記錄的價值通常隨著時間的流逝而降低,如果不能立即對其進行處理, 就可能丟失其價值. 例如對于許多組織機構, 尤其是金融服務、國防、情報和稅收部門、電信、電子商務等, 需要的是不間斷并且實時獲取情報的能力, 進而能夠分析大流量的實時事件, 及時洞察事件的始末, 并及時且通常是自動的響應變化. 例如對于股票的交易數據記錄等, 數據實時性強, 數據量巨大, 并且無止境, 傳統的批量計算模式已很難適用.
為了應對海量數據實時計算的要求, 流式計算模式被提出. 所謂流式計算[5-7], 是指將數據記錄當作是數據流的形式來處理, 而非是靜態的一批數據. 數據流是指在時間分布和數量上無止境的一系列數據記錄的集合, 其最小的組成單元是每條數據記錄. 流式計算的本質, 就是在數據記錄不斷流動的過程中對其進行及時的分析計算, 發現其蘊含的內在價值, 并將其內在價值通過一定的途徑展示給用戶. 例如對于大型電商網站, 其對于流式數據的應用則非常常見, 這些流式數據包含用戶搜索了什么關鍵字、查看了什么商品、購買了什么商品等, 對于這些數據的計算分析, 可以實時的對用戶作出商品的推薦, 在提供更好的用戶體驗的同時, 也可以實現創收.
對于流式計算的早期研究, 通常集中在數據庫環境中開展數據計算的流式化, 其數據記錄的規模往往較小, 數據記錄的類型也比較單一. 然而新時期的流式大數據呈現出實時性、易失性、突發性、無關聯性、無限性等特征, 對系統提出了更高的要求. S4流式計算系統[8,9], Storm流式計算系統[10]的相繼推出, 在一定程度上推動了大數據流式計算技術的發展和應用. 這些系統的本質是以拓撲的結構來完成節點的組織, 每個節點在自己所處的鏈路上完成數據的處理并傳輸給下一個節點. 然而這些系統在自由伸縮性、計算容錯和可靠性、負載均衡等諸多方面仍然存在著明顯不足.例如對于廢棄話單, 其突發的特性需要計算系統具備運行時伸縮節點的特性, 而這是現有流式系統無法完成的. 如何構建低延遲、高伸縮性且持續可靠運行的大數據流式計算系統, 是當前亟待解決的問題.
對于廢棄話單的處理, 其本質是發現廢棄話單的廢棄共性, 對于異常的廢棄共性予以的及時發現和快速處理, 進而減少損失. 根據廢棄話單數據所呈現的特性, 本文設計了一種具備高伸縮性和計算可靠性的流式計算模型來完成廢棄話單的處理. 其實現過程有兩個方面需要考慮: 一是如何應對廢棄話單突發性的需求; 二是如何設計廢棄話單處理的流式處理模型.本節分別從路由策略、系統架構以及實現兩個方面進行詳細的描述.
3.1 高伸縮性的動態路由策略
為了滿足廢棄話單處理系統對于突發性的要求,需要計算系統具備計算節點的高伸縮性. 為了實現高度伸縮的特性, 本文放棄了之前的靜態路由方式, 轉而采用動態路由的方式來管理計算節點之間的數據通信. 對于靜態路由, 在任務開始時已固定計算節點個數以及數據和計算節點之間的路由關系. 而動態路由則是使用專門的管理節點來對計算節點的路由關系進行管理, 并實現路由關系的實時下發. 動態路由的運行機制如圖1所示.

圖1 動態路由機制
其中ProcessNode表示計算節點, Manage表示路由管理節點. 當某個ProcessNode節點發生故障時, Manage會動態的剔除該節點的相關路由關系以實現節點容錯. 同時, 為了防止Manage引起的單點故障,每個ProcessNode節點會緩存下發的路由信息, 這樣即使Manage發生故障, 也不會影響拓撲關系的正確執行, 從而可以實現Manage節點的容錯.
對于動態路由策略, 除了運行機制之外, 還需設計對應的路由信息獲取機制. 為了實現這種動態路由機制, 本文將路由信息采用組的方式來組織, 每個路由組具有一個編號, 當節點需要路由信息時需根據路由組編號, 然后通過一定的策略(隨機性策略, 一致性hash, 權重策略等)從組內獲取一條路由信息. 其中獲取路由的參數包括: 路由組編號, 路由策略以及參數.由于是按組編號的方式來獲取路由信息, 而組內的路由信息又可以自由的進行組織, 因此可以實現路由信息的動態伸縮. 動態路由的組織方式如圖2所示.

圖2 路由表的組織方式
當需要節點伸縮時, 可以簡單的修改Manage的路由信息, 然后由Manage完成路由信息的下發. 通過這種機制, 可以自由的對節點進行伸縮. 結合心跳機制和動態路由策略, 同樣可以有效的實現節點級容錯.動態路由機制的運行實例如圖3所示.
3.2 系統架構和實現
本文結合提出的動態路由機制來實現廢棄話單的處理, 并從系統架構、系統實現三個方面進行描述.
3.2.1 系統架構
系統架構如圖4所示.
其中ProcessNode負責消息處理邏輯, 同時接收Manage下發的路由信息. MessageCollector是特殊的ProcessNode節點, 負責消息收集. Manage負責節點管理和路由信息管理;
其中, ProcessNode節點又被細分為輸入模塊, 心跳檢測和路由模塊, 邏輯處理模塊, 輸出模塊四個部分: 輸入模塊負責接收請求數據; 邏輯處理模塊負責數據處理邏輯; 輸出模塊負責按照路由信息將消息傳送到其他節點; 心跳檢測和路由模塊負責向Manage發送心跳包, 并接收Manage下發的路由. ProcessNode節點的組成如圖5所示.

圖3 動態路由機制運行實例

圖4 系統架構圖

圖5 ProcessNode構成
注意到對于廢棄話單的處理, 其處理信息的傳播策略應該是主動的, 而非用戶被動拉取, 因此本文在設計中加入了告警機制, 實現重要消息的主動推送.廢棄話單的處理過程為: MessageCollector從其他消息源接收信息, 然后采用流式的方式和隨機路由策略分散到一級處理節點, 一級處理節點完成關鍵字段的抽取并按照關鍵字段執行負載均衡策略, 并分發到二級節點完成處理和重要信息入庫, 并將重要信息實時推送給用戶.
3.2.2 系統實現
為了方便實現各個模塊, 本文提取了各個模塊的共性, 提供了一種通用的服務架構. 通過這種架構,可以很方便的構建各個模塊. 通用架構的主要功能是構建服務器架構, 完成消息的收發, 并在不同的階段掛接不同的函數完成邏輯的處理. 通用架構如圖6所示.

圖6 通用服務架構
每個模塊在實現時, 可以簡單的通過定制掛接的函數來實現各自的功能. 例如ProcessNode的實現如圖7所示.
為了驗證本文提出的動態路由策略的有效性, 本文使用實際的廢棄話單數據, 分別測試動態路由策略和靜態路由策略在數據突發的場景下, 話單數據的處理延遲情況, 來驗證本文提出的動態路由策略的有效性. 所謂處理延時, 是指從消息發出到消息最終完成處理并提交所花費的時間.
在實驗中, 為了充分發揮動態路由機制的性能,本文開發了一個輔助系統, 該輔助系統可以根據系統負載情況, 按照預先設計的策略自動啟用資源池中的備用計算節點并下發路由, 以實現系統的自動擴展.
實驗環境為Xeon E5-2680 V2, linux操作系統, 16GB內存, 使用進程模擬計算節點. 為了模擬突發性,實驗中使用1GB總量的廢棄話單數據先以較小的速率發送, 然后以較高的發送速率發送到流式計算系統,在處理過程中統計話單消息的平均處理延時. 兩種路由策略在不同突發速率下的平均延時如圖8所示.

圖8 靜態路由策略和動態路由策略在不同突發速率下的平均延時
從實驗結果可以看出, 對于靜態路由策略, 由于缺乏擴展性, 隨著消息數據產生速率的增長, 其消息的平均處理延遲也越來越高. 對于動態路由策略, 在數據突發的情況下, 其仍能維持較低的處理延遲.和批量計算模式相比, 采用流式計算模式的廢棄話單系統具有以下特征: (1)可以對廢棄話單消息進行實時處理, 因此可以更快的發現問題; (2)可以連續進行計算, 而非集中計算, 因此可以有效的利用計算資源; (3)流式計算模型對于廢棄話單進行實時處理, 無需存儲大量信息, 而批量模式需要存儲到一定數據才會計算, 需要大量的存儲資源; (4)流式計算模型可以在運行時對節點進行伸縮, 而批量計算通常只能在任務創建時完成節點的負載均衡. 兩者的對比如表1所示.

表1 基于流式計算模式的廢棄話單系統和批量計算模式的對比
對BOSS計費系統所產生的廢棄話單進行有效管理, 是保證計費可靠性的重要內容之一. 本文總結了廢棄話單數據所呈現出的實時性、易失性、突發性、無關聯性、無限性等特征, 給出了理想的廢棄話單處理系統應該具有的關鍵功能特征. 闡述了已有的大數據計算模式的研究現狀, 并就其在節點伸縮性方面的缺點進行了分析. 在此基礎之上, 本文設計了一種動態路由策略來實現計算系統的運行時伸縮, 以應對廢棄話單突發性的需求. 本文提出的動態路由策略, 通過路由信息分組和按組編號獲取路由信息的方式對路由進行動態管理. 通過提供的接口可以自由的對組內的路由信息進行增加和修改, 極大的提高了系統的熱伸縮性. 最后, 本文給出了一種基于流式計算模型的廢棄話單處理系統的實現, 并通過實驗驗證了本文所提出的動態路由策略在應對突發性方面的有效性, 進而有效的滿足了廢棄話單處理的需求.
1 孫大為,張廣艷,鄭緯民.大數據流式計算:關鍵技術及系統實例.軟件學報,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 孟小峰,慈祥.大數據管理:概念、技術與挑戰.計算機研究與發展,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 亓開元,趙卓峰,房俊,馬強.針對高速數據流的大規模數據實時處理方法.計算機學報,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 顧昕.分布式流式計算框架關鍵技術的研究與實現[碩士學位論文].北京:北京郵電大學,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實時故障診斷分析與設計.華東交通大學學報,2014,31(1): 119–123.
10 張振華,吳開超.一種分布式Twitter數據處理方案及應用.計算機應用研究,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
國家自然科學基金(61272401)
2016-03-21;收到修改稿時間:2016-04-27
10.15888/j.cnki.csa.005488