陳 式 雒江濤
(重慶郵電大學 通信網與測試技術重點實驗室,重慶 400065)
近年來,隨著移動互聯網的飛速發展,網絡性能的穩定性與可靠性顯得尤為重要。網絡性能的實時監測作為網絡性能管理的重要組成部分,它完成對系統中各用戶信令動態數據的實時跟蹤,為運營商及時了解網絡的性能及運行狀況提供了可靠的依據。
目前基于Web的網絡信令監測系統由于其平臺無關性、使用方便等諸多優點使其代表了網絡監測系統的一種潮流。本文介紹一種基于Pushlet技術的網絡性能實時監測設計方案,它適用于所有支持瀏覽器的環境中,而且與傳統的實時監測方案相比,其實時性很高。
Pushlet是一種基于 Servlet技術的comet實現。在Servlet機制下,數據從server端的Java對象直接推送(push)到(動態)HTML頁面,而無需任何Java applet或者插件的幫助。它使server端可以周期性地更新client的web頁面,這與傳統的request/response方式相悖。瀏覽器client為兼容JavaScript1.4版本以上的瀏覽器(如 Internet Explorer、FireFox),并使用JavaScript/Dynamic HTML特性。而底層實現使用一個servlet通過Http連接到JavaScript所在的瀏覽器,并將數據推送到后者。Pushlet有許多明顯的優點,比如標準的瘦客戶、平臺無關、方便地擴展具體的應用以及容易穿越防火墻的通道等。它主要用于監控動態的數據源,比如證券交易所、天氣、投票和一些其他的實時系統,另外Pushlet還支持客戶端主動上載事件。
Pushlet的設計架構圖(見圖1):
Pushlet的基本思想是將持續連接框架frame1設置為隱藏,并使frame1保持HTTP連接,由Frame1接收來自服務器端的javascript,利用javascript代碼來更新frame2的內容,即可實現動態向客戶端推送數據。

圖1 Pushlet框架

圖2 發出監視命令流程
Pushlet框架允許client訂閱在server端的主題(subject),而server則接收訂閱,然后在server端的訂閱主題所對應的數據變化時推送數據到client。此框架的基本設計模型是發布/訂閱(Publish/Subscrib),也被稱為觀察者(Observer)。它由server和client兩部分組建而成。各個模塊的功能如下:
(1)Pushlet:Pushlet 是 一 個 servlet,通過doGet/doPost方法被調用。多個client可以同時調用同一個Pushlet,Pushlet接受客戶端的請求,并創建訂閱者(PushletSubscriber對象),由該訂閱者保持客戶請求,返回內容。
(2)PushletSubscriber:是一個實現 Subscriber接口的對象,與每個客戶端對應的訂閱者,首先根據客戶端的請求生成客戶端適配器ClientAdapter并通過join()方法向Publisher類進行注冊并將自身添加到Publisher的內部事件列表,每個事件對應一個主題。如果有事件入隊列,則PushletSubscriber被喚醒,同時調用 ClientAdapter向客戶端推送數據。
(3)ClientAdapter:屏蔽了不同的客戶端協議的差異,將PushletSubscriber獲取的事件轉換成javascript格式,并將它推送到客戶端瀏覽器,因此實現了適用于所有類型的瀏覽器。
(4)Publisher:維護著一組者的列表,提供靜態接口給其他類訂閱/發布消息,當有事件到來時,通過比較事件的主題和訂閱者的主題,將事件放入相對應的事件隊列,并喚醒所有在此事件隊列上等待的客戶端訂閱者(PushletSubscriber)。
(5)EventSource:事件源,產生 Pushlet,并調用Publisher發布事件。
CDMA2000 1x EVDO網絡用戶數據量大,涉及到的協議較多,為了對網絡的整體性能均能及時、全面地進行監測,其實時監測模塊的性能需求大致如下:可以選擇指定協議、指定用戶或全部用戶進行實時跟蹤,跟蹤到的動態數據周期性地推送到客戶端瀏覽器,并能將業務實現流程如實記錄并通過流程圖反應出來。
本文的實時監測模型基于重慶電信CDMA2000 1x EVDO信令監測系統項目下的一個子模塊,該系統采用四層B/S Web模型思想進行系統的架構,采用JSP頁面開發語言,Apache服務器,Oracle數據庫,SUN Solaris服務器搭建的實驗環境作為開發環境。在任意的web瀏覽器作為客戶端,讓用戶可以在任何地方實時監控網絡運營狀況、實時跟蹤業務實現流程。這樣,以流程、業務為主導,貼近運營商,為運營商的網絡優化方案、系統升級、及時作出各種決策提供有效的依據。
傳統的實時監測實現方案是在瀏覽器客戶端設置一個定時器,在該模型中假定其周期為30秒,啟動實時監測后,客戶端每隔30秒向服務器發起一個http連接,服務器啟動后臺程序查詢數據庫并將查詢結果返回客戶端瀏覽器。
該方案實現比較簡單,但是缺點卻很明顯。啟動實時監測后每隔30秒客戶端瀏覽器都會進行刷新,用戶體驗較差;其次,數據量較大時,每次刷新頁面的延遲感很強,實時性較差。基于以上原因,選擇了基于Pushlet的實時監測模型方案。
圖2對應的是客戶端發出監視命令的流程圖,具體流程如下:
首先,用戶啟動或停止實時業務監測,客戶端代理接收用戶事件,根據監視命令創建監視任務,創建一個與客戶端對應的訂閱者(PushletSubscriber),創建成功后會向客戶端代理返回一個成功響應。
其次, PushletSubscriber創建客戶端適配器,將與該客戶端對應的訂閱者(PushletSubscriber)注冊到事件發布管理器上,周期性調用后臺查詢方法,并將數據主動推送到客戶端瀏覽器。
再次,根據客戶端的監視命令,創建相應的客戶端查看任務,對其中的監視類型和監視對象進行緩存,緩存是為了能夠綜合各個客戶端的命令,當有多個客戶端同時監控一個對象時,只需建立一個監控對象的緩存狀態信息。

