河北省氣象信息中心 成曉裕 張進(jìn)
針對(duì)省級(jí)氣象業(yè)務(wù)的現(xiàn)狀和需求,提出了一套氣象數(shù)據(jù)共享系統(tǒng)的模型。該系統(tǒng)實(shí)現(xiàn)了對(duì)實(shí)時(shí)氣象數(shù)據(jù)包括海量歷史數(shù)據(jù)的管理,能夠提供從包括氣象數(shù)據(jù)的實(shí)時(shí)傳輸、存儲(chǔ)、共享等功能:在數(shù)據(jù)數(shù)據(jù)傳輸中應(yīng)用了消息大大提高了傳輸效率,存儲(chǔ)中設(shè)計(jì)了多套分布式數(shù)據(jù)庫(kù)提供不同服務(wù)解決了數(shù)據(jù)庫(kù)瓶頸的問(wèn)題,在共享服務(wù)中首次采用了數(shù)據(jù)網(wǎng)關(guān)對(duì)訪問(wèn)做到了精細(xì)化管控。基于該模型開(kāi)發(fā)的共享系統(tǒng),已經(jīng)投入了業(yè)務(wù)化運(yùn)行,對(duì)河北省氣象業(yè)務(wù)的運(yùn)行提供了數(shù)據(jù)的保障。
隨著全球氣候變暖,極端天氣的頻現(xiàn),天氣預(yù)報(bào)、氣候預(yù)測(cè)、災(zāi)害預(yù)警等變的空前的重要,而這些都離不開(kāi)氣象數(shù)據(jù)的支撐,氣象數(shù)據(jù)一貫以龐雜眾多數(shù)據(jù)量大而著稱,所以做好氣象數(shù)據(jù)的傳輸、存儲(chǔ)、共享又尤為重要。省級(jí)單位做為樞紐,負(fù)責(zé)所轄地區(qū)觀測(cè)數(shù)據(jù)的本級(jí)存儲(chǔ)和上傳,交換數(shù)據(jù)的下載。
全國(guó)綜合氣象信息共享系統(tǒng)建設(shè)完成以來(lái),逐漸形成了以文件系統(tǒng)作為管理和共享氣象數(shù)據(jù)的氣象信息管理共享體系。該系統(tǒng)通過(guò)FTP方式實(shí)現(xiàn)了氣象數(shù)據(jù)的傳輸,通過(guò)使用ORACLE RAC實(shí)現(xiàn)了氣象數(shù)據(jù)的存儲(chǔ)和管理,設(shè)計(jì)了API接口實(shí)現(xiàn)了數(shù)據(jù)的共享[1-3]。但是隨著自動(dòng)觀測(cè)技術(shù)的快速發(fā)展,預(yù)報(bào)和預(yù)警等業(yè)務(wù)對(duì)氣象數(shù)據(jù)頻次的要求從原來(lái)的小時(shí)發(fā)展到分鐘,傳輸效率從10幾分鐘到1分鐘,接口的訪問(wèn)頻次也越來(lái)越高,原有的系統(tǒng)已經(jīng)不能滿足需求。為了將海量的氣象數(shù)據(jù)進(jìn)行更好的管理和共享,結(jié)合河北省氣象業(yè)務(wù)的需求,我們應(yīng)用了多種計(jì)算機(jī)新技術(shù)建設(shè)了一套集傳輸、存儲(chǔ)管理、共享服務(wù)和監(jiān)控于一體的氣象數(shù)據(jù)共享系統(tǒng)。
本系統(tǒng)的內(nèi)容實(shí)體是氣象數(shù)據(jù),目的是為了實(shí)現(xiàn)數(shù)據(jù)的高效存儲(chǔ)和共享,因此, 系統(tǒng)設(shè)計(jì)的理念是以數(shù)據(jù)為主線,以需求為導(dǎo)向。氣象數(shù)據(jù)共享系統(tǒng)采用RabbitMQ[4]、Kafka、Zookeeper等分布式傳輸和協(xié)調(diào)工具,通過(guò)消息傳遞,文件共享和服務(wù)交互實(shí)現(xiàn)了業(yè)務(wù)協(xié)作。
氣象數(shù)據(jù)共享系統(tǒng)分為數(shù)據(jù)傳輸、數(shù)據(jù)存儲(chǔ)與管理、數(shù)據(jù)共享等三個(gè)分系統(tǒng)。
數(shù)據(jù)傳輸分系統(tǒng)功能包括數(shù)據(jù)收集、數(shù)據(jù)分發(fā)、數(shù)據(jù)解碼、數(shù)據(jù)入庫(kù)、系統(tǒng)管理等。根據(jù)資料種類的不同,我們采用了FTP、消息、流三種方式進(jìn)行氣象數(shù)據(jù)的傳輸,大大提高了氣象數(shù)據(jù)的傳輸效率。
1.2.1 FTP 文件傳輸
基于TCP/IP協(xié)議的FTP文件傳輸方式仍然用于部分氣象觀測(cè)資料的傳輸,傳輸流程如圖1所示。

