殷美祥,羅曼寧,林江,陳萬里
(廣東省氣象服務(wù)中心,廣東廣州 510080)
?
停課鈴桌面插件系統(tǒng)的設(shè)計與實現(xiàn)
殷美祥,羅曼寧,林江,陳萬里
(廣東省氣象服務(wù)中心,廣東廣州 510080)
摘 要:為了在PC端建立一個可實現(xiàn)“主動推送”停課消息和預(yù)警信息的服務(wù)渠道,開發(fā)停課鈴桌面插件系統(tǒng)。停課鈴桌面插件系統(tǒng)采用模塊化低耦合架構(gòu)設(shè)計,其推送網(wǎng)關(guān)運用Node.js平臺,與突發(fā)公共事件預(yù)警信息發(fā)布系統(tǒng)建立TCP長連接,實時接收預(yù)警、停課消息,并向客戶端推送,使其成為氣象部門一個新的應(yīng)急氣象高效服務(wù)渠道。停課鈴桌面插件還擁有天氣實況、逐天預(yù)報、逐時預(yù)報、空氣質(zhì)量等多個功能模塊,是公眾安排工作生活事宜的參考“利器”。
關(guān)鍵詞:計算機技術(shù)與應(yīng)用;停課鈴;預(yù)警;氣象服務(wù)
資金項目:廣東山洪地質(zhì)災(zāi)害防治氣象保障工程服務(wù)管理系統(tǒng)之山洪預(yù)警信息推送系統(tǒng)
殷美祥,羅曼寧,林江,等.停課鈴桌面插件系統(tǒng)的設(shè)計與實現(xiàn)[J].廣東氣象,2016,38(3):77 -80.
隨著廣東社會經(jīng)濟的快速發(fā)展,公眾對應(yīng)急氣象服務(wù)的關(guān)注度越來越高,需求日益增多[1 -4]。應(yīng)急氣象服務(wù)同時也是氣象現(xiàn)代化建設(shè)的重要組成部分,省委省政府對氣象災(zāi)害預(yù)警和突發(fā)事件預(yù)警信息發(fā)布工作高度重視。目前,PC端的氣象服務(wù)渠道主要是微博、網(wǎng)站。微博、網(wǎng)站與用戶之間是一種“弱關(guān)系”[5 -8],若用戶不主動關(guān)注實時消息,氣象信息往往被“消息海洋”所淹沒,氣象部門難以根據(jù)用戶的特定需要,進(jìn)行主動的,點對點的推送消息服務(wù)?!稄V東省氣象災(zāi)害防御條例》2015年3月1日起正式施行,明確規(guī)定氣象部門發(fā)布的臺風(fēng)黃色、橙色、紅色預(yù)警信號和暴雨紅色預(yù)警信號為停課信號。停課消息作為與公眾生活密切相關(guān)的消息,需要及時有效地推送給公眾。開發(fā)“停課鈴”桌面插件系統(tǒng),可在PC端建立一個新的應(yīng)急氣象服務(wù)渠道,借助其高效的“主動推送”功能,開展基于地理位置精細(xì)化的氣象服務(wù)和應(yīng)急氣象服務(wù),有利于擴大公共氣象服務(wù)覆蓋面,加強服務(wù)渠道響應(yīng)和傳播能力,提高氣象服務(wù)靶向性,從而有利于推進(jìn)公眾認(rèn)知“感覺到是”的氣象現(xiàn)代化建設(shè)[8 -10]。
停課鈴系統(tǒng)采用模塊化低耦合架構(gòu)設(shè)計,分為管理平臺、數(shù)據(jù)存儲、推送網(wǎng)關(guān)、軟件開發(fā)工具包(SDK)和桌面客戶端5個模塊,各模塊之間通過松耦合連接,如圖1。系統(tǒng)采用Socket進(jìn)行數(shù)據(jù)通信,使用自定義協(xié)議進(jìn)行數(shù)據(jù)封裝。該系統(tǒng)采用分層設(shè)計,分為接口層、應(yīng)用層、支撐層和數(shù)據(jù)層4層結(jié)構(gòu)。各層之間的通訊以及底層的服務(wù)是企業(yè)應(yīng)用服務(wù)器構(gòu)建的SOA架構(gòu),以企業(yè)服務(wù)總線(ESB)的方式對外提供服務(wù)。企業(yè)服務(wù)總線是SOA參考架構(gòu)的核心。它為整個架構(gòu)范圍內(nèi)所有服務(wù)提供相互通訊的能力。
各層劃分和功能模塊如,圖1所示。
圖1 系統(tǒng)架構(gòu)圖
應(yīng)用層:包括天氣實況、逐天預(yù)報、逐時預(yù)報、空氣質(zhì)量、預(yù)警數(shù)據(jù)功能模塊。
接口層:為外部終端及第三方接入商,提供多種接口方式,通過接口實現(xiàn)氣象數(shù)據(jù)交互與通信。
推送網(wǎng)關(guān):與接口層進(jìn)行通信,解析各類請求并通過解密程序?qū)崿F(xiàn)參數(shù)傳遞與數(shù)據(jù)交互。監(jiān)控各socket接口、服務(wù)器狀態(tài)等信息,結(jié)合業(yè)務(wù)調(diào)度模塊實現(xiàn)資源的合理性分配。
數(shù)據(jù)層:基于騰訊云的云服務(wù)器、云數(shù)據(jù)技術(shù)。騰訊云具備主從備份的數(shù)據(jù)庫服務(wù)、負(fù)載均衡等有效增強底層可靠性及穩(wěn)定性。
2.1推送網(wǎng)關(guān)架構(gòu)
由于在有災(zāi)害天氣過程時,可能需要接受大量公眾同時請求連接。推送網(wǎng)關(guān)是作為整個客戶端的后端服務(wù)器架構(gòu)存在,必須能夠支撐用戶客戶端的各項數(shù)據(jù)請求。如果使用Java?和PHP語言,每個連接都會生成一個新線程,每個新線程可能需要2 MB的配套內(nèi)存。在一個擁有8 GB RAM的系統(tǒng)上,理論上最大的并發(fā)連接數(shù)量是4 000個用戶。隨著客戶群的增長,Web應(yīng)用程序需要支持更多用戶,需要通過添加更多服務(wù)器來解決這一問題,從而增加服務(wù)器成本、流量成本和人工成本等。另外,用戶可能針對每個請求使用不同的服務(wù)器,任何共享資源只能在所有服務(wù)器之間共享,所以整個Web應(yīng)用程序架構(gòu)(包括流量、處理器速度和內(nèi)存速度)中硬件資源很可能會出現(xiàn)瓶頸。停課鈴?fù)扑途W(wǎng)關(guān)采用Node.js平臺進(jìn)行開發(fā),基于事件驅(qū)動及異步I/ O,處理龐大的并且高吞吐量的并發(fā)連接,使得單機數(shù)十萬級能同時在線,推送消息秒級可達(dá)[11 -14]。另外,推送網(wǎng)關(guān)根據(jù)突發(fā)公共事件預(yù)警信息交互協(xié)議(CAP),通過socket與突發(fā)中控建立TCP長連接,當(dāng)接收到突發(fā)中控平臺預(yù)警數(shù)據(jù)后,通過VPN網(wǎng)絡(luò)安全連接到騰訊云的推送集群,推送集群按照用戶訂閱的位置以及預(yù)警類別、等級,發(fā)布相應(yīng)預(yù)警信息。
推送網(wǎng)關(guān)的數(shù)據(jù)庫采用MongoDB,數(shù)據(jù)庫之間進(jìn)行主從備份,每天各集群間的數(shù)據(jù)實時同步,以保證數(shù)據(jù)的統(tǒng)一性和完整性。這樣便于在后續(xù)的擴容階段,直接通過增加服務(wù)器即可滿足擴容要求。
采用上述機制,一個組件負(fù)責(zé)推送數(shù)據(jù)的發(fā)送,一個組件負(fù)責(zé)推送數(shù)據(jù)的寫入,一個組件負(fù)責(zé)整個過程的監(jiān)控與異常處理,在整個推送過程中,如果某條數(shù)據(jù)發(fā)送失敗,組件根據(jù)返回的結(jié)果狀態(tài),決定是否再次發(fā)送或者寫入內(nèi)存的虛擬庫中,使得預(yù)警信息和停課消息推送更加及時可靠,讓停課鈴桌面插件成為氣象部門新的一個應(yīng)急氣象服務(wù)高效渠道。
2.2自動更新
隨著業(yè)務(wù)發(fā)展,停課鈴可能調(diào)整或增加各項功能模塊,包括后臺接口參數(shù)變更、頁面布局調(diào)整、功能增強與優(yōu)化、網(wǎng)關(guān)服務(wù)器配置信息變更等,所以必須能夠自動更新。通過管理后臺發(fā)布客戶端整體版本與客戶端階段性的補丁版本,然后客戶端與管理后臺進(jìn)行通信,當(dāng)發(fā)現(xiàn)管理后臺的客戶端版本出現(xiàn)變化時,及時通知客戶端進(jìn)行版本升級,為后期維護以及提升服務(wù)打下基礎(chǔ)(圖2)。
圖2 自動更新機制示意圖
3.1天氣實況模塊
天氣實況模塊,包含當(dāng)前的氣溫、相對濕度、風(fēng)力風(fēng)向、空氣質(zhì)量、天空狀況。用戶不僅可以方便地查詢當(dāng)?shù)氐奶鞖馇闆r,還可以查詢?nèi)珖渌貐^(qū)的天氣信息(圖略)。
由于實況數(shù)據(jù)具有實時性、時效性、及時性、地區(qū)性等特點,需要根據(jù)用戶所設(shè)點的位置及當(dāng)前的時間不停地變化。為了滿足這些要求,客戶端的實況數(shù)據(jù)模塊,采用守護進(jìn)程和心跳的方式,每6 min與推送網(wǎng)關(guān)進(jìn)行一次通信,滿足與推送網(wǎng)關(guān)的最新數(shù)據(jù)交互,最大程度地確保實況數(shù)據(jù)及時、準(zhǔn)確。
3.2逐天預(yù)報模塊
由于如今人們對預(yù)報,尤其是未來多天的預(yù)報要求越來越高,停課鈴設(shè)置逐天預(yù)報模塊。逐天預(yù)報數(shù)據(jù)基于用戶所設(shè)置的位置,顯示6d的天氣情況,包括氣溫、風(fēng)力風(fēng)向、天空狀況。每天預(yù)報數(shù)據(jù)分欄顯示,清晰直觀地體現(xiàn)天氣趨勢變化。
3.3逐時預(yù)報模塊
對于廣東省內(nèi)各個地區(qū),設(shè)置了逐時預(yù)報模塊,顯示當(dāng)前位置的24 h精細(xì)化預(yù)報。從當(dāng)前時間開始,提供每小時的氣溫和天氣狀況,從中可以清晰地顯示出降雨加強或減弱、氣溫上升或下降的變化趨勢,方便用戶安排穿衣、出行、洗車、運動等各項事宜。
3.4空氣質(zhì)量模塊
停課鈴的空氣質(zhì)量模塊,不僅提供AQI大小、等級、全國城市排名,還提供了PM2.5、PM10、SO2、NO2、CO、O3數(shù)據(jù)。同時界面上,突出AQI指數(shù),使界面不至于因為數(shù)據(jù)的繁多而顯得雜亂無章,同時讓用戶能清晰形象地了解自己所處地區(qū)的空氣質(zhì)量和其在全國城市的排名情況。
3.5預(yù)警訂閱與推送模塊
用戶基本只關(guān)心當(dāng)?shù)氐臍庀箢A(yù)警消息,為了讓氣象服務(wù)更具針對性,停課鈴只向用戶推送其預(yù)訂位置與類別的預(yù)警。廣東氣象預(yù)警類型有10種,大部分預(yù)警種類還包含多個級別,而且深圳、珠海兩市預(yù)警與其它地市還有所不同。為了讓用戶體驗更佳,停課鈴設(shè)有“自定義預(yù)警設(shè)置”功能,還提供一鍵訂制的“推薦預(yù)警”按鈕,包含有預(yù)先篩選過的對生活影響較大的預(yù)警種類和級別,整個預(yù)警訂制流程清晰明了,方便操作(圖3)。
氣象預(yù)警存在有效性和突發(fā)性特點,故預(yù)警功能模塊與負(fù)責(zé)發(fā)布廣東氣象預(yù)警的中控平臺進(jìn)行不間斷通信,隨時接受來自中控平臺的預(yù)警數(shù)據(jù)并加以解析,判斷預(yù)警消息發(fā)生的時間、地點與用戶所訂閱的預(yù)警位置和類別之間的關(guān)系,進(jìn)行預(yù)警消息的推送。
不同級別的預(yù)警,客戶端的顯示效果有差異。所有的預(yù)警推送,都在PC端桌面右下角進(jìn)行彈窗,并顯示在停課鈴主界面上。當(dāng)預(yù)警模塊接收到臺風(fēng)黃色、臺風(fēng)橙色、紅色預(yù)警和暴雨紅色預(yù)警時,根據(jù)《廣東省氣象災(zāi)害防御條例》規(guī)定,達(dá)到停課標(biāo)準(zhǔn),停課鈴主界面上將顯示通知欄,通知用戶所關(guān)注地區(qū)的停課消息。
圖3 預(yù)警訂制流程圖
3.6勿擾功能
停課鈴能夠設(shè)置避免打擾的功能,滿足不同用戶的差異化需求。在系統(tǒng)托盤圖標(biāo)右鍵菜單“勿擾模式”,開啟后所有的消息不再彈出,再次點擊關(guān)閉。在預(yù)警訂閱頁設(shè)置“勿擾時段”設(shè)置,設(shè)置后,在設(shè)定的時間段內(nèi)不進(jìn)行消息彈出。當(dāng)停課鈴開啟“勿擾模式”,“勿擾時段”設(shè)置將暫時無效,當(dāng)“勿擾模式”關(guān)閉后,將遵循“勿擾時段”設(shè)置開啟免打擾功能。
3.7其它功能
1)懸浮小窗。
用戶一般不會都停留在停課鈴主界面,工作時候,可能關(guān)閉主界面。為了在用戶關(guān)閉主界面時,仍能方便地了解當(dāng)前天氣,開發(fā)了懸浮小窗口,并在上面顯示當(dāng)前的天氣狀況、氣溫、風(fēng)力風(fēng)向,以及日期。單擊懸浮窗,主窗口立即彈出,也可以通過隱藏功能,關(guān)閉懸浮窗,讓用戶擁有更多的選擇空間。
2)交互式功能。
分享消息功能能使用戶很方便地在微信、新浪微博、騰訊微博分享停課鈴天氣信息,同時也促進(jìn)品牌口碑傳播,提高停課鈴的知名度??紤]到觀測站數(shù)量和分布,以及下墊面等因素的影響,觀測站所處的位置天氣情況和用戶實際位置的天氣可能存在較大的區(qū)別,甚至每個用戶所認(rèn)為的天氣也是有所不同,例如實況中的“多云”往往給用戶認(rèn)為是晴天,因此停課鈴中的糾錯功能給予用戶反饋的機會,用戶可將自己認(rèn)為的“天氣實況”發(fā)送給停課鈴,參與糾正實況。
1)由于在有災(zāi)害天氣過程時,可能需要接受大量公眾同時請求連接,停課鈴桌面插件系統(tǒng)采用模塊化低耦合架構(gòu)設(shè)計,與突發(fā)公共事件預(yù)警信息發(fā)布系統(tǒng)建立實時連接,其推送網(wǎng)關(guān)運用Node.js平臺,使得單服務(wù)器支持?jǐn)?shù)十萬級公眾同時在線,確保預(yù)警、停課消息推送及時可靠。停課鈴桌面插件是氣象部門新的一個應(yīng)急氣象服務(wù)高效渠道。
2)停課鈴桌面插件系統(tǒng)具有自動更新功能,可通過管理后臺發(fā)布客戶端的整體版本或補丁版本,并與客戶端進(jìn)行通信,進(jìn)行版本升級,為后期維護以及提升服務(wù)打下基礎(chǔ)。
3)停課鈴桌面插件系統(tǒng)接入百度地圖,并調(diào)用氣象局內(nèi)部逐時預(yù)報和逐天預(yù)報數(shù)據(jù)接口,實現(xiàn)廣東范圍內(nèi)精細(xì)至街道級別的天氣信息查詢,成為公眾安排工作生活事宜的參考“利器”。
4)停課鈴系統(tǒng)具備多樣式的預(yù)警訂制、用戶主動糾正天氣、“勿擾”模式、空氣質(zhì)量排名等功能模塊,滿足用戶的個性化需求。
參考文獻(xiàn):
[1]賈子冰,李娜.突發(fā)災(zāi)害事件的應(yīng)急氣象短信服務(wù)策略[J].廣東氣象,2008,30(6):48 -50.
[2]俞宙,陸文,郭鵬.基于氣象服務(wù)渠道的定位及研究[J].廣東氣象,2015,37(1):55 -58.
[3]王磊.新媒體在公共氣象服務(wù)領(lǐng)域中的應(yīng)用——以微博、微信為例[J].西部廣播電視,2013(20):41.
[4]張麗,朱芙蓉,江海萍,等.微信平臺在氣象信息傳播中的應(yīng)用[J].安徽農(nóng)業(yè)科學(xué),2015,43(10):387 -388.
[5]朱定真.董麗麗.氣象服務(wù)信息有效傳播能力探討[J].氣象科學(xué),2010,30(4):522 -525.
[6]陳靜,梁宏升.自媒體時代的氣象服務(wù)[J].廣東氣象,2013,35(6):52 -55.
[7]張哲睿,丘良.中國氣象網(wǎng)站的現(xiàn)狀與未來發(fā)展趨勢[J].氣象研究與應(yīng)用,201435(1):122 -124.
[8]高迎新,史天宇.氣象微博在公共氣象服務(wù)中的作用[J].學(xué)會,2014(4):62 -64.
[8]許永錁.改革開放狠抓落實全面推進(jìn)氣象現(xiàn)代化[J].廣東氣象,2013,35(1):1 -5.
[10]俞宙,林江.基于微信開展應(yīng)急氣象服務(wù)[C]/ /第30屆中國氣象學(xué)會年會論文集,2013.
[11]陳蘇婷,張燕,張艷艷.氣象預(yù)警信息智能接收處理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2014,35(1):338 -343.
[12]王金龍,宋斌,丁銳.Node.js:一種新的Web應(yīng)用構(gòu)建技術(shù)[J].現(xiàn)代電子技術(shù),2015,38(6):70 -73.
[13]沈昕.基于Node.js及Mongodb的在線學(xué)習(xí)測試系統(tǒng)設(shè)計[J].無線互聯(lián)科技,2015,(4):30 -32.
[14]黃經(jīng)贏.基于Socket.io + Node.js + Redis構(gòu)建高效即時通訊系統(tǒng)[J].現(xiàn)代計算機(專業(yè)版),2014,(13):62 -64.
中圖分類號:TP38
文獻(xiàn)標(biāo)識碼:A
doi:10.3868/ j.issn.1007 -6180.2016.03.021
收稿日期:2015 -10 -15
作者簡介:殷美祥(1881年生),男,助理工程師,學(xué)士,主要從事氣象服務(wù)工作。E - mail:646343261@qq.com