圖3 推送數據流程

圖4 業務追蹤實時監測結果圖
最后,任務管理器根據緩存狀態,向服務器返回監視命令的響應,準備推送數據。
圖3為推送數據的過程,它顯示了如何產生事件并將其分發到客戶端瀏覽器。網元適配器把數據發送給事件源管理器,事件源管理器與訂閱者進行主題匹配,確定要發送的客戶端。若有匹配的訂閱者,則發布事件,把事件推送到客戶端適配器,將數據以JavaScript的形式發送到客戶端代理,實現了數據的實時推送。
隨著手機上網業務的發展,手機上網業務類型繁多,新業務也層出不窮。用戶的手機上網過程,涉及到多個信令的流程,為了方便運營商對某用戶的所有業務流程有一個直觀的了解與判斷,本模塊設計了業務流程圖功能:通過匹配某用戶的grekey值,統計出該用戶在某時間段內的所有信令過程,并繪制出業務流程圖,具體步驟如下:
第一步,點擊某條用戶記錄的超鏈接,獲取該用戶的grekey;
第二步,依次用該grekey值分別與A11注冊記錄、PPP建立連接、PPP終止連接、A12建立連接、WAP連接過程、WAP業務過程、MMS發送過程、MMS接收過程、AAA認證過程、AAA計費過程等數據庫相應的CDR表中在該時間段內所有用戶記錄的GREKEY字段匹配,判斷其是否相等:①若匹配的grekey值相等,說明是該用戶的一條業務記錄,則繪制一條流程線,同時判斷該業務過程是否成功,若成功,則該線繪制成藍色;若失敗,則繪制成灰色;②依次對上述所有的業務過程重復上個步驟;③循環結束,則業務流程圖繪制完成。

圖5 業務流程結果圖
結果顯示模塊采用Java編程語言,利用JSP+Hibernate+Spring技術完成用戶界面的設計,供用戶查詢行為分析結果。CDMA2000 1x EVDO網絡由于用戶業務較多,這里提供了按不同業務進行實時監測的選擇。圖5是2012年3月1日在重慶電信機房的監測結果,對用戶號碼18983699099發送彩信實時監測功能驗證,跟蹤結果正常。啟動實時業務跟蹤后,客戶端瀏覽器不會刷新,每隔周期T(可自由設置周期,本文中設置為30秒)服務器主動向客戶端推送數據,數據動態在界面上周期性累加,不會出現刷新和頁面停頓的感覺,實時性高,用戶體驗良好。
業務流程圖能追蹤到某具體用戶從開始監測時刻T1到查點擊查看業務流程圖時刻T2之間所有業務的具體流程,方便運營商對某用戶的所有業務流程有一個直觀的了解與判斷。如圖所示,顯示的是2012年3月30日10時開始某時段內的某用戶所有業務流程。藍色表示成功記錄,灰色表示失敗記錄。
維護人員可以通過CDRID的超級鏈接,打開該CDR記錄的關聯流程圖,如下圖所示。通過流程圖的直觀展示,維護人員可以了解用戶操作的完整流程。對于失敗記錄,可以一目了然的發現失敗的環節,便于問題跟蹤定位。
本文研究內容來自重慶電信CDMA2000 1x EVDO信令監測系統項目,從實時性、良好用戶體驗的角度出發,基于Pushlet技術設計了一種普遍適用的用戶業務實時監測模型,該模型能夠自動完成實時數據從服務器端推送到客戶端,并且不會出現延遲感和頁面刷新,有著良好的用戶體驗。同時,用戶業務流程圖可對具體用戶在某時間段內的業務流程通過圖形形象、直觀地體現出來,便于運營商的監測。該模型可廣泛用于網絡監控和維護,了解網絡的即時運行狀況,為運營商為運營商的網絡優化方案、系統升級、及時作出各種決策提供有效的依據。
[1]景慎艷,基于Pushlet服務器推技術的研究與應用.現代計算機,2009(10).
[2]尤淑輝,基于Pushlet的網絡性能實時監控系統.計算機應用,2003(12).