任廣治,畢獻(xiàn)忠
(山東省氣象服務(wù)中心,濟(jì)南 250031)
中國(guó)氣象局提出了“公共氣象服務(wù)要集約化、規(guī)?;?、品牌化發(fā)展”的戰(zhàn)略要求,姚勝[1]也認(rèn)為“隨著信息技術(shù)的不斷發(fā)展,人們對(duì)目前的氣象服務(wù)工作也有了更多的要求,所以當(dāng)下的氣象服務(wù)平臺(tái)改革迫在眉睫”。以山東省氣象部門(mén)為例,公共氣象服務(wù)多年來(lái)存在一定的短板:一是服務(wù)方式還是多以氣象網(wǎng)站、氣象短信、12121、影視等為主,各自為戰(zhàn),資源分散,難以形成統(tǒng)一的品牌效應(yīng);二是在當(dāng)今物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等新一代互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展下,傳統(tǒng)服務(wù)方式不同程度地面臨著用戶量萎縮,服務(wù)能力不強(qiáng)等諸多現(xiàn)實(shí)問(wèn)題;三是省級(jí)公共氣象服務(wù)數(shù)據(jù)處理、應(yīng)用能力不足,指導(dǎo)地市氣象局開(kāi)展公共氣象服務(wù)的手段缺乏。與此同時(shí),國(guó)內(nèi)氣象服務(wù)相關(guān)系統(tǒng)研究正逐步開(kāi)展起來(lái),姜殿榮等[2]設(shè)計(jì)了基于MVC架構(gòu)的新媒體公眾氣象服務(wù)平臺(tái),實(shí)現(xiàn)了數(shù)據(jù)的交互、共享和內(nèi)部功能模塊間的數(shù)據(jù)交互。何林等[3]利用AngularJS框架實(shí)現(xiàn)了氣象數(shù)據(jù)共享的前臺(tái)界面。王錫良[4]采用插件式開(kāi)發(fā)技術(shù)開(kāi)發(fā)了基于OSGi.NET插件框架的公共氣象服務(wù)平臺(tái)。王婉等[5]開(kāi)發(fā)了基于智慧氣象的數(shù)據(jù)接口,已為微信、微博、手機(jī)APP、網(wǎng)站等多個(gè)系統(tǒng)及保險(xiǎn)公司、市政等多個(gè)單位提供數(shù)據(jù)支撐。王壘、韓濤[6-7]等探索采用面向服務(wù)的大數(shù)據(jù)來(lái)解決氣象服務(wù)供給能力不足的問(wèn)題。公共氣象服務(wù)需要緊跟社會(huì)發(fā)展需求,不斷依靠氣象自身數(shù)據(jù)、業(yè)務(wù)、技術(shù)優(yōu)勢(shì),結(jié)合國(guó)家氣象信息化發(fā)展戰(zhàn)略,積極融入互聯(lián)網(wǎng)時(shí)代,“互聯(lián)網(wǎng)+智慧氣象”首要功能就是要讓各行各業(yè)可以通過(guò)類似API[8]的方式通過(guò)公有云輕松獲取到他們需要的氣象信息,同時(shí)通過(guò)創(chuàng)新服務(wù)產(chǎn)品,在更高的層次上引領(lǐng)社會(huì)對(duì)氣象服務(wù)的個(gè)性化需求,從而進(jìn)一步提升氣象服務(wù)內(nèi)涵,激發(fā)公共氣象服務(wù)活力。而要實(shí)現(xiàn)上述目標(biāo),高效、穩(wěn)定的數(shù)據(jù)產(chǎn)品支撐系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)就顯得尤其重要。
山東省氣象部門(mén)建設(shè)公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)主要是為了能在較短時(shí)間內(nèi)、較低的投入下,有效提升公共氣象服務(wù)部門(mén)在氣象服務(wù)技術(shù)、數(shù)據(jù)、產(chǎn)品三個(gè)方面的研發(fā)和應(yīng)用支撐能力,實(shí)現(xiàn)技術(shù)可靠、數(shù)據(jù)標(biāo)準(zhǔn)、產(chǎn)品模塊化。系統(tǒng)設(shè)計(jì)還要充分利用當(dāng)前社會(huì)資源,通過(guò)借助公有云平臺(tái)成熟的軟硬件系統(tǒng)、完善的網(wǎng)絡(luò)資源優(yōu)勢(shì),快速搭建支撐系統(tǒng)。同時(shí)要充分滿足社會(huì)對(duì)氣象服務(wù)不斷增加的需求,將數(shù)據(jù)與形式有機(jī)融合,改變過(guò)去“以文本預(yù)報(bào)代替專業(yè)服務(wù)”的模式。數(shù)據(jù)支撐系統(tǒng)架構(gòu)設(shè)計(jì)注重開(kāi)放性和拓展性,不斷提高數(shù)據(jù)共享能力,通過(guò)設(shè)定一定的授權(quán)機(jī)制和監(jiān)管制度,在遵守服務(wù)約定的前提下,讓那些授權(quán)部門(mén)或用戶通過(guò)公有云發(fā)布的API方式獲取豐富的氣象數(shù)據(jù)和產(chǎn)品。
系統(tǒng)整體架構(gòu)(見(jiàn)圖1)借鑒分層架構(gòu)設(shè)計(jì),自下而上分為5個(gè)邏輯層,分別為:基礎(chǔ)數(shù)據(jù)層、云數(shù)據(jù)層、接口層、產(chǎn)品層、應(yīng)用層。基礎(chǔ)數(shù)據(jù)層硬件部署在山東省氣象局機(jī)房,云數(shù)據(jù)層、接口層和產(chǎn)品層部署在公有云平臺(tái)上,應(yīng)用層則根據(jù)具體需要部署在本地化系統(tǒng)平臺(tái)中。各層次之間松散耦合,資源復(fù)用率高,從而降低開(kāi)發(fā)維護(hù)成本,提高了開(kāi)發(fā)的綜合效率。
基礎(chǔ)數(shù)據(jù)層:負(fù)責(zé)與CIMISS系統(tǒng)對(duì)接,主要通過(guò)MUSIC接口獲取系統(tǒng)所需的地面實(shí)況觀測(cè)數(shù)據(jù);負(fù)責(zé)從省局業(yè)務(wù)內(nèi)網(wǎng)獲取雷達(dá)、衛(wèi)星云圖數(shù)據(jù)、常規(guī)文本預(yù)報(bào)產(chǎn)品;負(fù)責(zé)通過(guò)虛擬化計(jì)算環(huán)境進(jìn)行原始數(shù)據(jù)的驗(yàn)證、加工和矢量圖片生成處理等工作;負(fù)責(zé)利用Rsnyc技術(shù),將基礎(chǔ)數(shù)據(jù)層的數(shù)據(jù)產(chǎn)品同步到公有云平臺(tái)。
圖1 山東省公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)架構(gòu)
云數(shù)據(jù)層:負(fù)責(zé)構(gòu)建數(shù)據(jù)管理平臺(tái),設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)和作業(yè)任務(wù),設(shè)計(jì)原始數(shù)據(jù)的存儲(chǔ)路徑;負(fù)責(zé)設(shè)計(jì)數(shù)據(jù)處理調(diào)度機(jī)制自動(dòng)完成原始數(shù)據(jù)的入庫(kù)或文件分類存儲(chǔ)工作,定期刪除超時(shí)數(shù)據(jù)或文件,保證數(shù)據(jù)庫(kù)和磁盤(pán)空間伸縮性。
接口層:作為核心數(shù)據(jù)引擎層,負(fù)責(zé)設(shè)計(jì)開(kāi)發(fā)、管理數(shù)據(jù)API程序,并設(shè)計(jì)有效的授權(quán)機(jī)制,鑒別用戶訪問(wèn)API的權(quán)限;負(fù)責(zé)為產(chǎn)品層通過(guò)REST的調(diào)用模式提供以JSON格式為主的數(shù)據(jù)。
產(chǎn)品層:負(fù)責(zé)將接口層獲取的數(shù)據(jù)包裝加工,嵌入到地圖(WEBGIS)、曲線、圖表或文字中,不斷開(kāi)發(fā)表現(xiàn)形式多樣的模塊化氣象服務(wù)產(chǎn)品。對(duì)于個(gè)別不適合開(kāi)發(fā)數(shù)據(jù)API的產(chǎn)品,也可以通過(guò)產(chǎn)品層直接調(diào)用云數(shù)據(jù)層的數(shù)據(jù);負(fù)責(zé)統(tǒng)計(jì)分析用戶使用產(chǎn)品的習(xí)慣,科學(xué)規(guī)劃產(chǎn)品設(shè)計(jì),調(diào)整產(chǎn)品布局。
應(yīng)用層:負(fù)責(zé)開(kāi)發(fā)設(shè)計(jì)用于客戶端展示的各類應(yīng)用。無(wú)論是APP、WEB網(wǎng)站、大屏幕顯示還是微信、微博都以后臺(tái)數(shù)據(jù)和產(chǎn)品作為支撐,根據(jù)用戶需求,靈活配置所要展示的模塊化產(chǎn)品,從而做到以人為本,按需設(shè)計(jì)。
Linux操作系統(tǒng)具有開(kāi)放、穩(wěn)定、多用戶多任務(wù)等優(yōu)勢(shì)特點(diǎn),十分適合公共氣象服務(wù)系統(tǒng)的開(kāi)發(fā)和運(yùn)行支撐。而且Linux支撐了豐富的應(yīng)用軟件,比如Apache、SSH、MySQL、PHP、Fortran77等,通過(guò)個(gè)性化的配置,能較快地搭建起具有一定服務(wù)規(guī)模的服務(wù)器運(yùn)行環(huán)境。鑒于此,整個(gè)支撐系統(tǒng)除了應(yīng)用層外,其他各個(gè)邏輯層的開(kāi)發(fā)環(huán)境都是基于Linux操作系統(tǒng),然后再根據(jù)具體開(kāi)發(fā)內(nèi)容的要求,增加相關(guān)模塊或數(shù)據(jù)庫(kù)軟件。而應(yīng)用層主要考慮開(kāi)發(fā)者在可視化界面下便于調(diào)試客戶端程序,而選擇了Windows操作系統(tǒng)以及Eclipse等開(kāi)發(fā)工具(表1)。
表1 各邏輯層次主要開(kāi)發(fā)環(huán)境
2.3.1 API技術(shù) 山東省公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)中接口層的API正是本著開(kāi)放、共享、標(biāo)準(zhǔn)化的原則設(shè)計(jì)管理API各個(gè)組件(表2)。經(jīng)過(guò)授權(quán)的開(kāi)發(fā)者,通過(guò)HTTP方式調(diào)用API,獲取需要的數(shù)據(jù)(主要為JSON格式)。開(kāi)發(fā)者不必考慮這些氣象數(shù)據(jù)來(lái)源于何處,也不用考慮平臺(tái)兼容性,獲取的數(shù)據(jù)從格式到內(nèi)容都保持了高度的一致性和標(biāo)準(zhǔn)化,從而大大降低了開(kāi)發(fā)成本,提高了數(shù)據(jù)利用效率。
在設(shè)計(jì)API過(guò)程中,注重將API參數(shù)細(xì)化(表3),零碎的數(shù)據(jù)更易于重組,便于產(chǎn)品層組合出更多的應(yīng)用產(chǎn)品,也給前端產(chǎn)品開(kāi)發(fā)者創(chuàng)造了更大的空間。下面以API-1為例,說(shuō)明用戶如何調(diào)用API。
表2 山東省公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)開(kāi)發(fā)的API列表
調(diào)用URL:http://hostname/api/surface/getsurfelebytime/?times=20190523031500& elements=station_id_c,tem,prs&staIds=54823&key=系統(tǒng)分配給用戶的key值。
表3 API-1參數(shù)表
2.3.2 WEB前端技術(shù) 有了數(shù)據(jù)基礎(chǔ),支撐系統(tǒng)還需要豐富的產(chǎn)品來(lái)應(yīng)用,本著“移動(dòng)優(yōu)先”的原則,在支撐系統(tǒng)設(shè)計(jì)開(kāi)發(fā)中,重點(diǎn)應(yīng)用了以下技術(shù)。
(1)HTML5+CSS3+jQuery+組件
采用HTML5主要是為桌面端和移動(dòng)端帶來(lái)無(wú)縫銜接的豐富內(nèi)容,利用CSS3來(lái)定義樣式使得頁(yè)面效果更加生動(dòng)整潔,利用jQuery庫(kù)增加頁(yè)面的交互效果,通過(guò)調(diào)用高德、百度地圖的JS API、Highcharts API等組件,更使得開(kāi)發(fā)的氣象服務(wù)產(chǎn)品形式靈活多樣。
(2)Bootstrap框架
Bootstrap是基于HTML5和CSS3開(kāi)發(fā)的開(kāi)源成熟框架,其更強(qiáng)大的作用在于開(kāi)發(fā)響應(yīng)式布局、移動(dòng)優(yōu)先的 WEB應(yīng)用。利用該框架,支撐系統(tǒng)產(chǎn)品層中的各類形式的氣象服務(wù)產(chǎn)品得以輕松地部署移植在各個(gè)應(yīng)用場(chǎng)合中,大大提高了開(kāi)發(fā)效率。
(3)Hybrid APP
Hybrid APP[9]兼具原生代碼良好的用戶交互體驗(yàn)和HTML5跨平臺(tái)開(kāi)發(fā)WEB的優(yōu)勢(shì),除了必要的APP框架和信息獲取通過(guò)Java編程外,其他模塊多采用HTML5頁(yè)面完成。Hybrid APP還可以根據(jù)用戶關(guān)注和訪問(wèn)統(tǒng)計(jì),隨時(shí)增減產(chǎn)品或修改界面,而這些后臺(tái)的升級(jí)操作,用戶無(wú)須重新安裝APP,便可感受到產(chǎn)品的不斷更新。
目前,山東省公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)建設(shè)已經(jīng)初具規(guī)模,高度自動(dòng)化處理技術(shù)的業(yè)務(wù)化也使得公共氣象服務(wù)業(yè)務(wù)流程得到優(yōu)化。結(jié)合用戶需求,在公有云平臺(tái)上為海量氣象數(shù)據(jù)開(kāi)發(fā)的數(shù)據(jù)API接口已有20多個(gè),為公共氣象服務(wù)提供穩(wěn)定、快速的數(shù)據(jù)訪問(wèn)途徑;開(kāi)發(fā)的基于WEB的模塊化產(chǎn)品已有30多個(gè),被靈活地嵌入APP、網(wǎng)站、微信、大屏幕等服務(wù)媒介上,完全自主研發(fā)的基于Android的“齊魯風(fēng)云” APP,集約化實(shí)現(xiàn)了省、市、縣三級(jí)應(yīng)用,在2017—2019年山東省汛期氣象服務(wù)、重大活動(dòng)保障工作中發(fā)揮了重要的輔助決策作用。尤其在“溫比亞”、“利奇馬”臺(tái)風(fēng)影響山東期間,該APP憑借數(shù)據(jù)及時(shí)、產(chǎn)品豐富、響應(yīng)快速的優(yōu)勢(shì),成為了各級(jí)氣象部門(mén)服務(wù)當(dāng)?shù)卣恼粕弦苿?dòng)氣象臺(tái),服務(wù)品牌效應(yīng)明顯。青島、威海、煙臺(tái)、聊城、東營(yíng)、萊蕪、青州等多個(gè)市縣氣象局,浪潮集團(tuán)大數(shù)據(jù)中心,山東高速集團(tuán),威海消防等部門(mén)也通過(guò)支撐系統(tǒng)構(gòu)建了本地化的服務(wù)產(chǎn)品和應(yīng)用平臺(tái)。以上實(shí)踐證明,該系統(tǒng)的建設(shè)達(dá)到了公共氣象服務(wù)集約化、易擴(kuò)展的發(fā)展目標(biāo),系統(tǒng)的數(shù)據(jù)、產(chǎn)品支撐能力也得到了具體體現(xiàn)。
(1)充分利用公有云,實(shí)現(xiàn)公共氣象服務(wù)數(shù)據(jù)共享與利用。
考慮到公共氣象服務(wù)的目標(biāo)用戶群,整個(gè)系統(tǒng)平臺(tái)大部分內(nèi)容構(gòu)建在公有云平臺(tái)上,通過(guò)租賃云主機(jī)、寬帶,部署安裝服務(wù)系統(tǒng),實(shí)現(xiàn)了公共氣象服務(wù)的數(shù)據(jù)存儲(chǔ)、信息共享、接口調(diào)用、組件開(kāi)發(fā)等多個(gè)功能需求,并通過(guò)不斷優(yōu)化公有云服務(wù)器訪問(wèn)策略,使得每個(gè)API的響應(yīng)時(shí)間控制在0.5 s之內(nèi)。
(2)重視各類氣象服務(wù)數(shù)據(jù)的完整性、有效性,降低服務(wù)差錯(cuò)。
系統(tǒng)服務(wù)以“數(shù)據(jù)為王”,公共氣象服務(wù)更是要求氣象信息“及時(shí)、可靠、準(zhǔn)確”,為此系統(tǒng)對(duì)大量的氣象服務(wù)數(shù)據(jù)做了完整性、有效性驗(yàn)證,針對(duì)氣溫、降水、風(fēng)力等敏感要素設(shè)計(jì)了有效的數(shù)據(jù)差錯(cuò)修復(fù)機(jī)制,最大程度降低平臺(tái)服務(wù)差錯(cuò)率。
(3)多種產(chǎn)品模塊高度復(fù)用,根據(jù)需要可靈活移植。
系統(tǒng)努力打造“產(chǎn)品超市”的概念,開(kāi)發(fā)的API及產(chǎn)品模塊注重細(xì)粒度化,目的是便于用戶在不同的操作系統(tǒng)、不同的客戶端高度復(fù)用移植、靈活組合,從而設(shè)計(jì)出更加個(gè)性化、精細(xì)化的應(yīng)用產(chǎn)品。
(4)統(tǒng)一標(biāo)準(zhǔn),開(kāi)放性強(qiáng),易于擴(kuò)展和管理。
“開(kāi)放、共享”是今后公共氣象服務(wù)必須面對(duì)的現(xiàn)實(shí)要求。為此系統(tǒng)在設(shè)計(jì)的每一個(gè)環(huán)節(jié)都注重標(biāo)準(zhǔn)的統(tǒng)一,從數(shù)據(jù)存儲(chǔ)的格式、路徑、命名規(guī)范到API的授權(quán)、驗(yàn)證、錯(cuò)誤碼的規(guī)范等多個(gè)細(xì)節(jié)做到明確定義,便于今后新增產(chǎn)品的擴(kuò)展和規(guī)范管理,同時(shí)有助于系統(tǒng)在安全可靠的前提下盡可能地做到充分的開(kāi)放與共享。
公共氣象服務(wù)數(shù)據(jù)產(chǎn)品支撐系統(tǒng)有效解決了氣象服務(wù)過(guò)程中主要存在的瓶頸難題,為公共氣象服務(wù)向更廣闊、更深層次的發(fā)展奠定了技術(shù)基礎(chǔ)。整個(gè)支撐系統(tǒng)完全自主開(kāi)發(fā),降低了開(kāi)發(fā)成本。支撐系統(tǒng)的應(yīng)用有效地提升了公共氣象服務(wù)的綜合能力和總體水平。下一步將圍繞該系統(tǒng)核心架構(gòu),重點(diǎn)在公有云數(shù)據(jù)安全、大數(shù)據(jù)技術(shù)應(yīng)用、多部門(mén)多行業(yè)銜接等方面加大創(chuàng)新設(shè)計(jì),為公共氣象服務(wù)提供強(qiáng)大的數(shù)據(jù)支撐。