文/張新禹
隨著氣象信息現(xiàn)代化的發(fā)展,氣象資料種類不斷的增加及氣象資料傳輸時(shí)效要求的提高,在已有氣象傳輸系統(tǒng)發(fā)生故障時(shí),為了滿足時(shí)效性要求需要一種輕量級(jí)的資料傳輸工具代替并恢復(fù)氣象業(yè)務(wù),本文介紹了基于Python語言的氣象資料傳輸工具的設(shè)計(jì),為氣象資料傳輸系統(tǒng)故障時(shí)提供必要的應(yīng)急方法。
氣象資料的產(chǎn)生方式為部署在縣級(jí)或市級(jí)氣象局觀測(cè)場(chǎng)內(nèi)部的氣象觀測(cè)儀器采集天氣信息,采集溫度、氣壓、濕度、風(fēng)速、風(fēng)向、太陽輻射等,數(shù)據(jù)通過串口形式接收在氣象觀測(cè)臺(tái)站服務(wù)器中,通過氣象專用ISOS軟件生成對(duì)應(yīng)文件格式的文件,其中自動(dòng)站、酸雨文件格式以文本格式為主,高空等文件具有其特定的文件格式。
市級(jí)、縣級(jí)氣象觀測(cè)觀測(cè)臺(tái)站通過氣象寬帶網(wǎng)絡(luò)將氣象資料發(fā)送至省級(jí)氣象局,省級(jí)氣象局對(duì)收到的報(bào)文進(jìn)行格式檢查后發(fā)送到下一級(jí)目的主機(jī),本設(shè)計(jì)部署位置在省級(jí)氣象局的互聯(lián)網(wǎng)DMZ區(qū),作為與氣象內(nèi)網(wǎng)與互聯(lián)網(wǎng)單向通信的服務(wù)器,其目的是作為主要?dú)庀筚Y料傳輸系統(tǒng)的備用方案,在市級(jí)、縣級(jí)氣象專網(wǎng)發(fā)生故障時(shí),以互聯(lián)網(wǎng)為渠道,接收互聯(lián)網(wǎng)特定端口的報(bào)文信息,保障氣象資料的順利傳輸以及資料傳輸?shù)臅r(shí)效性。
本設(shè)計(jì)將FTP的落地的文件經(jīng)過處理后發(fā)送到國(guó)家氣象信息中心服務(wù)器中保存、共享,處理過程主要包含資料分類及打包功能、實(shí)時(shí)傳輸功能、日志功能、程序守護(hù)功能。資料分類、打包功能通過匹配報(bào)文文件的名稱實(shí)現(xiàn)資料文件的分類,打包功能主要是對(duì)氣象資料內(nèi)容進(jìn)行打包操作,實(shí)時(shí)傳輸功能將氣象文件通過FTP方式按照不同入口目錄發(fā)送到國(guó)家氣象信息中心的服務(wù)上,期間程序運(yùn)行及發(fā)送報(bào)文產(chǎn)生的信息將通過日志功能記錄,以便后續(xù)運(yùn)維人員的查看和資料的補(bǔ)調(diào),程序守護(hù)功能主要作用是在程序的運(yùn)行過程中保障程序主要進(jìn)程的正常運(yùn)行,防止掉線進(jìn)程影響業(yè)務(wù)。具體傳輸流程如圖1。
圖1:氣象資料傳輸流程圖
根據(jù)氣象資料傳輸要求,主要分為地面氣象資料、高空氣象資料、大氣成分資料、酸雨資料、輻射資料、雷達(dá)資料、精細(xì)化預(yù)報(bào)產(chǎn)品等幾大類資料,針對(duì)以上大類資料,程序設(shè)計(jì)中分別編寫的不同文件類型的入口目錄,針對(duì)大類資料下面的小類資料采用子目錄級(jí)別設(shè)計(jì)了小類資料的入口目錄?;ヂ?lián)網(wǎng)接收的資料通過名稱的特征匹配,將結(jié)果分配到不同類資料的存放文件夾,其中小類資料通過第二次資料分類后放至小類資料文件夾中。整個(gè)資料分類需要的模板名稱存儲(chǔ)在指定的配置文件中,軟件提供有UI界面功能,如要調(diào)整文件名模板的格式及打包方式可以通過軟件界面及修改后臺(tái)配置文件實(shí)現(xiàn),修改配置后無需重啟軟件即可完成配置的調(diào)整。
本設(shè)計(jì)中資料入口目錄收集來自氣象臺(tái)站上傳的文件,經(jīng)過分類后,對(duì)文件內(nèi)容進(jìn)行打包處理,地面類型包含txt類型的文件采用內(nèi)容打包方式,將文件內(nèi)容重新遍歷至文本內(nèi)完成打包,其中重新打包后的文件名稱按照中國(guó)氣象局資料打包要求,報(bào)文名稱中原站號(hào)名稱更換為省級(jí)名稱,時(shí)間格式更改為打包之后的國(guó)際時(shí),時(shí)間要求精確到秒級(jí)。針對(duì)高空氣象資料、酸雨資料特殊格式文件的打包方法,按照中國(guó)氣象局對(duì)特殊氣象資料文件規(guī)則的要求進(jìn)行打包,與常規(guī)打包方式不同的,特殊格式報(bào)文打包過程中需要加入特殊分隔符進(jìn)行站點(diǎn)區(qū)分。
基于氣象資料傳輸渠道多種多樣,傳輸過程中每時(shí)每秒都會(huì)有新的文件落到服務(wù)器中,在程序編輯中,需要定時(shí)對(duì)其中文件進(jìn)行處理,防止資料文件增多導(dǎo)致處理效率變慢,引用了Pyhton資源庫(kù)中time函數(shù)編寫定時(shí)器模塊,以此實(shí)現(xiàn)定時(shí)監(jiān)測(cè)功能,利用文件掃描函數(shù)監(jiān)測(cè)入口目錄下是否有資料保存,統(tǒng)計(jì)文件數(shù)量,若有未發(fā)送的文件,程序?qū)⑽募湃氪l(fā)送文件隊(duì)列,啟動(dòng)文件傳輸進(jìn)程,使用FTP方式將文件發(fā)送到指定目錄,如果在掃描文件過程中發(fā)現(xiàn)非氣象資料的文件或者可以病毒文件,程序?qū)ξ粗募?dòng)刪除程序,完成對(duì)資料入口目錄的清理。
圖2:實(shí)時(shí)傳輸流程圖
程序提供了分發(fā)目的配置功能,業(yè)務(wù)運(yùn)行人員可以在過程中對(duì)不同資料配置不同的目的主機(jī),實(shí)現(xiàn)自定義文件轉(zhuǎn)發(fā)功能,在資料保存后的共享業(yè)務(wù)中,需要對(duì)多個(gè)目的主機(jī)提供資料共享服務(wù)。傳輸過程中,為了防止發(fā)送到目的文件夾的過程中目標(biāo)服務(wù)器對(duì)沒有發(fā)送完成的報(bào)文進(jìn)行操作,程序設(shè)計(jì)中在發(fā)送報(bào)文時(shí)對(duì)名稱的后綴名進(jìn)行更改,待文件發(fā)送完成時(shí)將名稱替換為正常格式,保障傳輸報(bào)文的完整性。為了防止同名氣象資料重復(fù)傳輸,影響資料中數(shù)據(jù)的準(zhǔn)確性,設(shè)計(jì)中加入監(jiān)視器,監(jiān)測(cè)目標(biāo)文件夾下面的文件是否與待發(fā)送文件名相同,發(fā)現(xiàn)相同則刪除該文件。具體流程如圖2。
氣象資料在采集中產(chǎn)生的傳輸日志有很大的參考價(jià)值,在傳輸流程中如果某一環(huán)節(jié)發(fā)生故障,可以通過傳輸日志發(fā)現(xiàn)故障所在位置及故障發(fā)生的時(shí)間,日志功能主要采集資料的文件名、收集時(shí)間及位置、發(fā)送時(shí)間及位置,在傳輸流程的每一個(gè)環(huán)節(jié)中將每類氣象資料所經(jīng)過的節(jié)點(diǎn)信息記錄到日志中,程序設(shè)計(jì)中對(duì)每個(gè)程序代碼塊中設(shè)置了日志輸出選項(xiàng),在發(fā)生故障時(shí)拋出相應(yīng)錯(cuò)誤信息,日志文件在檢索時(shí)在每行的開始提供日志信息的標(biāo)槍,標(biāo)明了輸出日志屬于正常傳輸日志或者故障拋出日志。日志文件每大于一定容量大小時(shí)將日志文件重定向到新的日志文件中,日志文件可連續(xù)存放一年的傳輸日志。對(duì)于已經(jīng)發(fā)送的文件,日志功能保留了文件備份功能,將已傳輸?shù)奈募浞莸奖镜貍浞菽夸浵?,便于協(xié)助日志文件相互核實(shí)業(yè)務(wù)傳輸情況。
程序在后臺(tái)運(yùn)行中,通過進(jìn)程名查詢即可獲得程序的進(jìn)程端口號(hào),對(duì)于不存在的進(jìn)程即沒有進(jìn)程端口號(hào)的存在,利用這一點(diǎn),在實(shí)時(shí)傳輸程序運(yùn)行中,通過定時(shí)觸發(fā)掃描器掃描后臺(tái)進(jìn)程端口號(hào),確認(rèn)后臺(tái)的正常運(yùn)行,通過此方法實(shí)現(xiàn)對(duì)后臺(tái)程序的監(jiān)控作用。守護(hù)程序的設(shè)計(jì)可以對(duì)傳輸?shù)倪\(yùn)行得到有力保障,也可以在程序所在服務(wù)器發(fā)生重啟等故障后主動(dòng)拉起主要應(yīng)用,并且守護(hù)程序的運(yùn)行過程會(huì)生成特定的日志,負(fù)責(zé)業(yè)務(wù)運(yùn)維的人員通過此日志可以在后續(xù)的維護(hù)中修改程序出現(xiàn)的問題。
在資料傳輸?shù)恼麄€(gè)過程中,補(bǔ)充上傳氣象資料是傳輸過程中總會(huì)發(fā)生的情況,當(dāng)氣象臺(tái)站到省級(jí)信息中心內(nèi)網(wǎng)鏈路中斷時(shí),需要通過互聯(lián)網(wǎng)方式發(fā)送氣象資料,鑒于其中一部分氣象資料屬于國(guó)家保密信息,不可以通過公共渠道流通,需使用獨(dú)自開發(fā)的傳輸工具完成這一過程。氣象資料傳輸工具部署在氣象專網(wǎng)區(qū)到互聯(lián)網(wǎng)區(qū)的DMZ環(huán)境下,利用互聯(lián)網(wǎng)DMZ區(qū)的網(wǎng)絡(luò)策略實(shí)現(xiàn)其功能,在非內(nèi)網(wǎng)傳輸過程中,氣象資料由氣象臺(tái)站到國(guó)家氣象信息中心傳輸時(shí)間為3分鐘之內(nèi),完全符合氣象傳輸過程中要求的時(shí)間區(qū)間。
省級(jí)氣象部門在收集了大量氣象數(shù)據(jù)之后,資料需要以共享文件方式提供到氣象臺(tái)、氣象服務(wù)中心等產(chǎn)品制作單位進(jìn)行進(jìn)一步處理,整個(gè)過程中需要一個(gè)流轉(zhuǎn)的過程,在氣象業(yè)務(wù)發(fā)展的初期,主要通過人為定期復(fù)制資料到共享服務(wù)器中進(jìn)行資料服務(wù)業(yè)務(wù),這種行為無法保障業(yè)務(wù)的實(shí)時(shí)性,在時(shí)間的角度極大拖延了氣象資料的傳輸周期,通過將傳輸工具配置特定的目的地址代替了人工操作的業(yè)務(wù),避免了人為操作過程中的失誤,為資料共享提供一個(gè)無人值守的便捷方式。
在云計(jì)算的發(fā)展下氣象業(yè)務(wù)實(shí)現(xiàn)了集約化管理,從之前單獨(dú)服務(wù)器提供業(yè)務(wù)服務(wù)到現(xiàn)在的云主機(jī)上運(yùn)行墻業(yè)務(wù),云主機(jī)靈活的操作性及快照備份的特性保障了氣象業(yè)務(wù)在故障發(fā)生的情況下能夠第一時(shí)間恢復(fù)業(yè)務(wù)的運(yùn)行。大數(shù)據(jù)的發(fā)展使得現(xiàn)在氣象數(shù)據(jù)對(duì)存儲(chǔ)的要求越來越高,存儲(chǔ)的數(shù)量級(jí)別由TB級(jí)增長(zhǎng)到現(xiàn)在的PB級(jí)別,數(shù)據(jù)處理的任務(wù)量也在提高,在龐大的業(yè)務(wù)系統(tǒng)面前氣象系統(tǒng)運(yùn)維人員承擔(dān)著守護(hù)氣象業(yè)務(wù)正常運(yùn)行的保障任務(wù)。隨著信息時(shí)代的不斷發(fā)展,伴隨著大數(shù)據(jù)、人工智能的不斷成熟,天氣預(yù)報(bào)準(zhǔn)確率已經(jīng)可以達(dá)到80%以上,這使得各行各業(yè)都開始關(guān)注起氣象信息,對(duì)氣象信息的精準(zhǔn)度要求也不斷提高,超高的精準(zhǔn)度需要?dú)庀笏惴ㄜ浖粩嗌?jí),在此期間,對(duì)氣象資料傳輸?shù)臅r(shí)間效率要求也越來越高,為了在更短時(shí)間內(nèi)順利將氣象資料由觀測(cè)場(chǎng)到預(yù)報(bào)員桌面,保障天氣預(yù)報(bào)的準(zhǔn)確性,氣象信息中心的運(yùn)維人員對(duì)資料傳輸系統(tǒng)也在不斷更新,為了提高預(yù)報(bào)準(zhǔn)確率不斷學(xué)習(xí)新的技術(shù),開拓新的領(lǐng)域。