河北省氣象信息中心 成曉裕 張進
針對省級氣象業(yè)務的現(xiàn)狀和需求,提出了一套氣象數(shù)據(jù)共享系統(tǒng)的模型。該系統(tǒng)實現(xiàn)了對實時氣象數(shù)據(jù)包括海量歷史數(shù)據(jù)的管理,能夠提供從包括氣象數(shù)據(jù)的實時傳輸、存儲、共享等功能:在數(shù)據(jù)數(shù)據(jù)傳輸中應用了消息大大提高了傳輸效率,存儲中設(shè)計了多套分布式數(shù)據(jù)庫提供不同服務解決了數(shù)據(jù)庫瓶頸的問題,在共享服務中首次采用了數(shù)據(jù)網(wǎng)關(guān)對訪問做到了精細化管控?;谠撃P烷_發(fā)的共享系統(tǒng),已經(jīng)投入了業(yè)務化運行,對河北省氣象業(yè)務的運行提供了數(shù)據(jù)的保障。
隨著全球氣候變暖,極端天氣的頻現(xiàn),天氣預報、氣候預測、災害預警等變的空前的重要,而這些都離不開氣象數(shù)據(jù)的支撐,氣象數(shù)據(jù)一貫以龐雜眾多數(shù)據(jù)量大而著稱,所以做好氣象數(shù)據(jù)的傳輸、存儲、共享又尤為重要。省級單位做為樞紐,負責所轄地區(qū)觀測數(shù)據(jù)的本級存儲和上傳,交換數(shù)據(jù)的下載。
全國綜合氣象信息共享系統(tǒng)建設(shè)完成以來,逐漸形成了以文件系統(tǒng)作為管理和共享氣象數(shù)據(jù)的氣象信息管理共享體系。該系統(tǒng)通過FTP方式實現(xiàn)了氣象數(shù)據(jù)的傳輸,通過使用ORACLE RAC實現(xiàn)了氣象數(shù)據(jù)的存儲和管理,設(shè)計了API接口實現(xiàn)了數(shù)據(jù)的共享[1-3]。但是隨著自動觀測技術(shù)的快速發(fā)展,預報和預警等業(yè)務對氣象數(shù)據(jù)頻次的要求從原來的小時發(fā)展到分鐘,傳輸效率從10幾分鐘到1分鐘,接口的訪問頻次也越來越高,原有的系統(tǒng)已經(jīng)不能滿足需求。為了將海量的氣象數(shù)據(jù)進行更好的管理和共享,結(jié)合河北省氣象業(yè)務的需求,我們應用了多種計算機新技術(shù)建設(shè)了一套集傳輸、存儲管理、共享服務和監(jiān)控于一體的氣象數(shù)據(jù)共享系統(tǒng)。
本系統(tǒng)的內(nèi)容實體是氣象數(shù)據(jù),目的是為了實現(xiàn)數(shù)據(jù)的高效存儲和共享,因此, 系統(tǒng)設(shè)計的理念是以數(shù)據(jù)為主線,以需求為導向。氣象數(shù)據(jù)共享系統(tǒng)采用RabbitMQ[4]、Kafka、Zookeeper等分布式傳輸和協(xié)調(diào)工具,通過消息傳遞,文件共享和服務交互實現(xiàn)了業(yè)務協(xié)作。
氣象數(shù)據(jù)共享系統(tǒng)分為數(shù)據(jù)傳輸、數(shù)據(jù)存儲與管理、數(shù)據(jù)共享等三個分系統(tǒng)。
數(shù)據(jù)傳輸分系統(tǒng)功能包括數(shù)據(jù)收集、數(shù)據(jù)分發(fā)、數(shù)據(jù)解碼、數(shù)據(jù)入庫、系統(tǒng)管理等。根據(jù)資料種類的不同,我們采用了FTP、消息、流三種方式進行氣象數(shù)據(jù)的傳輸,大大提高了氣象數(shù)據(jù)的傳輸效率。
1.2.1 FTP 文件傳輸
基于TCP/IP協(xié)議的FTP文件傳輸方式仍然用于部分氣象觀測資料的傳輸,傳輸流程如圖1所示。
圖1 氣象觀測資料文件傳輸流程圖Fig.1 Flow chart of meteorological observation data file transmission
1.2.2 消息傳輸
隨著自動觀測技術(shù)的快速發(fā)展,部分氣象觀測資料產(chǎn)生的頻次已經(jīng)提升到了分鐘級。部分氣象觀測資料類型和它的數(shù)據(jù)傳輸頻次,每種資料大小都在200字節(jié)以上,有些可以達到幾KB,甚至幾MB。傳統(tǒng)TCP/IP協(xié)議的FTP文件傳輸方式已經(jīng)無法滿足這么高的傳輸頻次和海量觀測數(shù)據(jù)的傳輸需要,而且頻繁的文件讀寫,會大大影響服務器的整體性能[5]?;趥鹘y(tǒng)的TCP/IP協(xié)議的FTP文件傳輸方式,已無法滿足大數(shù)量、高頻次、多種類的觀測數(shù)據(jù)高時效傳輸,所以采用消息方式傳輸。
1.2.3 雷達流傳輸
在雷達體掃模式下,要等一個提掃結(jié)束(6分鐘),才能以FTP方式將雷達基數(shù)據(jù)以文件為單位進行傳輸。在2018年之后,開始實行以流傳輸方式進行數(shù)據(jù)傳輸?shù)臉藴矢袷絒6],并同步上傳至省級傳輸系統(tǒng)。流傳輸方式采用Socket通信方式進行逐徑向?qū)崟r傳輸,實現(xiàn)了雷達徑向流傳輸數(shù)據(jù)從雷達站點到省級、國家級節(jié)點的可靠、穩(wěn)定傳輸。
數(shù)據(jù)存儲和管理分系統(tǒng)包括數(shù)據(jù)的入庫、存儲管理、備份、刪除、遷移等功能。數(shù)據(jù)存儲和管理分系統(tǒng)利用分布式存儲技術(shù)對各類氣象資料數(shù)據(jù)進行存儲,并按照業(yè)務應用場景對數(shù)據(jù)存儲進行分類分級,通過數(shù)據(jù)存儲管理網(wǎng)站建設(shè),實現(xiàn)了對數(shù)據(jù)庫、存儲結(jié)構(gòu)、權(quán)限控制、能力開放等功能。利用數(shù)據(jù)同步、數(shù)據(jù)遷移與清除、數(shù)據(jù)備份與恢復等功能,實現(xiàn)數(shù)據(jù)的高效流轉(zhuǎn)。流程如圖2所示。
圖2 觀測數(shù)據(jù)存儲流程圖Fig.2 Flow chart of observation data storage
按照圖2流程,結(jié)構(gòu)化數(shù)據(jù)經(jīng)解碼程序處理首先寫入緩沖庫,然后通過實時數(shù)據(jù)ETL同步,按照同步策略再寫入服務庫和分析庫。緩沖庫作為數(shù)據(jù)的臨時中轉(zhuǎn)存儲,并且不對外提供數(shù)據(jù)訪問,僅用于實現(xiàn)入庫和服務的解耦。服務庫是用于對外提供服務訪問實時數(shù)據(jù)的分布式服務數(shù)據(jù)庫,其特點是行式存儲架構(gòu),具有更好的訪問性能。分析庫是用于對外提供服務訪問長時間序列的分布式分析型數(shù)據(jù)庫,其特點是采用了列式存儲架構(gòu),對于長時間序列的列數(shù)據(jù)進行訪問,具有比較高效訪問能力。索引庫用于存儲文件屬性,文件則寫到NAS存儲中,一般用于存儲非結(jié)構(gòu)化數(shù)據(jù)。
數(shù)據(jù)共享分系統(tǒng)包括接口網(wǎng)關(guān)、接口信息管理、用戶管理等功能。數(shù)據(jù)共享分系統(tǒng)主要對多種存儲技術(shù)存儲的各類數(shù)據(jù),提供統(tǒng)一、便捷的數(shù)據(jù)服務。提供了接口框架、檢索接口、計算接口、可視化接口、數(shù)據(jù)庫訪問和接口管理等服務。
接口服務流程如圖3所示。用戶通過接口客戶端或接口測試工具發(fā)起數(shù)據(jù)服務請求;數(shù)據(jù)服務請求通過接口網(wǎng)關(guān)實時將數(shù)據(jù)服務請求轉(zhuǎn)發(fā)至對應服務器的接口服務;接口服務端獲取服務請求后,對接口請求進行解析,拼接指定數(shù)據(jù)庫類型的SQL,然后執(zhí)行語句獲取數(shù)據(jù)并對檢索結(jié)果進行格式化,最后返回結(jié)果。
圖3 平均計算能力vs時間塊長度Fig.3 Average computing power vs time block length
圖3 訪問觀測資料流程圖Fig.3 Flow chart of accessing observation data
為了增加數(shù)據(jù)傳輸?shù)目煽啃?,在系統(tǒng)中采用了消息發(fā)布確認和消息接收確認模式。發(fā)布確認可以有效確保消息傳輸?shù)搅讼⒎掌?,接收確認的原理是:在消息消費者獲取消息之后,并沒有馬上把消息刪除,而是將消息標識為Unacked狀態(tài),直到收到消費者消費完消息返回指令后,才會從隊列中刪除消息,從而保證消息的完整。
建立數(shù)據(jù)同步功能,實現(xiàn)了基于數(shù)據(jù)庫操作日志的從緩沖庫到服務庫和分析庫的同步。
數(shù)據(jù)同步處理流程如下:
(1)傳輸系統(tǒng)分發(fā)的結(jié)構(gòu)化數(shù)據(jù)通過解碼程序處理后存入緩沖庫;
(2)數(shù)據(jù)同步程序根據(jù)同步策略采用日志流同步機制,實現(xiàn)數(shù)據(jù)從緩沖庫到服務庫和分析庫的數(shù)據(jù)同步;
(3)在緩沖庫中存儲的數(shù)據(jù)按照清除策略進行清除。
省級氣象數(shù)據(jù)共享系統(tǒng)基于控制信息的消息通信和共享文件系統(tǒng)的數(shù)據(jù)交換, 實現(xiàn)各分系統(tǒng)間業(yè)務數(shù)據(jù)的流轉(zhuǎn)。系統(tǒng)利用消息隊列的可靠異步傳輸機制構(gòu)建高性能、高可用的消息傳輸實現(xiàn)系統(tǒng)間或系統(tǒng)內(nèi)的控制信息的交互, 并推動數(shù)據(jù)在分系統(tǒng)間的流轉(zhuǎn)。
根據(jù)省級對氣象數(shù)據(jù)管理的現(xiàn)狀以及需求分析,按照數(shù)據(jù)的特點在數(shù)據(jù)的傳輸、存儲、共享等環(huán)節(jié)采用了消息、Kafka、Zookeeper等大量開源的新技術(shù),由此構(gòu)建了省級氣象數(shù)據(jù)共享系統(tǒng),該系統(tǒng)具有如下優(yōu)點:
(1)在觀測數(shù)據(jù)的傳輸中按照資料傳輸頻次、大小、數(shù)量、時效要求等的不同分別采用了文件FTP、消息,大大提高了傳輸效率;
(2)在存儲中根據(jù)應用需求不用使用了不同的數(shù)據(jù)庫,針對查詢時間序列長而更改較少等統(tǒng)計引入了列存儲分布式數(shù)據(jù)庫,解決了存儲一直以來的瓶頸;
(3)在共享服務中首次采用了數(shù)據(jù)網(wǎng)關(guān)等新技術(shù)實現(xiàn)了訪問的負載均衡、流量控制等功能,保證了氣象數(shù)據(jù)訪問的效率和安全。