陳 式 雒江濤
(重慶郵電大學(xué) 通信網(wǎng)與測試技術(shù)重點(diǎn)實(shí)驗室,重慶 400065)
近年來,隨著移動互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)性能的穩(wěn)定性與可靠性顯得尤為重要。網(wǎng)絡(luò)性能的實(shí)時監(jiān)測作為網(wǎng)絡(luò)性能管理的重要組成部分,它完成對系統(tǒng)中各用戶信令動態(tài)數(shù)據(jù)的實(shí)時跟蹤,為運(yùn)營商及時了解網(wǎng)絡(luò)的性能及運(yùn)行狀況提供了可靠的依據(jù)。
目前基于Web的網(wǎng)絡(luò)信令監(jiān)測系統(tǒng)由于其平臺無關(guān)性、使用方便等諸多優(yōu)點(diǎn)使其代表了網(wǎng)絡(luò)監(jiān)測系統(tǒng)的一種潮流。本文介紹一種基于Pushlet技術(shù)的網(wǎng)絡(luò)性能實(shí)時監(jiān)測設(shè)計方案,它適用于所有支持瀏覽器的環(huán)境中,而且與傳統(tǒng)的實(shí)時監(jiān)測方案相比,其實(shí)時性很高。
Pushlet是一種基于 Servlet技術(shù)的comet實(shí)現(xiàn)。在Servlet機(jī)制下,數(shù)據(jù)從server端的Java對象直接推送(push)到(動態(tài))HTML頁面,而無需任何Java applet或者插件的幫助。它使server端可以周期性地更新client的web頁面,這與傳統(tǒng)的request/response方式相悖。瀏覽器client為兼容JavaScript1.4版本以上的瀏覽器(如 Internet Explorer、FireFox),并使用JavaScript/Dynamic HTML特性。而底層實(shí)現(xiàn)使用一個servlet通過Http連接到JavaScript所在的瀏覽器,并將數(shù)據(jù)推送到后者。Pushlet有許多明顯的優(yōu)點(diǎn),比如標(biāo)準(zhǔn)的瘦客戶、平臺無關(guān)、方便地擴(kuò)展具體的應(yīng)用以及容易穿越防火墻的通道等。它主要用于監(jiān)控動態(tài)的數(shù)據(jù)源,比如證券交易所、天氣、投票和一些其他的實(shí)時系統(tǒng),另外Pushlet還支持客戶端主動上載事件。
Pushlet的設(shè)計架構(gòu)圖(見圖1):
Pushlet的基本思想是將持續(xù)連接框架frame1設(shè)置為隱藏,并使frame1保持HTTP連接,由Frame1接收來自服務(wù)器端的javascript,利用javascript代碼來更新frame2的內(nèi)容,即可實(shí)現(xiàn)動態(tài)向客戶端推送數(shù)據(jù)。
圖1 Pushlet框架
圖2 發(fā)出監(jiān)視命令流程
Pushlet框架允許client訂閱在server端的主題(subject),而server則接收訂閱,然后在server端的訂閱主題所對應(yīng)的數(shù)據(jù)變化時推送數(shù)據(jù)到client。此框架的基本設(shè)計模型是發(fā)布/訂閱(Publish/Subscrib),也被稱為觀察者(Observer)。它由server和client兩部分組建而成。各個模塊的功能如下:
(1)Pushlet:Pushlet 是 一 個 servlet,通過doGet/doPost方法被調(diào)用。多個client可以同時調(diào)用同一個Pushlet,Pushlet接受客戶端的請求,并創(chuàng)建訂閱者(PushletSubscriber對象),由該訂閱者保持客戶請求,返回內(nèi)容。
(2)PushletSubscriber:是一個實(shí)現(xiàn) Subscriber接口的對象,與每個客戶端對應(yīng)的訂閱者,首先根據(jù)客戶端的請求生成客戶端適配器ClientAdapter并通過join()方法向Publisher類進(jìn)行注冊并將自身添加到Publisher的內(nèi)部事件列表,每個事件對應(yīng)一個主題。如果有事件入隊列,則PushletSubscriber被喚醒,同時調(diào)用 ClientAdapter向客戶端推送數(shù)據(jù)。
(3)ClientAdapter:屏蔽了不同的客戶端協(xié)議的差異,將PushletSubscriber獲取的事件轉(zhuǎn)換成javascript格式,并將它推送到客戶端瀏覽器,因此實(shí)現(xiàn)了適用于所有類型的瀏覽器。
(4)Publisher:維護(hù)著一組者的列表,提供靜態(tài)接口給其他類訂閱/發(fā)布消息,當(dāng)有事件到來時,通過比較事件的主題和訂閱者的主題,將事件放入相對應(yīng)的事件隊列,并喚醒所有在此事件隊列上等待的客戶端訂閱者(PushletSubscriber)。
(5)EventSource:事件源,產(chǎn)生 Pushlet,并調(diào)用Publisher發(fā)布事件。
CDMA2000 1x EVDO網(wǎng)絡(luò)用戶數(shù)據(jù)量大,涉及到的協(xié)議較多,為了對網(wǎng)絡(luò)的整體性能均能及時、全面地進(jìn)行監(jiān)測,其實(shí)時監(jiān)測模塊的性能需求大致如下:可以選擇指定協(xié)議、指定用戶或全部用戶進(jìn)行實(shí)時跟蹤,跟蹤到的動態(tài)數(shù)據(jù)周期性地推送到客戶端瀏覽器,并能將業(yè)務(wù)實(shí)現(xiàn)流程如實(shí)記錄并通過流程圖反應(yīng)出來。
本文的實(shí)時監(jiān)測模型基于重慶電信CDMA2000 1x EVDO信令監(jiān)測系統(tǒng)項目下的一個子模塊,該系統(tǒng)采用四層B/S Web模型思想進(jìn)行系統(tǒng)的架構(gòu),采用JSP頁面開發(fā)語言,Apache服務(wù)器,Oracle數(shù)據(jù)庫,SUN Solaris服務(wù)器搭建的實(shí)驗環(huán)境作為開發(fā)環(huán)境。在任意的web瀏覽器作為客戶端,讓用戶可以在任何地方實(shí)時監(jiān)控網(wǎng)絡(luò)運(yùn)營狀況、實(shí)時跟蹤業(yè)務(wù)實(shí)現(xiàn)流程。這樣,以流程、業(yè)務(wù)為主導(dǎo),貼近運(yùn)營商,為運(yùn)營商的網(wǎng)絡(luò)優(yōu)化方案、系統(tǒng)升級、及時作出各種決策提供有效的依據(jù)。
傳統(tǒng)的實(shí)時監(jiān)測實(shí)現(xiàn)方案是在瀏覽器客戶端設(shè)置一個定時器,在該模型中假定其周期為30秒,啟動實(shí)時監(jiān)測后,客戶端每隔30秒向服務(wù)器發(fā)起一個http連接,服務(wù)器啟動后臺程序查詢數(shù)據(jù)庫并將查詢結(jié)果返回客戶端瀏覽器。
該方案實(shí)現(xiàn)比較簡單,但是缺點(diǎn)卻很明顯。啟動實(shí)時監(jiān)測后每隔30秒客戶端瀏覽器都會進(jìn)行刷新,用戶體驗較差;其次,數(shù)據(jù)量較大時,每次刷新頁面的延遲感很強(qiáng),實(shí)時性較差?;谝陨显?,選擇了基于Pushlet的實(shí)時監(jiān)測模型方案。
圖2對應(yīng)的是客戶端發(fā)出監(jiān)視命令的流程圖,具體流程如下:
首先,用戶啟動或停止實(shí)時業(yè)務(wù)監(jiān)測,客戶端代理接收用戶事件,根據(jù)監(jiān)視命令創(chuàng)建監(jiān)視任務(wù),創(chuàng)建一個與客戶端對應(yīng)的訂閱者(PushletSubscriber),創(chuàng)建成功后會向客戶端代理返回一個成功響應(yīng)。
其次, PushletSubscriber創(chuàng)建客戶端適配器,將與該客戶端對應(yīng)的訂閱者(PushletSubscriber)注冊到事件發(fā)布管理器上,周期性調(diào)用后臺查詢方法,并將數(shù)據(jù)主動推送到客戶端瀏覽器。
再次,根據(jù)客戶端的監(jiān)視命令,創(chuàng)建相應(yīng)的客戶端查看任務(wù),對其中的監(jiān)視類型和監(jiān)視對象進(jìn)行緩存,緩存是為了能夠綜合各個客戶端的命令,當(dāng)有多個客戶端同時監(jiān)控一個對象時,只需建立一個監(jiān)控對象的緩存狀態(tài)信息。
圖3 推送數(shù)據(jù)流程
圖4 業(yè)務(wù)追蹤實(shí)時監(jiān)測結(jié)果圖
最后,任務(wù)管理器根據(jù)緩存狀態(tài),向服務(wù)器返回監(jiān)視命令的響應(yīng),準(zhǔn)備推送數(shù)據(jù)。
圖3為推送數(shù)據(jù)的過程,它顯示了如何產(chǎn)生事件并將其分發(fā)到客戶端瀏覽器。網(wǎng)元適配器把數(shù)據(jù)發(fā)送給事件源管理器,事件源管理器與訂閱者進(jìn)行主題匹配,確定要發(fā)送的客戶端。若有匹配的訂閱者,則發(fā)布事件,把事件推送到客戶端適配器,將數(shù)據(jù)以JavaScript的形式發(fā)送到客戶端代理,實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時推送。
隨著手機(jī)上網(wǎng)業(yè)務(wù)的發(fā)展,手機(jī)上網(wǎng)業(yè)務(wù)類型繁多,新業(yè)務(wù)也層出不窮。用戶的手機(jī)上網(wǎng)過程,涉及到多個信令的流程,為了方便運(yùn)營商對某用戶的所有業(yè)務(wù)流程有一個直觀的了解與判斷,本模塊設(shè)計了業(yè)務(wù)流程圖功能:通過匹配某用戶的grekey值,統(tǒng)計出該用戶在某時間段內(nèi)的所有信令過程,并繪制出業(yè)務(wù)流程圖,具體步驟如下:
第一步,點(diǎn)擊某條用戶記錄的超鏈接,獲取該用戶的grekey;
第二步,依次用該grekey值分別與A11注冊記錄、PPP建立連接、PPP終止連接、A12建立連接、WAP連接過程、WAP業(yè)務(wù)過程、MMS發(fā)送過程、MMS接收過程、AAA認(rèn)證過程、AAA計費(fèi)過程等數(shù)據(jù)庫相應(yīng)的CDR表中在該時間段內(nèi)所有用戶記錄的GREKEY字段匹配,判斷其是否相等:①若匹配的grekey值相等,說明是該用戶的一條業(yè)務(wù)記錄,則繪制一條流程線,同時判斷該業(yè)務(wù)過程是否成功,若成功,則該線繪制成藍(lán)色;若失敗,則繪制成灰色;②依次對上述所有的業(yè)務(wù)過程重復(fù)上個步驟;③循環(huán)結(jié)束,則業(yè)務(wù)流程圖繪制完成。
圖5 業(yè)務(wù)流程結(jié)果圖
結(jié)果顯示模塊采用Java編程語言,利用JSP+Hibernate+Spring技術(shù)完成用戶界面的設(shè)計,供用戶查詢行為分析結(jié)果。CDMA2000 1x EVDO網(wǎng)絡(luò)由于用戶業(yè)務(wù)較多,這里提供了按不同業(yè)務(wù)進(jìn)行實(shí)時監(jiān)測的選擇。圖5是2012年3月1日在重慶電信機(jī)房的監(jiān)測結(jié)果,對用戶號碼18983699099發(fā)送彩信實(shí)時監(jiān)測功能驗證,跟蹤結(jié)果正常。啟動實(shí)時業(yè)務(wù)跟蹤后,客戶端瀏覽器不會刷新,每隔周期T(可自由設(shè)置周期,本文中設(shè)置為30秒)服務(wù)器主動向客戶端推送數(shù)據(jù),數(shù)據(jù)動態(tài)在界面上周期性累加,不會出現(xiàn)刷新和頁面停頓的感覺,實(shí)時性高,用戶體驗良好。
業(yè)務(wù)流程圖能追蹤到某具體用戶從開始監(jiān)測時刻T1到查點(diǎn)擊查看業(yè)務(wù)流程圖時刻T2之間所有業(yè)務(wù)的具體流程,方便運(yùn)營商對某用戶的所有業(yè)務(wù)流程有一個直觀的了解與判斷。如圖所示,顯示的是2012年3月30日10時開始某時段內(nèi)的某用戶所有業(yè)務(wù)流程。藍(lán)色表示成功記錄,灰色表示失敗記錄。
維護(hù)人員可以通過CDRID的超級鏈接,打開該CDR記錄的關(guān)聯(lián)流程圖,如下圖所示。通過流程圖的直觀展示,維護(hù)人員可以了解用戶操作的完整流程。對于失敗記錄,可以一目了然的發(fā)現(xiàn)失敗的環(huán)節(jié),便于問題跟蹤定位。
本文研究內(nèi)容來自重慶電信CDMA2000 1x EVDO信令監(jiān)測系統(tǒng)項目,從實(shí)時性、良好用戶體驗的角度出發(fā),基于Pushlet技術(shù)設(shè)計了一種普遍適用的用戶業(yè)務(wù)實(shí)時監(jiān)測模型,該模型能夠自動完成實(shí)時數(shù)據(jù)從服務(wù)器端推送到客戶端,并且不會出現(xiàn)延遲感和頁面刷新,有著良好的用戶體驗。同時,用戶業(yè)務(wù)流程圖可對具體用戶在某時間段內(nèi)的業(yè)務(wù)流程通過圖形形象、直觀地體現(xiàn)出來,便于運(yùn)營商的監(jiān)測。該模型可廣泛用于網(wǎng)絡(luò)監(jiān)控和維護(hù),了解網(wǎng)絡(luò)的即時運(yùn)行狀況,為運(yùn)營商為運(yùn)營商的網(wǎng)絡(luò)優(yōu)化方案、系統(tǒng)升級、及時作出各種決策提供有效的依據(jù)。
[1]景慎艷,基于Pushlet服務(wù)器推技術(shù)的研究與應(yīng)用.現(xiàn)代計算機(jī),2009(10).
[2]尤淑輝,基于Pushlet的網(wǎng)絡(luò)性能實(shí)時監(jiān)控系統(tǒng).計算機(jī)應(yīng)用,2003(12).