杜建華,王立俊,王雙雙
(1.海南省氣象信息中心,???570203;2.海南省南海氣象防災(zāi)減災(zāi)重點(diǎn)實(shí)驗(yàn)室,海口 570203)
關(guān)鍵字:氣象數(shù)據(jù);數(shù)據(jù)共享;數(shù)據(jù)集約化;數(shù)據(jù)可視化;云架構(gòu)
近年來(lái),我國(guó)氣象綜合探測(cè)系統(tǒng)建設(shè)日趨完善,氣象部門已經(jīng)形成了地基和空基相結(jié)合的大氣及其相關(guān)環(huán)境探測(cè)體系,包括常規(guī)地面、高空、輻射、酸雨、農(nóng)業(yè)氣象觀測(cè)、大氣本底觀測(cè)站和其它許多特種觀測(cè)站網(wǎng)在內(nèi)的觀測(cè)體系[1],上述氣象數(shù)據(jù)為做好社會(huì)和公眾的氣象預(yù)報(bào)、預(yù)警服務(wù)奠定了堅(jiān)實(shí)的數(shù)據(jù)支撐。范保松、李嬌等人研發(fā)的氣象信息服務(wù)系統(tǒng),采用“云+端”模式,通過(guò)智慧氣象盒將氣象數(shù)據(jù)推送到展示平面,為社會(huì)公眾提供智能化、智慧化的氣象服務(wù)[2]。陜西、內(nèi)蒙古、遼寧、吉林等省市氣象局均開(kāi)展了面向公眾的信息服務(wù)網(wǎng)建設(shè)工作,均取得一定的示范作用[3-6]。
隨著海南省氣象業(yè)務(wù)的快速發(fā)展和社會(huì)公眾對(duì)氣象服務(wù)需求的日益增大,氣象資料及業(yè)務(wù)產(chǎn)品的綜合顯示需求也日益迫切。目前,我省存在傳統(tǒng)氣象資料以文件格式存儲(chǔ)在不同網(wǎng)絡(luò)區(qū)域的存儲(chǔ)設(shè)備中,各業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)格式和流向不統(tǒng)一,數(shù)據(jù)使用效率較低等問(wèn)題,急需建設(shè)一個(gè)以統(tǒng)一數(shù)據(jù)源為氣象基礎(chǔ)數(shù)據(jù)的氣象信息服務(wù)網(wǎng)。
結(jié)合我省氣象信息化業(yè)務(wù)的實(shí)際需求,海南省氣象局基于中國(guó)移動(dòng)云eCloud的云服務(wù)架構(gòu)[7],搭建以CIMISS系統(tǒng)[8-9]為數(shù)據(jù)支撐環(huán)境的海南氣象信息服務(wù)網(wǎng),實(shí)現(xiàn)氣象數(shù)據(jù)和業(yè)務(wù)產(chǎn)品的集約化和可視化,為業(yè)務(wù)用戶和社會(huì)公眾提供統(tǒng)一、豐富的氣象數(shù)據(jù)展示服務(wù)。
本文設(shè)計(jì)的信息服務(wù)網(wǎng)以中國(guó)移動(dòng)云eCloud平臺(tái)的云服務(wù)器為硬件支撐,使用CIMISS系統(tǒng)作為統(tǒng)一數(shù)據(jù)源,采用MVC分層設(shè)計(jì)模式[10-11]和Browser/Server設(shè)計(jì)架構(gòu)[12-14],基于高德地圖應(yīng)用編程API[15-16]的Web GIS可視化技術(shù)和SSH開(kāi)發(fā)框架[17-20],實(shí)現(xiàn)氣象觀測(cè)數(shù)據(jù)及業(yè)務(wù)產(chǎn)品的綜合展示,滿足業(yè)務(wù)人員及社會(huì)公眾對(duì)氣象數(shù)據(jù)及產(chǎn)品的業(yè)務(wù)需求。
系統(tǒng)總體架構(gòu)如圖1所示,系統(tǒng)遵循氣象信息標(biāo)準(zhǔn)化體系和信息安全與保障體系的要求,采用四層體系架構(gòu):1)基礎(chǔ)數(shù)據(jù)層、業(yè)務(wù)層、服務(wù)層和應(yīng)用層?;A(chǔ)數(shù)據(jù)層用于匯集各類數(shù)據(jù),通過(guò)CIMISS系統(tǒng)接入觀測(cè)數(shù)據(jù)、預(yù)報(bào)產(chǎn)品等數(shù)據(jù),并依托CIMISS系統(tǒng)建設(shè)一個(gè)統(tǒng)一數(shù)據(jù)源平臺(tái);2)業(yè)務(wù)層用于收集、解碼入庫(kù)和存儲(chǔ)地面、高空、大氣成分等結(jié)構(gòu)化數(shù)據(jù)及天氣雷達(dá)、衛(wèi)星云圖等非結(jié)構(gòu)化數(shù)據(jù),并封裝成CIMISS系統(tǒng)中的MUSIC服務(wù)接口形式向外提供服務(wù);3)服務(wù)層用于將各類氣象基礎(chǔ)數(shù)據(jù)再加工成綜合展示所需的各類服務(wù)信息及產(chǎn)品,并封裝成API服務(wù)接口供前端應(yīng)用使用;4)應(yīng)用層是通過(guò)移動(dòng)端和Web端應(yīng)用實(shí)時(shí)向省、市、縣三級(jí)業(yè)務(wù)及管理人員和政府、軍隊(duì)等單位提供各類氣象服務(wù)。
圖1 系統(tǒng)總體架構(gòu)
系統(tǒng)業(yè)務(wù)流程主要分為實(shí)況數(shù)據(jù)展示、預(yù)報(bào)預(yù)警服務(wù)、氣象決策服務(wù)和氣象服務(wù)專報(bào)四大部分,實(shí)現(xiàn)氣象觀測(cè)、預(yù)報(bào)預(yù)警和業(yè)務(wù)產(chǎn)品等數(shù)據(jù)的共享服務(wù)和綜合顯示。
1.1.1 實(shí)況數(shù)據(jù)展示
按照十四大類氣象資料的分類要求,系統(tǒng)采用資源編目統(tǒng)一對(duì)觀測(cè)業(yè)務(wù)、預(yù)報(bào)預(yù)警及臺(tái)風(fēng)路徑等數(shù)據(jù)及產(chǎn)品進(jìn)行管理,并通過(guò)Web GIS、圖片等格式實(shí)時(shí)顯示上述數(shù)據(jù)及產(chǎn)品。
1.1.2 預(yù)報(bào)預(yù)警服務(wù)
根據(jù)氣象預(yù)報(bào)、預(yù)警的內(nèi)容進(jìn)行分類,預(yù)報(bào)可分為陸地海洋、市縣天氣、鄉(xiāng)鎮(zhèn)天氣和旅游天氣等類型,預(yù)警可分為臺(tái)風(fēng)、暴雨、雷電、大霧等類型。系統(tǒng)采用信息欄目方式管理上述各類服務(wù)內(nèi)容,通過(guò)Word及txt等文檔、PNG和JPG圖片、Web GIS等格式實(shí)時(shí)顯示預(yù)報(bào)、預(yù)警內(nèi)容。
1.1.3 氣象決策服務(wù)
為政府部門、軍事部門、社會(huì)團(tuán)體等組織提供防災(zāi)減災(zāi)救災(zāi)、軍事活動(dòng)或其他特殊任務(wù)所需的各類氣象信息。系統(tǒng)通過(guò)單點(diǎn)授權(quán)登錄方式,分級(jí)管理不同用戶的訪問(wèn)權(quán)限,由氣象部門相關(guān)人員制作決策材料,為上述部門提供氣象決策服務(wù)。
1.1.4 氣象服務(wù)專報(bào)
按照服務(wù)受眾的氣象需求,定期制作和發(fā)布?xì)夂蚍治鰧?bào)、農(nóng)業(yè)氣象專報(bào)、環(huán)境氣象專報(bào)及生活指數(shù)等氣象產(chǎn)品,為社會(huì)公眾提供多樣化的氣象服務(wù)產(chǎn)品。
系統(tǒng)的統(tǒng)一數(shù)據(jù)源為CIMISS系統(tǒng)(提供MUSIC數(shù)據(jù)接口)和本地特色服務(wù)產(chǎn)品庫(kù)(提供本地?cái)?shù)據(jù)接口及產(chǎn)品存儲(chǔ)歸檔目錄),涉及到的數(shù)據(jù)類型主要有地理數(shù)據(jù)、氣象觀測(cè)數(shù)據(jù)、預(yù)報(bào)預(yù)警產(chǎn)品、系統(tǒng)公告信息等。在系統(tǒng)數(shù)據(jù)流程中,后臺(tái)數(shù)據(jù)處理節(jié)點(diǎn)分別采用MUSIC數(shù)據(jù)接口、高德地圖API接口、產(chǎn)品庫(kù)Web Service數(shù)據(jù)接口和FTP協(xié)議接口等方式來(lái)獲取綜合展示的數(shù)據(jù),大致分為如下幾種場(chǎng)景:
1)調(diào)用MUSIC數(shù)據(jù)接口獲取CIMISS系統(tǒng)中實(shí)時(shí)觀測(cè)數(shù)據(jù),在綜合觀測(cè)頁(yè)面中展示。
2)調(diào)用高德地圖API接口獲取海南省地圖矢量數(shù)據(jù),疊加實(shí)況觀測(cè)、預(yù)報(bào)預(yù)警等數(shù)據(jù),在系統(tǒng)門戶頁(yè)面中展示。
3)調(diào)用本地產(chǎn)品庫(kù)Web Service數(shù)據(jù)接口和FTP協(xié)議接口將其他氣象數(shù)據(jù)和業(yè)務(wù)產(chǎn)品采集至本地業(yè)務(wù)綜合數(shù)據(jù)庫(kù),在系統(tǒng)門戶頁(yè)面中進(jìn)行展示。
根據(jù)數(shù)據(jù)特性來(lái)決定數(shù)據(jù)存儲(chǔ)的方式,分析、總結(jié)各類氣象數(shù)據(jù),制定相應(yīng)的存儲(chǔ)方式,再通過(guò)統(tǒng)一、規(guī)范的接口對(duì)外提供數(shù)據(jù)服務(wù),系統(tǒng)的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)流程如圖2所示,主要分為以下幾個(gè)過(guò)程:1)數(shù)據(jù)收集:分發(fā)模塊CTS通過(guò)文件傳、消息和流傳輸?shù)确绞綄?shí)時(shí)收集臺(tái)站的各類氣象數(shù)據(jù),數(shù)據(jù)達(dá)到省級(jí)節(jié)點(diǎn)后,由CTS中的快速質(zhì)控程序進(jìn)行格式檢查后,再分別分發(fā)至國(guó)家級(jí)節(jié)點(diǎn)和數(shù)據(jù)加工處理模塊DPC。2)解碼入庫(kù):根據(jù)定好的資料四級(jí)編碼,DPC實(shí)時(shí)解析分發(fā)過(guò)來(lái)的數(shù)據(jù),由數(shù)據(jù)簡(jiǎn)約處理程序來(lái)解析、入庫(kù)地面、高空觀測(cè)等結(jié)構(gòu)化數(shù)據(jù),而諸如雷達(dá)、衛(wèi)星云圖等非結(jié)構(gòu)化數(shù)據(jù)由數(shù)據(jù)存儲(chǔ)管理模塊SOD上的處理程序負(fù)責(zé)解析和入庫(kù)。3)數(shù)據(jù)監(jiān)控:CIMISS中各模塊的運(yùn)行告警信息DI/EI實(shí)時(shí)推送至綜合業(yè)務(wù)監(jiān)控模塊MCP,由其統(tǒng)一進(jìn)行監(jiān)控及告警。4)數(shù)據(jù)服務(wù):通過(guò)統(tǒng)一、規(guī)范的MUSIC接口形式封裝數(shù)據(jù)庫(kù)數(shù)據(jù),向業(yè)務(wù)單位和外單位提供數(shù)據(jù)調(diào)用服務(wù)。
圖2 系統(tǒng)業(yè)務(wù)數(shù)據(jù)流程
目前,云計(jì)算架構(gòu)的分層主要?jiǎng)澐譃榛A(chǔ)設(shè)施層IaaS、平臺(tái)層PaaS和軟件服務(wù)層SaaS三個(gè)層次。其中,基礎(chǔ)設(shè)施層旨在能夠按需向用戶提供相應(yīng)的計(jì)算能力、存儲(chǔ)能力和網(wǎng)絡(luò)能力等IT基礎(chǔ)設(shè)施類服務(wù);平臺(tái)層是通過(guò)互聯(lián)網(wǎng)為用戶提供一整套開(kāi)發(fā)、運(yùn)行和運(yùn)營(yíng)應(yīng)用軟件的支撐平臺(tái);軟件服務(wù)層則是通過(guò)互聯(lián)網(wǎng)提供軟件服務(wù)的軟件應(yīng)用模式[9]。
中國(guó)移動(dòng)云的服務(wù)架構(gòu)具有良好的基礎(chǔ)支撐體系和安全防護(hù)標(biāo)準(zhǔn):1)建有N個(gè)集中節(jié)點(diǎn)、31個(gè)升級(jí)屬地化節(jié)點(diǎn)和X個(gè)邊緣節(jié)點(diǎn)的全域資源布局,全局智能流量調(diào)度和調(diào)優(yōu);2)提供多類安全服務(wù)和通信級(jí)安全體系保障。因此,本文研發(fā)的信息服務(wù)網(wǎng)以中國(guó)移動(dòng)云eCloud為應(yīng)用支撐層,使系統(tǒng)具備部署快捷、安全可靠和維護(hù)簡(jiǎn)單等特點(diǎn),較好地解決了業(yè)務(wù)系統(tǒng)部署分散、資源監(jiān)控繁雜等問(wèn)題。
高德地圖是國(guó)內(nèi)圍繞地理位置數(shù)據(jù)提供服務(wù)LBS(Location Based Services)的服務(wù)商,專注地圖,擁有國(guó)家甲級(jí)測(cè)繪資質(zhì)和先進(jìn)的數(shù)據(jù)融合技術(shù)及海量的數(shù)據(jù)處理能力,超過(guò)6 000萬(wàn)個(gè)POI,790萬(wàn)公里道路數(shù)據(jù),向廣大應(yīng)用開(kāi)發(fā)者提供覆蓋移動(dòng)端和Web端的、使用便捷的開(kāi)發(fā)工具[14]。
高德地圖支持7大類別、百余種地圖元素的顏色紋理和標(biāo)注個(gè)性化定制服務(wù),可疊加地圖路況、衛(wèi)星圖等圖層,良好地支持點(diǎn)、線、面繪制,精確地展示業(yè)務(wù)數(shù)據(jù)的位置信息,也可靈活地調(diào)用離線與在線兩種地圖樣式[15]。
各類行業(yè)用戶可通過(guò)高德地圖進(jìn)行基于地理位置的定位、導(dǎo)航、位置搜索以及周邊檢索等各類應(yīng)用;開(kāi)發(fā)人員可以利用高德地圖API/SDK服務(wù)接口調(diào)用地理信息服務(wù),將“高德地圖”的地圖服務(wù)資源嵌入到已有的各類業(yè)務(wù)系統(tǒng)(網(wǎng)站)中。
本文研發(fā)的海南氣象信息服務(wù)網(wǎng)使用瀏覽器/服務(wù)端Browser/ Server開(kāi)發(fā)模式,可跨平臺(tái)實(shí)時(shí)展示氣象觀測(cè)、預(yù)報(bào)預(yù)警服務(wù)等數(shù)據(jù)及產(chǎn)品,并采用SSH(Struts 2、Spring和Hibernate)框架技術(shù),較好地對(duì)系統(tǒng)中的各功能模塊分層、解耦,簡(jiǎn)化系統(tǒng)開(kāi)發(fā)的復(fù)雜度,減少系統(tǒng)研發(fā)周期,使系統(tǒng)具備良好的可拓展性和可移植性。
如圖3所示,Struts 2是以Webwork為核心的邏輯控制器,采用攔截器機(jī)制來(lái)響應(yīng)前端用戶提交的web請(qǐng)求,將Servlet與業(yè)務(wù)邏輯控制器分離[16]。Spring是屬于輕量級(jí)的Java Web框架,基于IOC容器技術(shù),通過(guò)配置文件及事務(wù)管理機(jī)制,可靈活管理多種數(shù)據(jù)庫(kù),提供多元化的業(yè)務(wù)邏輯[17]。Hibernate采用O/R Mapping技術(shù),通過(guò)配置XML文件或Annotation注解為Java對(duì)象和各類數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)建立一種或多種映射關(guān)系,操控對(duì)象即操作數(shù)據(jù)庫(kù)[18]。
圖3 SSH框架結(jié)構(gòu)原理圖
海南氣象信息服務(wù)網(wǎng)主要分為首頁(yè)、預(yù)報(bào)預(yù)警、氣象監(jiān)測(cè)、臺(tái)風(fēng)路徑、決策服務(wù)、氣候分析和專業(yè)氣象和系統(tǒng)管理8個(gè)功能模塊,如圖4所示。
圖4 系統(tǒng)功能組成
1)首頁(yè):
首頁(yè)是各類信息的綜合展示,系統(tǒng)提供各功能模塊的導(dǎo)航,可快速進(jìn)入到各個(gè)功能模塊。在首頁(yè)上,用戶可獲取各市縣當(dāng)前降水及氣溫等要素實(shí)況及24小時(shí)趨勢(shì)圖、全省實(shí)況填圖、雷達(dá)云圖、預(yù)警信號(hào)等信息。
2)預(yù)報(bào)預(yù)警:
預(yù)報(bào)預(yù)警用于定期發(fā)布各類氣象預(yù)報(bào)和滾動(dòng)發(fā)布及更新預(yù)警信號(hào)。用戶可在頁(yè)面查閱陸地海洋、市縣和鄉(xiāng)鎮(zhèn)等常規(guī)預(yù)報(bào)產(chǎn)品,旅游、島礁和港口等特色預(yù)報(bào)產(chǎn)品,暴雨、雷電和大霧等預(yù)警信號(hào)。
3)氣象監(jiān)測(cè):
綜合觀測(cè)主要通過(guò)Web GIS、圖片等方式來(lái)顯示各類地面、雷達(dá)和云圖等實(shí)況觀測(cè)數(shù)據(jù)。常見(jiàn)氣象要素有氣溫、氣壓、降水、風(fēng)向風(fēng)速和相對(duì)濕度,數(shù)據(jù)類型有自動(dòng)站、輻射觀測(cè)、土壤水分等地面站點(diǎn)資料,多普勒、風(fēng)廓線等雷達(dá)資料,風(fēng)云2號(hào)、風(fēng)云4號(hào)及極軌衛(wèi)星等圖片資料。
4)臺(tái)風(fēng)路徑:
臺(tái)風(fēng)路徑是基于高德地圖Web GIS展示當(dāng)前及歷史臺(tái)風(fēng)的強(qiáng)度、風(fēng)力風(fēng)圈、路徑等信息。在臺(tái)風(fēng)天氣過(guò)程中為社會(huì)公眾和業(yè)務(wù)人員提供臺(tái)風(fēng)的預(yù)報(bào)信息,提前發(fā)布預(yù)警信息,有助于防災(zāi)減災(zāi),減少人員傷亡和經(jīng)濟(jì)損失。
5)決策服務(wù):
決策服務(wù)是制作、發(fā)布?xì)庀鬀Q策材料,滿足政府部門、軍事部門、社會(huì)團(tuán)體等組織開(kāi)展活動(dòng)對(duì)氣象信息的業(yè)務(wù)需求。在活動(dòng)服務(wù)過(guò)程中,制作人員和使用人員需通過(guò)系統(tǒng)的權(quán)限驗(yàn)證后,方可閱覽相應(yīng)的決策材料。
6)氣候分析:
氣候分析是通過(guò)Word文檔形式向社會(huì)公眾提供高溫監(jiān)測(cè)、暴雨監(jiān)測(cè)、干旱監(jiān)測(cè)等中長(zhǎng)期氣候公報(bào),為森林防火、農(nóng)業(yè)生產(chǎn)、建筑施工等提供氣候預(yù)測(cè)信息,便于做好長(zhǎng)期工作計(jì)劃。
7)專業(yè)氣象:
專業(yè)氣象是通過(guò)Word、PDF等文檔形式向社會(huì)公眾提供生活指數(shù)、環(huán)境氣象、農(nóng)業(yè)氣象和氣象科普等服務(wù)產(chǎn)品,滿足上述人員對(duì)專業(yè)氣象信息的業(yè)務(wù)需求。
8)系統(tǒng)管理:
系統(tǒng)管理是為管理員提供功能模塊、系統(tǒng)用戶、站點(diǎn)管理及信息發(fā)布等部分的管理功能,便于管理員對(duì)上述內(nèi)容進(jìn)行維護(hù)更新,保證系統(tǒng)各模塊正常運(yùn)行。
系統(tǒng)運(yùn)行環(huán)境需要4臺(tái)服務(wù)器,操作系統(tǒng)均為Windows 2012 Server SP2 64bit,分別是Web應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)采集服務(wù)器和數(shù)據(jù)加工服務(wù)器。Web服務(wù)為Apache Http Server,文件服務(wù)是通過(guò)FTP協(xié)議訪問(wèn)文件,使用Surfer 8軟件在地圖上繪制圖像。
其中,Web應(yīng)用和數(shù)據(jù)庫(kù)服務(wù)器是部署在移動(dòng)eCloud云平臺(tái)上的云主機(jī),依托平臺(tái)高可靠、高安全的備份和安全防護(hù)能力,定期對(duì)云主機(jī)進(jìn)行數(shù)據(jù)備份,實(shí)現(xiàn)云平臺(tái)區(qū)域節(jié)點(diǎn)故障時(shí),可快速遷移至云平臺(tái)其他區(qū)域節(jié)點(diǎn),通過(guò)數(shù)據(jù)備份快速恢復(fù)業(yè)務(wù);同時(shí),可根據(jù)實(shí)際業(yè)務(wù)需求,彈性擴(kuò)展云主機(jī)的硬件資源。為實(shí)現(xiàn)數(shù)據(jù)的快速交互,數(shù)據(jù)采集和數(shù)據(jù)加工服務(wù)器部署在省局業(yè)務(wù)交換區(qū)中,使用虛擬機(jī)作為備用節(jié)點(diǎn),處理程序版本升級(jí)時(shí),同步物理機(jī)和虛擬上的部署程序,用于主節(jié)點(diǎn)異常時(shí),備用節(jié)點(diǎn)可無(wú)縫切換來(lái)提供服務(wù)。
系統(tǒng)部署如如圖5所示,業(yè)務(wù)核心區(qū)和交互區(qū)位于省局內(nèi)部,通過(guò)內(nèi)部氣象專線交互數(shù)據(jù),eCloud云平臺(tái)和外部用戶位于外網(wǎng)區(qū),內(nèi)外網(wǎng)之間部署有邊界防火墻,實(shí)現(xiàn)內(nèi)外網(wǎng)流量控制和訪問(wèn)控制。
圖5 系統(tǒng)部署
CIMISS系統(tǒng)負(fù)責(zé)收集、解析入庫(kù)全省的地面、高空等觀測(cè)數(shù)據(jù),并提供MUSIC數(shù)據(jù)服務(wù)接口。位于業(yè)務(wù)交互區(qū)的數(shù)據(jù)及和加工服務(wù)器,通過(guò)本地產(chǎn)品庫(kù)的Web Service和MUSIC服務(wù)接口快速地獲取所需數(shù)據(jù),加工、處理上述數(shù)據(jù),生成展示數(shù)據(jù)存儲(chǔ)至云端的數(shù)據(jù)庫(kù)服務(wù)器中,封裝成系統(tǒng)API服務(wù)接口對(duì)外提供訪問(wèn)。Web應(yīng)用服務(wù)器則根據(jù)所設(shè)計(jì)的各數(shù)據(jù)展示模塊,實(shí)時(shí)調(diào)取API接口獲取所需數(shù)據(jù),以文檔、圖片或Web GIS等方式將數(shù)據(jù)呈現(xiàn)給前端用戶。
1)數(shù)據(jù)采集及加工:
在業(yè)務(wù)交互區(qū)中的數(shù)據(jù)采集和加工服務(wù)器上部署數(shù)據(jù)采集和加工程序,該程序通過(guò)數(shù)據(jù)分類處理、壓縮推送等過(guò)程實(shí)時(shí)采集、加工CIMISS接口和其他數(shù)據(jù),并將處理后的數(shù)據(jù)實(shí)時(shí)推送至eCloud云平臺(tái)上的數(shù)據(jù)服務(wù)器中,由其進(jìn)行數(shù)據(jù)存儲(chǔ)。因此,根據(jù)業(yè)務(wù)場(chǎng)景中的數(shù)據(jù)采集流程,設(shè)計(jì)如下的數(shù)據(jù)處理及推送模塊,通過(guò)匹配數(shù)據(jù)的唯一標(biāo)識(shí)(四級(jí)編碼)來(lái)選擇數(shù)據(jù)的處理及推送方式,具體代碼如下:
public int dataProcessByType(HashMap dataObject){
//參考返回值參考表,-1為數(shù)據(jù)處理有異常,0為無(wú)數(shù)據(jù)處理,正數(shù)為已處理的數(shù)據(jù)數(shù),該模塊用于對(duì)待處理的數(shù)據(jù)進(jìn)行分類,采集、加工等行為通過(guò)相應(yīng)的進(jìn)程來(lái)處理
int resultCode = 0;
String dataType = ‘’, dataCode = ‘’;
for (Object obj : dataObject.values()){
dataCode = obj.getDataCode(); //獲取每個(gè)對(duì)象的四級(jí)編碼
//匹配數(shù)據(jù)類型
if (dataType = = ‘結(jié)構(gòu)化’){ //匹配數(shù)據(jù)的四級(jí)編碼,結(jié)構(gòu)化數(shù)據(jù)解析成存儲(chǔ)對(duì)象,用于后續(xù)入庫(kù)
if(dataCode = = ‘地面資料’){
resultCode = surfDataProcessAndPush (dataCode, obj); //調(diào)用地面資料處理模塊
}else if(dataCode = = ‘高空資料’){
resultCode = uparDataProcessAndPush (dataCode, obj); //調(diào)用高空資料處理模塊
}else{
resultCode = otherDataProcessAndPush (dataCode, obj);
}
}
else if(dataType = = ‘非結(jié)構(gòu)化’){ //按照非結(jié)構(gòu)數(shù)據(jù)的四級(jí)編碼,生成數(shù)據(jù)存儲(chǔ)路徑及相關(guān)信息
if(dataCode = = ‘衛(wèi)星資料’){
resultCode = sateDataProcessAndPush (dataCode, obj); //調(diào)用衛(wèi)星資料處理模塊
}else if(dataCode = = ‘雷達(dá)資料’){
resultCode = radrDataProcessAndPush (dataCode, obj); //調(diào)用雷達(dá)資料處理模塊
}else{
resultCode = otherDataProcessAndPush (dataCode, obj);
}
}else{
}
}
return resultCode;
}
2)數(shù)據(jù)存儲(chǔ):
數(shù)據(jù)庫(kù)服務(wù)器接收下游推送過(guò)來(lái)的數(shù)據(jù)后,根據(jù)數(shù)據(jù)的種類,采用不同的數(shù)據(jù)入庫(kù)方法:(1)對(duì)于地面、高空等結(jié)構(gòu)化數(shù)據(jù),按照數(shù)據(jù)類型和格式,存儲(chǔ)到相應(yīng)的表中;(2)對(duì)非結(jié)構(gòu)化數(shù)據(jù),同樣按照數(shù)據(jù)類型,后臺(tái)將文件歸檔存放到相應(yīng)的目錄下,并入庫(kù)文件的存放信息,便于前臺(tái)展示時(shí)快速關(guān)聯(lián)到相關(guān)文件。以下具體代碼如下:
public int dataStoreByType(HashMap dataObject, String dataType, String dataCode){
//參考返回值參考表,-1為數(shù)據(jù)處理有異常,0為無(wú)數(shù)據(jù)處理,正數(shù)為已處理的數(shù)據(jù)數(shù),該模塊用于對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行分類,入庫(kù)、歸檔存放等行為通過(guò)相應(yīng)的進(jìn)程去處理
int resultCode = 0;
//匹配數(shù)據(jù)類型
if (dataType = = ‘結(jié)構(gòu)化’){ //匹配數(shù)據(jù)的四級(jí)編碼,解析數(shù)據(jù),寫入相應(yīng)的表
for (Object obj : dataObject.values()){
if(dataCode = = ‘地面資料’){
resultCode = surfDataReceiveAndStore (dataCode, obj); //調(diào)用地面資料處理模塊
}else if(dataCode = = ‘高空資料’){
resultCode = uparDataReceiveAndStore (dataCode, obj); //調(diào)用高空資料處理模塊
}else{
resultCode = otherDataReceiveAndStore (dataCode, obj);
}
}
}else if(dataType = = ‘非結(jié)構(gòu)化’){ //按照非結(jié)構(gòu)數(shù)據(jù)的四級(jí)編碼,存放文件到指定目錄,寫入存儲(chǔ)位置信息
for (Object obj : dataObject.values()){
if(dataCode = = ‘衛(wèi)星資料’){
resultCode = sateDataReceiveAndStore (dataCode, obj); //調(diào)用衛(wèi)星資料處理模塊
}else if(dataCode = = ‘雷達(dá)資料’){
resultCode = radrDataReceiveAndStore (dataCode, obj); //調(diào)用雷達(dá)資料處理模塊
}else{
resultCode = otherDataReceiveAndStore (dataCode, obj);
}
}
}else{
}
return resultCode;
}
3)數(shù)據(jù)接口:
為便于其他業(yè)務(wù)系統(tǒng)快捷地訪問(wèn)本地特色數(shù)據(jù),上述各類氣象數(shù)據(jù)經(jīng)加工處理入庫(kù)后,通過(guò)接口模塊將數(shù)據(jù)封裝成WebService接口,對(duì)外提供數(shù)據(jù)服務(wù),外部業(yè)務(wù)系統(tǒng)調(diào)用數(shù)據(jù)接口的業(yè)務(wù)流程如圖6所示。
圖6 接口調(diào)用流程
接口調(diào)用處理主程序如下:
public void callInterfaceByType(HttpSession session){
//監(jiān)聽(tīng)用戶的接口用戶請(qǐng)求
while(!interfaceListener.stopStatus){
//獲取session中的接口請(qǐng)求信息
String userKey = session.getUserKey();
String type = session.getTyep();
String url = session.getURL();
//使用接口請(qǐng)求對(duì)象存儲(chǔ)請(qǐng)求信息
obj.setValue();
//將不同類型的接口請(qǐng)求添加到不同的處理隊(duì)列
if(type = = ‘地面接口’){
//全局變量sateDataArray;
sateDataArray.add(obj);
}else if (type = = ‘高空接口’){
//全局變量uparDataArray;
uparDataArray.add(obj);
}else{
//全局變量otherDataArray;
otherDataArray.add(obj);
}
}
}
通過(guò)不同的全局?jǐn)?shù)組變量來(lái)記錄各種用戶數(shù)據(jù)接口請(qǐng)求,系統(tǒng)后臺(tái)再通過(guò)不同的子程序去處理接口請(qǐng)求,最終生成可展示的前臺(tái)數(shù)據(jù)對(duì)象集,本文以地面接口處理子程序?yàn)槔?,后臺(tái)是通過(guò)多線程來(lái)并發(fā)處理用戶的接口請(qǐng)求的。
public void callSateInterface(){
//若無(wú)數(shù)據(jù)請(qǐng)求,則跳過(guò)處理
if (sateDataArray.Size = = 0)
return null;
for (int i = 0; i < sateDataArray.Size; i++){
//獲取線程池中的空閑線程,處理數(shù)組中的接口請(qǐng)求,返回包含請(qǐng)求數(shù)據(jù),并釋放進(jìn)程及其它資源
InterfaceThread thread = InterfaceProThreadPool.getIdleThread;
if (thread != null){
List[] resultList = thread.process (sateDataArray.get(i);
thread.close();
toDisplayData(resultList);
resultList = null;
}else{
}
}
}
系統(tǒng)性能測(cè)試分為頁(yè)面請(qǐng)求響應(yīng)速度測(cè)試和系統(tǒng)穩(wěn)定性運(yùn)行測(cè)試兩個(gè)部分。
1)頁(yè)面請(qǐng)求響應(yīng)速度測(cè)試:使用JMeter測(cè)試工具模擬30用戶分別并行訪問(wèn)交互性頁(yè)面和一般頁(yè)面50次時(shí),計(jì)算系統(tǒng)各類頁(yè)面加載的平均時(shí)間開(kāi)銷,如表1所示,交互性性頁(yè)面的平均響應(yīng)時(shí)間均小于3 000毫秒,一般頁(yè)面的平均響應(yīng)時(shí)間小于2 000毫秒,各類頁(yè)面錯(cuò)誤加載百分比小于1%。
2)系統(tǒng)穩(wěn)定性運(yùn)行測(cè)試:分別從容錯(cuò)、壓力、重復(fù)方面進(jìn)行測(cè)試系統(tǒng)的穩(wěn)定性,其中容錯(cuò)測(cè)試是在網(wǎng)絡(luò)故障、資源路徑異常等情況下測(cè)試所有功能模塊;壓力測(cè)試為10個(gè)用戶并行訪問(wèn)系統(tǒng),保證系統(tǒng)連續(xù)48小時(shí)運(yùn)行;重復(fù)測(cè)試為連續(xù)訪問(wèn)氣象觀測(cè)、預(yù)報(bào)預(yù)警、臺(tái)風(fēng)路徑等功能模塊100次,如表1所示。
表1 系統(tǒng)性能測(cè)試
測(cè)試結(jié)果表明,氣象信息服務(wù)網(wǎng)在請(qǐng)求響應(yīng)和運(yùn)行穩(wěn)定兩個(gè)部分均達(dá)到了測(cè)試預(yù)期效果,在多用戶并發(fā)訪問(wèn)下,各功能模塊運(yùn)行正常且穩(wěn)定,各類頁(yè)面加載速度較快,數(shù)據(jù)顯示準(zhǔn)確,且在網(wǎng)絡(luò)故障、系統(tǒng)資源路徑異常時(shí),頁(yè)面可正常加載并有相關(guān)提示。
根據(jù)上述的系統(tǒng)設(shè)計(jì)和關(guān)鍵技術(shù)研發(fā)本系統(tǒng)各功能模塊,實(shí)現(xiàn)預(yù)報(bào)預(yù)警、氣象監(jiān)測(cè)、臺(tái)風(fēng)路徑、專業(yè)氣象等功能模塊,如圖7所示,不僅提供氣象觀測(cè)數(shù)據(jù)、氣象預(yù)報(bào)、預(yù)警信號(hào)等數(shù)據(jù)的實(shí)時(shí)展示,還提供基于Web GIS的實(shí)況數(shù)據(jù)繪制、顯示、疊加等功能。目前,該系統(tǒng)界面友好、各功能運(yùn)行穩(wěn)定、操作簡(jiǎn)便。
圖7 系統(tǒng)頁(yè)面
海南氣象信息服務(wù)網(wǎng)建設(shè)是海南省氣象局的重要業(yè)務(wù)系統(tǒng)之一,其設(shè)計(jì)宗旨是集成各類觀測(cè)數(shù)據(jù)、預(yù)報(bào)預(yù)警產(chǎn)品等氣象信息為一體,為業(yè)務(wù)用戶和社會(huì)公眾提供統(tǒng)一、豐富的氣象數(shù)據(jù)展示服務(wù)。因此,參考中國(guó)氣象局及其他省、市縣局的建設(shè)信息服務(wù)網(wǎng)的成功經(jīng)驗(yàn),結(jié)合我省氣象業(yè)務(wù)的實(shí)際需求,依照全國(guó)氣象信息化標(biāo)準(zhǔn)化、集約化、信息化的總要求,分析、總結(jié)海南氣象信息服務(wù)網(wǎng)建設(shè)的業(yè)務(wù)流程和數(shù)據(jù)流程,詳細(xì)闡述和應(yīng)用系統(tǒng)研發(fā)所使用的數(shù)據(jù)收集加工、數(shù)據(jù)可視化等成熟可靠的關(guān)鍵技術(shù),并基于中國(guó)移動(dòng)云eCloud的云服務(wù)架構(gòu),實(shí)現(xiàn)集氣象監(jiān)測(cè)、預(yù)報(bào)預(yù)警、決策服務(wù)等功能于一體的氣象信息服務(wù)網(wǎng),系統(tǒng)運(yùn)行穩(wěn)定,安全可靠,能滿足業(yè)務(wù)用戶和社會(huì)公眾對(duì)觀測(cè)、預(yù)報(bào)等數(shù)據(jù)的服務(wù)需求。