孫周軍, 肖文名, 宋遠(yuǎn)清, 石小英, 王 壘, 陳曉宇, 何婉文
(1.廣東省氣象信息中心,廣東廣州510080;2.陜西省氣象信息中心,陜西西安710014)
為做好氣象信息實(shí)時(shí)傳輸?shù)谋O(jiān)視和管理工作,提高氣象數(shù)據(jù)通信質(zhì)量,廣東省信息中心組織研發(fā)”氣象信息實(shí)時(shí)監(jiān)視系統(tǒng)[1]”,以實(shí)現(xiàn)各類(lèi)氣象數(shù)據(jù)的收集和分發(fā)的實(shí)時(shí)監(jiān)視,并對(duì)漏收、漏發(fā)或遲收、遲發(fā)的資料進(jìn)行預(yù)警,避免資料的缺收和缺發(fā)現(xiàn)象,提高全省各類(lèi)氣象資料的傳輸時(shí)效[2]。系統(tǒng)開(kāi)發(fā)完成后,在全省氣象部門(mén)得到推廣應(yīng)用,取得較好的業(yè)務(wù)效益,同時(shí)也暴露需要改進(jìn)完善的問(wèn)題,例如系統(tǒng)響應(yīng)慢,不兼容火狐瀏覽器等。
通過(guò)調(diào)查各單位對(duì)“氣象信息實(shí)時(shí)監(jiān)視系統(tǒng)”的使用體驗(yàn),推敲系統(tǒng)實(shí)現(xiàn)中采用的具體方法,充分分析現(xiàn)有數(shù)據(jù)傳輸業(yè)務(wù)系統(tǒng)的流程,主要針對(duì)系統(tǒng)的響應(yīng)速度、用戶體驗(yàn)、系統(tǒng)穩(wěn)定性等進(jìn)行重新設(shè)計(jì)與實(shí)現(xiàn)。
目前,省級(jí)中心站對(duì)氣象資料傳輸?shù)谋U现饕揽繗庀笮畔?shí)時(shí)監(jiān)視系統(tǒng)和目錄檢索的方式;對(duì)于臺(tái)站傳輸資料的保障主要依靠測(cè)報(bào)軟件的回執(zhí)、氣象信息實(shí)時(shí)監(jiān)視系統(tǒng)的查詢功能保障資料的傳輸,另外臺(tái)站會(huì)經(jīng)常通過(guò)電話到省級(jí)中心站進(jìn)行查詢核實(shí)。分析以上的資料傳輸保障手段,存在自動(dòng)化監(jiān)視程度低,增加值班人員工作量的缺點(diǎn)。
為此,應(yīng)采用先進(jìn)的計(jì)算機(jī)技術(shù),結(jié)合移動(dòng)網(wǎng)絡(luò)或電話網(wǎng)絡(luò)[3],開(kāi)發(fā)滿足省、市、縣三級(jí)氣象資料實(shí)時(shí)監(jiān)視系統(tǒng),加強(qiáng)監(jiān)控力度,實(shí)現(xiàn)自動(dòng)化,減輕監(jiān)控和維護(hù)保障的工作量,提高資料的傳輸時(shí)效。
(1)采集資料日志。日志采集是實(shí)現(xiàn)資料傳輸監(jiān)視的核心問(wèn)題。日志采集的時(shí)間點(diǎn)與環(huán)節(jié)這兩大因素,直接影響監(jiān)視系統(tǒng)的效率。觀測(cè)資料傳輸及時(shí)性與完整性是信息網(wǎng)絡(luò)業(yè)務(wù)維護(hù)保障的核心內(nèi)容,因此,日志的提取處理必須避免對(duì)資料完整性與傳輸時(shí)效性的影響。
(2)合理組織數(shù)據(jù)。針對(duì)原有監(jiān)視系統(tǒng)響應(yīng)速度慢問(wèn)題,設(shè)計(jì)優(yōu)化合理的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),有助于降低監(jiān)視系統(tǒng)開(kāi)發(fā)的復(fù)雜度,同時(shí)能夠提升系統(tǒng)響應(yīng)用戶請(qǐng)求的速度。
(3)監(jiān)視界面的設(shè)計(jì)。信息傳輸狀態(tài)的查詢、展示是監(jiān)視系統(tǒng)開(kāi)發(fā)成敗的主要因素之一。優(yōu)良合理的監(jiān)視布局對(duì)用戶而言,能方便清晰地展現(xiàn)用戶所關(guān)心的信息。因此,系統(tǒng)的操作應(yīng)該遵循用戶的使用習(xí)慣,展示的信息要正確、及時(shí)和完整。
圖1顯示了實(shí)時(shí)監(jiān)視系統(tǒng)的層次結(jié)構(gòu),可分為4個(gè)層次:數(shù)據(jù)采集層、數(shù)據(jù)層、邏輯層和展現(xiàn)層。數(shù)據(jù)采集層主要是在接收到臺(tái)站資料或?qū)①Y料發(fā)送到國(guó)家局后,采集資料信息數(shù)據(jù),另外對(duì)已采集到的資料信息數(shù)據(jù)進(jìn)行統(tǒng)計(jì)加工處理。數(shù)據(jù)層主要以合理的數(shù)據(jù)結(jié)構(gòu)存貯數(shù)據(jù)采集層采集的數(shù)據(jù)并提供數(shù)據(jù)存取服務(wù)。邏輯層主要負(fù)責(zé)解析用戶發(fā)出的訪問(wèn)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行業(yè)務(wù)邏輯計(jì)算處理并返回結(jié)果。展現(xiàn)層主要負(fù)責(zé)將采集到和經(jīng)過(guò)統(tǒng)計(jì)加工的數(shù)據(jù)通過(guò)Web以圖表的形式展現(xiàn)給用戶。
系統(tǒng)不同的用戶,對(duì)系統(tǒng)功能的關(guān)注范圍也有所不同:
(1)基層臺(tái)站使用單位:注重了解觀測(cè)資料是否已經(jīng)及時(shí)傳輸?shù)绞⌒畔⒅行摹?/p>
(2)省級(jí)信息中心用戶:一方面注重及時(shí)全面了解各類(lèi)資料各測(cè)報(bào)單位是否傳輸規(guī)定的報(bào)文,另外注重監(jiān)視收到的資料是否傳輸?shù)絿?guó)家氣象信息中心。
(3)省級(jí)業(yè)務(wù)管理部門(mén)用戶:注重某段時(shí)間窗內(nèi)全省各類(lèi)資料的傳輸質(zhì)量統(tǒng)計(jì),并注重掌握傳輸質(zhì)量低的測(cè)站單位與資料類(lèi)別。
系統(tǒng)在進(jìn)行具體設(shè)計(jì)實(shí)現(xiàn)時(shí),充分考慮各用戶群的關(guān)注焦點(diǎn),將系統(tǒng)功能劃分為:傳輸質(zhì)量、詳細(xì)查詢、實(shí)時(shí)監(jiān)視和系統(tǒng)管理4個(gè)主要模塊。
圖2為傳輸質(zhì)量的主界面,主要完成信息傳輸及時(shí)率、缺報(bào)率等統(tǒng)計(jì)結(jié)果的展示。針對(duì)省、市業(yè)務(wù)管理部門(mén)用戶,提供年度、整月、周和天全省氣象信息傳輸及時(shí)率對(duì)照?qǐng)D表;提供年度、整月、周和天各市氣象信息傳輸及時(shí)率對(duì)照?qǐng)D表;提供某類(lèi)資料逐月、逐天和24小時(shí)各區(qū)縣氣象信息傳輸及時(shí)率對(duì)照表。
圖1 系統(tǒng)結(jié)構(gòu)
圖2 傳輸質(zhì)量模塊
圖3為詳情查詢的主界面。針對(duì)臺(tái)站和省級(jí)用戶,主要實(shí)現(xiàn)氣象信息資料收發(fā)情況的詳情展示。可根據(jù)用戶選擇的時(shí)次、地市和資料類(lèi)別等條件迅速檢索出該類(lèi)資料的接收與發(fā)送情況。展示的內(nèi)容主要包括資料類(lèi)別、資料時(shí)次、接收與發(fā)送時(shí)間和資料到達(dá)時(shí)的字節(jié)數(shù)。其中,資料字節(jié)數(shù)信息是對(duì)舊系統(tǒng)非常實(shí)用的改進(jìn)功能,在發(fā)生臺(tái)站傳輸空?qǐng)?bào)文而發(fā)生爭(zhēng)議時(shí),該功能便可以提供有力的證據(jù)。
圖3 詳細(xì)查詢模塊
圖4為省級(jí)實(shí)時(shí)監(jiān)視的主界面,按照資料類(lèi)別進(jìn)行分類(lèi),并將每類(lèi)資料按照觀測(cè)時(shí)間進(jìn)行全天顯示,對(duì)于高密度觀測(cè)時(shí)次資料,則顯示2個(gè)小時(shí)內(nèi)所有觀測(cè)時(shí)間資料的時(shí)效情況。其中:包括報(bào)文及時(shí)到達(dá);超時(shí)效缺報(bào)及報(bào)文缺;報(bào)文逾限到達(dá)。對(duì)于省級(jí)用戶,可以監(jiān)視到省內(nèi)所有站點(diǎn)某類(lèi)報(bào)文24小時(shí)內(nèi)所有時(shí)次的到報(bào)情況;對(duì)于臺(tái)站用戶,可以監(jiān)視到自身臺(tái)站需要觀測(cè)的資料的24小時(shí)內(nèi)所有時(shí)次的到報(bào)情況,且該監(jiān)視內(nèi)容在2分鐘進(jìn)行一次刷新,確保監(jiān)視的及時(shí)性。
圖4 省級(jí)實(shí)時(shí)監(jiān)視模塊
系統(tǒng)管理主要提供系統(tǒng)基礎(chǔ)信息配置,針對(duì)省級(jí)信息中心用戶,可以進(jìn)行各類(lèi)資料考核時(shí)效的管理,考核站點(diǎn)信息的管理,通過(guò)使用說(shuō)明檢索系統(tǒng)各功能的使用方法。另外提供用戶關(guān)注臺(tái)站的設(shè)置功能,系統(tǒng)各模塊根據(jù)設(shè)置的關(guān)注臺(tái)站進(jìn)行數(shù)據(jù)的統(tǒng)計(jì)查詢。
充分利用Oracle數(shù)據(jù)庫(kù)索引技術(shù),提高SQL語(yǔ)句的執(zhí)行效率。程序開(kāi)發(fā)人員在執(zhí)行SQL語(yǔ)句時(shí)要采用一定策略利用索引,并且將有索引的字段放在Where條件的前面,如果查詢不使用索引或索引失效的情況下,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)進(jìn)行全表掃描,執(zhí)行效率非常慢。對(duì)于Oracle而言,在某日期字段A上建有索引,若使用“=”符號(hào)進(jìn)行匹配檢索,執(zhí)行效率非常高;但對(duì)于需要跨天的查詢?nèi)羰褂谩埃?”與“<=”符號(hào)進(jìn)行匹配檢索,此時(shí)索引失效,執(zhí)行效率很低。所以在信息查詢模塊的實(shí)現(xiàn)中,對(duì)用戶請(qǐng)求的開(kāi)始時(shí)間與結(jié)束時(shí)間進(jìn)行分情況處理,例如若用戶需要檢索2011-12-01 01:00:00到2011-12-01 23:45:00的數(shù)據(jù)時(shí),SQL1=Where年月日字段=“2011-12-01”and時(shí)分秒字段 >=“01:00:00”and時(shí)分秒字段 <=“23:45:00”;SQL2=Where年月日時(shí)分秒字段>=“2011-12-01 01:00:00”and年月日時(shí)分秒字段<=“2011-12-01 23:45:00”,SQL1的執(zhí)行效率要遠(yuǎn)遠(yuǎn)高于SQL2。
傳輸詳細(xì)信息便按月分表存儲(chǔ),數(shù)據(jù)量較大。在實(shí)時(shí)信息查詢中必須根據(jù)用戶選擇的時(shí)間窗給出結(jié)果。為簡(jiǎn)化復(fù)雜的業(yè)務(wù)邏輯并提高開(kāi)發(fā)效率,快速顯示數(shù)據(jù),系統(tǒng)將12個(gè)月表聯(lián)合創(chuàng)建1個(gè)視圖,對(duì)用戶的查詢請(qǐng)求通過(guò)查詢視圖而獲取結(jié)果[4-5],避免跨越查詢需要修改檢索Sql中表名的問(wèn)題。
豎表是普通的建表方式,如表結(jié)構(gòu)為:主鍵、站點(diǎn)、資料時(shí)次、時(shí)效;如果變成橫表后,則結(jié)構(gòu)為:主鍵、站點(diǎn)、時(shí)效+資料時(shí)次1、時(shí)效+資料時(shí)次2、時(shí)效+資料時(shí)次3……實(shí)時(shí)監(jiān)視模塊中的監(jiān)視數(shù)據(jù)展現(xiàn)便是橫表的方式,而數(shù)據(jù)庫(kù)中的存儲(chǔ)是采用豎表的方式,Decode函數(shù)是Oracle的Sql語(yǔ)言中特有的性質(zhì),通過(guò)該函數(shù)可以實(shí)現(xiàn)表格的置換,從而方便的實(shí)現(xiàn)某地區(qū)一種資料所有時(shí)次傳輸時(shí)效的顯示。
對(duì)于用戶的統(tǒng)計(jì)請(qǐng)求,如果實(shí)時(shí)的從海量原始數(shù)據(jù)中進(jìn)行統(tǒng)計(jì)計(jì)算,每次相同的請(qǐng)求,都需要進(jìn)行實(shí)時(shí)統(tǒng)計(jì)計(jì)算,給系統(tǒng)造成較大壓力,并且讓用戶等待較長(zhǎng)時(shí)間。系統(tǒng)從管理用戶角度出發(fā),對(duì)海量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)預(yù)處理,形成符合管理部門(mén)需求的中間統(tǒng)計(jì)結(jié)果進(jìn)行存儲(chǔ)。對(duì)于統(tǒng)計(jì)訪問(wèn)請(qǐng)求,能夠直接在中間統(tǒng)計(jì)結(jié)果中進(jìn)行簡(jiǎn)單查詢,同樣滿足用戶統(tǒng)計(jì)訪問(wèn)請(qǐng)求。與實(shí)時(shí)統(tǒng)計(jì)計(jì)算方法比較,只需要計(jì)算一次統(tǒng)計(jì)結(jié)果,產(chǎn)生較小的系統(tǒng)負(fù)荷,并無(wú)需較長(zhǎng)時(shí)間等待,傳輸時(shí)效統(tǒng)計(jì)模塊的實(shí)現(xiàn)采用方法取得較好效果。
目前瀏覽器種類(lèi)繁多,同一網(wǎng)頁(yè)在其中的運(yùn)行效果有所偏差或無(wú)法使用,原因在于廠商在瀏覽器實(shí)現(xiàn)中采用的標(biāo)準(zhǔn)或技術(shù)有所差別,網(wǎng)頁(yè)的開(kāi)發(fā)中涉及的JavaScript腳本與Css樣式技術(shù)在不同瀏覽器中的使用方法不同。為使系統(tǒng)能跨瀏覽器運(yùn)行,采用JQuery腳本類(lèi)庫(kù)進(jìn)行實(shí)現(xiàn),它是一套跨瀏覽器的基礎(chǔ)腳本庫(kù),實(shí)現(xiàn)中涉及到的所有腳本程式均基于該類(lèi)庫(kù)開(kāi)發(fā)。另外在編寫(xiě)系統(tǒng)的Css樣式時(shí),在樣式文件中一個(gè)樣式控制語(yǔ)句按照多種語(yǔ)法進(jìn)行編寫(xiě),達(dá)到多瀏覽器正確顯示的效果。
Spring是一個(gè)基于控制反轉(zhuǎn)(Inversion of Control,IoC)和面向方面編程(Aspect Oriented Programming,AOP)的構(gòu)建多層[4]J2EE系統(tǒng)的框架[6],對(duì)現(xiàn)存的各種框架如Struts、JSF、Hibernate等提供了相應(yīng)的整合框架。利用框架進(jìn)行系統(tǒng)開(kāi)發(fā)可有效的提高開(kāi)發(fā)效率,使系統(tǒng)邏輯關(guān)系清晰,并具有較好的可擴(kuò)展性。
經(jīng)過(guò)改進(jìn)之后的系統(tǒng),瀏覽器兼容性得到增強(qiáng),系統(tǒng)的響應(yīng)速度大幅度提高,系統(tǒng)采用了圖表和條件選擇面板等功能之后,用戶的體驗(yàn)效果得到進(jìn)一步改善。
將改進(jìn)后的系統(tǒng)與之前的系統(tǒng)分別在 IE(6,7,8,9)、firefox、Mac、Safari、遨游、360、QQ 瀏覽器進(jìn)行功能測(cè)試,新系統(tǒng)布局和功能均正常表現(xiàn)良好;但舊系統(tǒng)則在firefox、Mac、Safari、遨游瀏覽器上布局和功能發(fā)生異常行為或無(wú)法使用。
表1 系統(tǒng)改進(jìn)前后對(duì)瀏覽器兼容性測(cè)試分析標(biāo)
采用Charles工具監(jiān)視系統(tǒng)的HT TP請(qǐng)求,采集返回字節(jié)數(shù)、耗時(shí)等詳細(xì)信息,計(jì)算出系統(tǒng)響應(yīng)的平均速度。分別訪問(wèn)舊系統(tǒng)與系統(tǒng)相同的功能模塊,得到對(duì)比圖5、圖6,監(jiān)控模塊與統(tǒng)計(jì)模塊的系統(tǒng)響應(yīng)速度平均有31倍的性能提升,最小11倍,最高達(dá)到70倍。表明采用數(shù)據(jù)庫(kù)索引、視圖、預(yù)處理和數(shù)據(jù)結(jié)構(gòu)優(yōu)化技術(shù)取得明顯效果。
(1)臺(tái)站用戶需要一次能夠看到一種資料24小時(shí)的報(bào)文傳輸時(shí)效,舊系統(tǒng)需要實(shí)現(xiàn)這種需求則需要選定24次查詢條件,并點(diǎn)擊24次查詢按鈕,才可達(dá)到用戶的上述需求。新系統(tǒng)則對(duì)這點(diǎn)進(jìn)行了改進(jìn),只需點(diǎn)擊一次,便可看到24小時(shí)的報(bào)文傳輸時(shí)效。
(2)傳輸質(zhì)量統(tǒng)計(jì)模塊實(shí)現(xiàn)中,采用三維柱狀圖表與線性圖表分別展示某時(shí)間窗內(nèi)各種資料的傳輸時(shí)效、某類(lèi)資料各市區(qū)和站傳輸時(shí)效對(duì)比等,用戶更加直觀了解資料的傳輸情況與對(duì)比情況。
(3)實(shí)現(xiàn)時(shí)間選擇面板,用戶可以方便的將檢索時(shí)間窗設(shè)置在某年、月、周、日內(nèi),并利用新設(shè)置時(shí)間條件運(yùn)行當(dāng)前模塊,改變傳統(tǒng)的需要選擇開(kāi)始、結(jié)束時(shí)間的做法。
(4)用戶可設(shè)置所關(guān)注資料傳輸時(shí)效的臺(tái)站,一次設(shè)置后,下次從同一臺(tái)終端進(jìn)入系統(tǒng)則默認(rèn)展現(xiàn)為用戶所設(shè)置臺(tái)站的資料傳輸時(shí)效。
系統(tǒng)的設(shè)計(jì)并非完美,需要對(duì)下列問(wèn)題進(jìn)行思考并給予解決:(1)日志提取環(huán)節(jié)改進(jìn):在報(bào)文發(fā)送到國(guó)家氣象信息中心的環(huán)節(jié)提取接收日志不合理。因?yàn)閺慕邮盏絺鬏斀o國(guó)家局之間有一定的時(shí)延,在資料傳輸國(guó)家局時(shí)提取資料接收日志,間接地增加臺(tái)站用戶了解資料是否上傳到信息中心的時(shí)延。臺(tái)站用戶需要及時(shí)了解省信息中心收?qǐng)?bào)情況,所以這種不合理可能導(dǎo)致用戶不使用系統(tǒng)進(jìn)行查詢,而直接電話省氣象信息中心咨詢,或直接進(jìn)入接收目錄進(jìn)行查詢,弱化了系統(tǒng)建設(shè)的實(shí)用性。圖7、圖8分別給出改進(jìn)前后的日志提取流程,并且需要在以后開(kāi)發(fā)中解決。改進(jìn)可以提高系統(tǒng)采集資料接收日志的及時(shí)性,減少臺(tái)站值班人員查詢資料到達(dá)省信息中心的等待時(shí)間。
(2)語(yǔ)音電話追報(bào):在省氣象信息中心人員發(fā)現(xiàn)有臺(tái)站在時(shí)效警戒時(shí)間內(nèi)還未發(fā)報(bào)時(shí),中心值班人員需要電話提醒臺(tái)站發(fā)報(bào)人,目前人工進(jìn)行電話追報(bào),給值班人員帶來(lái)很大壓力。結(jié)合語(yǔ)音電話系統(tǒng),將未發(fā)報(bào)的告警提示信息自動(dòng)撥打到臺(tái)站值班電話或值班負(fù)責(zé)人手機(jī)進(jìn)行語(yǔ)音提示,可減少避免人工電話追報(bào)的工作任務(wù)[7]。
改進(jìn)后的氣象信息實(shí)時(shí)監(jiān)視系統(tǒng)投入試運(yùn)行以來(lái),得到全省市、縣氣象工作人員的廣泛使用,在系統(tǒng)反映速度、用戶體驗(yàn)等細(xì)節(jié)上給出了較高的評(píng)價(jià)。系統(tǒng)的建立與改善對(duì)提高廣東省實(shí)時(shí)氣象資料的傳輸時(shí)效起到了很好的保障作用。
[1] 梁慎青,石小英,梁苑苑,等.氣象信息實(shí)時(shí)監(jiān)視系統(tǒng)的開(kāi)發(fā)及應(yīng)用[J].廣東氣象,2009,31(1):57-59.
[2] 孫林花,李仲龍,孫潤(rùn),等.基于元數(shù)據(jù)技術(shù)的氣象數(shù)據(jù)收發(fā)全網(wǎng)監(jiān)視系統(tǒng)[J].干旱氣象,2009,27(3):294-297.
[3] 梁海河,孟昭林,張春暉,等.綜合氣象觀測(cè)運(yùn)行監(jiān)控系統(tǒng)[J].氣象,2011,37(10):1292-1300.
[4] 羅琦,韓茜,李文莉,等.基于WEBGIS的氣象科學(xué)數(shù)據(jù)查詢顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].干旱氣象,2010,28(4):494-498.
[5] 沙莎,邱新法,何永健.基于GIS的自動(dòng)氣象站數(shù)據(jù)系統(tǒng)的研發(fā)[J].干旱氣象.2011,29(3):372-376.
[6] 孔霞,呂峰.基于Spring的Web框架的設(shè)計(jì)以及其應(yīng)用[J].電腦知識(shí)與技術(shù).2009,5(18):5050-5052.
[7] 冉井旺,戴滔.語(yǔ)音報(bào)警在集中監(jiān)控系統(tǒng)中的設(shè)計(jì)應(yīng)用[J].自動(dòng)化應(yīng)用.2011,(3):1-3.