圖1 氣象觀測(cè)資料文件傳輸流程圖Fig.1 Flow chart of meteorological observation data file transmission
1.2.2 消息傳輸
隨著自動(dòng)觀測(cè)技術(shù)的快速發(fā)展,部分氣象觀測(cè)資料產(chǎn)生的頻次已經(jīng)提升到了分鐘級(jí)。部分氣象觀測(cè)資料類型和它的數(shù)據(jù)傳輸頻次,每種資料大小都在200字節(jié)以上,有些可以達(dá)到幾KB,甚至幾MB。傳統(tǒng)TCP/IP協(xié)議的FTP文件傳輸方式已經(jīng)無(wú)法滿足這么高的傳輸頻次和海量觀測(cè)數(shù)據(jù)的傳輸需要,而且頻繁的文件讀寫(xiě),會(huì)大大影響服務(wù)器的整體性能[5]。基于傳統(tǒng)的TCP/IP協(xié)議的FTP文件傳輸方式,已無(wú)法滿足大數(shù)量、高頻次、多種類的觀測(cè)數(shù)據(jù)高時(shí)效傳輸,所以采用消息方式傳輸。
1.2.3 雷達(dá)流傳輸
在雷達(dá)體掃模式下,要等一個(gè)提掃結(jié)束(6分鐘),才能以FTP方式將雷達(dá)基數(shù)據(jù)以文件為單位進(jìn)行傳輸。在2018年之后,開(kāi)始實(shí)行以流傳輸方式進(jìn)行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)格式[6],并同步上傳至省級(jí)傳輸系統(tǒng)。流傳輸方式采用Socket通信方式進(jìn)行逐徑向?qū)崟r(shí)傳輸,實(shí)現(xiàn)了雷達(dá)徑向流傳輸數(shù)據(jù)從雷達(dá)站點(diǎn)到省級(jí)、國(guó)家級(jí)節(jié)點(diǎn)的可靠、穩(wěn)定傳輸。
數(shù)據(jù)存儲(chǔ)和管理分系統(tǒng)包括數(shù)據(jù)的入庫(kù)、存儲(chǔ)管理、備份、刪除、遷移等功能。數(shù)據(jù)存儲(chǔ)和管理分系統(tǒng)利用分布式存儲(chǔ)技術(shù)對(duì)各類氣象資料數(shù)據(jù)進(jìn)行存儲(chǔ),并按照業(yè)務(wù)應(yīng)用場(chǎng)景對(duì)數(shù)據(jù)存儲(chǔ)進(jìn)行分類分級(jí),通過(guò)數(shù)據(jù)存儲(chǔ)管理網(wǎng)站建設(shè),實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)、存儲(chǔ)結(jié)構(gòu)、權(quán)限控制、能力開(kāi)放等功能。利用數(shù)據(jù)同步、數(shù)據(jù)遷移與清除、數(shù)據(jù)備份與恢復(fù)等功能,實(shí)現(xiàn)數(shù)據(jù)的高效流轉(zhuǎn)。流程如圖2所示。

圖2 觀測(cè)數(shù)據(jù)存儲(chǔ)流程圖Fig.2 Flow chart of observation data storage
按照?qǐng)D2流程,結(jié)構(gòu)化數(shù)據(jù)經(jīng)解碼程序處理首先寫(xiě)入緩沖庫(kù),然后通過(guò)實(shí)時(shí)數(shù)據(jù)ETL同步,按照同步策略再寫(xiě)入服務(wù)庫(kù)和分析庫(kù)。緩沖庫(kù)作為數(shù)據(jù)的臨時(shí)中轉(zhuǎn)存儲(chǔ),并且不對(duì)外提供數(shù)據(jù)訪問(wèn),僅用于實(shí)現(xiàn)入庫(kù)和服務(wù)的解耦。服務(wù)庫(kù)是用于對(duì)外提供服務(wù)訪問(wèn)實(shí)時(shí)數(shù)據(jù)的分布式服務(wù)數(shù)據(jù)庫(kù),其特點(diǎn)是行式存儲(chǔ)架構(gòu),具有更好的訪問(wèn)性能。分析庫(kù)是用于對(duì)外提供服務(wù)訪問(wèn)長(zhǎng)時(shí)間序列的分布式分析型數(shù)據(jù)庫(kù),其特點(diǎn)是采用了列式存儲(chǔ)架構(gòu),對(duì)于長(zhǎng)時(shí)間序列的列數(shù)據(jù)進(jìn)行訪問(wèn),具有比較高效訪問(wèn)能力。索引庫(kù)用于存儲(chǔ)文件屬性,文件則寫(xiě)到NAS存儲(chǔ)中,一般用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)。
數(shù)據(jù)共享分系統(tǒng)包括接口網(wǎng)關(guān)、接口信息管理、用戶管理等功能。數(shù)據(jù)共享分系統(tǒng)主要對(duì)多種存儲(chǔ)技術(shù)存儲(chǔ)的各類數(shù)據(jù),提供統(tǒng)一、便捷的數(shù)據(jù)服務(wù)。提供了接口框架、檢索接口、計(jì)算接口、可視化接口、數(shù)據(jù)庫(kù)訪問(wèn)和接口管理等服務(wù)。
接口服務(wù)流程如圖3所示。用戶通過(guò)接口客戶端或接口測(cè)試工具發(fā)起數(shù)據(jù)服務(wù)請(qǐng)求;數(shù)據(jù)服務(wù)請(qǐng)求通過(guò)接口網(wǎng)關(guān)實(shí)時(shí)將數(shù)據(jù)服務(wù)請(qǐng)求轉(zhuǎn)發(fā)至對(duì)應(yīng)服務(wù)器的接口服務(wù);接口服務(wù)端獲取服務(wù)請(qǐng)求后,對(duì)接口請(qǐng)求進(jìn)行解析,拼接指定數(shù)據(jù)庫(kù)類型的SQL,然后執(zhí)行語(yǔ)句獲取數(shù)據(jù)并對(duì)檢索結(jié)果進(jìn)行格式化,最后返回結(jié)果。

圖3 平均計(jì)算能力vs時(shí)間塊長(zhǎng)度Fig.3 Average computing power vs time block length

圖3 訪問(wèn)觀測(cè)資料流程圖Fig.3 Flow chart of accessing observation data
為了增加數(shù)據(jù)傳輸?shù)目煽啃裕谙到y(tǒng)中采用了消息發(fā)布確認(rèn)和消息接收確認(rèn)模式。發(fā)布確認(rèn)可以有效確保消息傳輸?shù)搅讼⒎?wù)器,接收確認(rèn)的原理是:在消息消費(fèi)者獲取消息之后,并沒(méi)有馬上把消息刪除,而是將消息標(biāo)識(shí)為Unacked狀態(tài),直到收到消費(fèi)者消費(fèi)完消息返回指令后,才會(huì)從隊(duì)列中刪除消息,從而保證消息的完整。
建立數(shù)據(jù)同步功能,實(shí)現(xiàn)了基于數(shù)據(jù)庫(kù)操作日志的從緩沖庫(kù)到服務(wù)庫(kù)和分析庫(kù)的同步。
數(shù)據(jù)同步處理流程如下:
(1)傳輸系統(tǒng)分發(fā)的結(jié)構(gòu)化數(shù)據(jù)通過(guò)解碼程序處理后存入緩沖庫(kù);
(2)數(shù)據(jù)同步程序根據(jù)同步策略采用日志流同步機(jī)制,實(shí)現(xiàn)數(shù)據(jù)從緩沖庫(kù)到服務(wù)庫(kù)和分析庫(kù)的數(shù)據(jù)同步;
(3)在緩沖庫(kù)中存儲(chǔ)的數(shù)據(jù)按照清除策略進(jìn)行清除。
省級(jí)氣象數(shù)據(jù)共享系統(tǒng)基于控制信息的消息通信和共享文件系統(tǒng)的數(shù)據(jù)交換, 實(shí)現(xiàn)各分系統(tǒng)間業(yè)務(wù)數(shù)據(jù)的流轉(zhuǎn)。系統(tǒng)利用消息隊(duì)列的可靠異步傳輸機(jī)制構(gòu)建高性能、高可用的消息傳輸實(shí)現(xiàn)系統(tǒng)間或系統(tǒng)內(nèi)的控制信息的交互, 并推動(dòng)數(shù)據(jù)在分系統(tǒng)間的流轉(zhuǎn)。
根據(jù)省級(jí)對(duì)氣象數(shù)據(jù)管理的現(xiàn)狀以及需求分析,按照數(shù)據(jù)的特點(diǎn)在數(shù)據(jù)的傳輸、存儲(chǔ)、共享等環(huán)節(jié)采用了消息、Kafka、Zookeeper等大量開(kāi)源的新技術(shù),由此構(gòu)建了省級(jí)氣象數(shù)據(jù)共享系統(tǒng),該系統(tǒng)具有如下優(yōu)點(diǎn):
(1)在觀測(cè)數(shù)據(jù)的傳輸中按照資料傳輸頻次、大小、數(shù)量、時(shí)效要求等的不同分別采用了文件FTP、消息,大大提高了傳輸效率;
(2)在存儲(chǔ)中根據(jù)應(yīng)用需求不用使用了不同的數(shù)據(jù)庫(kù),針對(duì)查詢時(shí)間序列長(zhǎng)而更改較少等統(tǒng)計(jì)引入了列存儲(chǔ)分布式數(shù)據(jù)庫(kù),解決了存儲(chǔ)一直以來(lái)的瓶頸;
(3)在共享服務(wù)中首次采用了數(shù)據(jù)網(wǎng)關(guān)等新技術(shù)實(shí)現(xiàn)了訪問(wèn)的負(fù)載均衡、流量控制等功能,保證了氣象數(shù)據(jù)訪問(wèn)的效率和安全。