陳劍飛,史彩霞,王振國
(廣西壯族自治區(qū)氣象災害防御技術(shù)中心,南寧 530001)
氣象與各行各業(yè)都密切相關。廣西氣象部門依托于全區(qū)海量的氣象數(shù)據(jù)研制行業(yè)氣象服務產(chǎn)品,通過各類氣象服務系統(tǒng)和專線為眾多部門提供氣象服務保障。目前建成的電力專業(yè)服務、交通服務等各類服務系統(tǒng)[1-6]在氣象現(xiàn)代化和行業(yè)服務中發(fā)揮了重要作用,但隨著業(yè)務發(fā)展、網(wǎng)絡安全和業(yè)務規(guī)范不斷調(diào)整的同時也帶來了一些問題:一是各業(yè)務服務系統(tǒng)的氣象業(yè)務數(shù)據(jù)、用戶服務數(shù)據(jù)、地理信息數(shù)據(jù)等都是相對獨立的,“信息孤島問題”提高了運營與維護成本,未能形成統(tǒng)一高效的服務供給;二是各業(yè)務服務系統(tǒng)的信息共享與協(xié)同訪問很難實現(xiàn);三是分布在各個部門的業(yè)務數(shù)據(jù)沒有整合和統(tǒng)一規(guī)劃設計,不能全面高效地支撐氣象服務應用的開展。因此,通過搭建基于行業(yè)氣象服務的基礎數(shù)據(jù)支撐平臺,打造從數(shù)據(jù)采集解析推送的全流程可視化監(jiān)控和自動告警,實現(xiàn)對各類數(shù)據(jù)的采集挖掘,氣象和行業(yè)數(shù)據(jù)的融合與共享應用,為廣西行業(yè)氣象服務提供有力的業(yè)務支撐。
基礎數(shù)據(jù)支撐平臺整體框架如圖1,工作方式采用B/S+C/S 混合架構(gòu),采用JAVA、WEB 等技術(shù)實現(xiàn)氣象信息采集、解析、推送、監(jiān)控、業(yè)務服務系統(tǒng)管理等功能。網(wǎng)絡設計具有良好的可擴展性。平臺按功能劃分為數(shù)據(jù)采集解析系統(tǒng)、大數(shù)據(jù)推送管理系統(tǒng)、數(shù)據(jù)監(jiān)控平臺和業(yè)務系統(tǒng)綜合管理平臺四部分。
(1)基于現(xiàn)有業(yè)務的布局,目前的網(wǎng)絡分為廣西氣象局核心內(nèi)網(wǎng)區(qū)、廣西氣象局DMZ 區(qū)、廣西大數(shù)據(jù)發(fā)展局壯美廣西·政務云互聯(lián)網(wǎng)區(qū)、行業(yè)專線對應的行業(yè)用戶區(qū)共四部分。在核心內(nèi)網(wǎng)與DMZ 區(qū)、互聯(lián)網(wǎng)區(qū)分別架設防火墻,配置數(shù)據(jù)只能從高安全區(qū)(核心內(nèi)網(wǎng))向低安全區(qū)(DMZ 區(qū)、互聯(lián)網(wǎng)區(qū))流動的安全策略,在DMZ 區(qū)與行業(yè)用戶區(qū)架設防火墻并根據(jù)業(yè)務需要配置相應安全策略,提高網(wǎng)絡安全。
(2)大數(shù)據(jù)推送管理系統(tǒng)(內(nèi)網(wǎng))通過政務專線將服務產(chǎn)品推送到對應的政務云數(shù)據(jù)庫服務器上,實現(xiàn)互聯(lián)網(wǎng)服務系統(tǒng)的數(shù)據(jù)支撐。
(3)大數(shù)據(jù)推送管理系統(tǒng)(內(nèi)網(wǎng))通過千兆網(wǎng)線將服務產(chǎn)品推送到預報員使用的制作平臺數(shù)據(jù)庫服務器上,實現(xiàn)內(nèi)網(wǎng)業(yè)務系統(tǒng)的數(shù)據(jù)支撐。
(4)大數(shù)據(jù)推送管理系統(tǒng)(內(nèi)網(wǎng))通過防火墻,單向傳輸產(chǎn)品到DMZ 區(qū)數(shù)據(jù)共享服務器。
(5)大數(shù)據(jù)推送管理系統(tǒng)(DMZ 區(qū))通過防火墻和行業(yè)專線,基于SFTP 加密傳輸協(xié)議,將產(chǎn)品推送到各行業(yè)用戶服務器,從而保證了數(shù)據(jù)安全。
(6)通過搭建服務器集群,分別部署分布式的采集服務、解析服務、推送服務,進行協(xié)同工作,從而保證某臺服務器發(fā)生故障時其他服務器能繼續(xù)處理任務,實現(xiàn)系統(tǒng)的穩(wěn)定運行。
Kafka[7]是一種發(fā)布/訂閱(Pub/Sub)模式[8]的消息中間件系統(tǒng)[9],以集群方式部署,主要應用于大數(shù)據(jù)實時處理領域,連接系統(tǒng)中的數(shù)據(jù)上下游,處理活躍的流式數(shù)據(jù)。Kafka 可降低系統(tǒng)組網(wǎng)復雜度和編程復雜度,數(shù)據(jù)上下游的應用程序只需要與Kafka提供的API 對接即可,保證系統(tǒng)的高吞吐、高可用以及高容錯性[10]。Kafka 具有同時為發(fā)布和訂閱提供高吞吐量,進行集群間的消息同步,并將消息持久化到本地日志等。Kafka 是分布式集群系統(tǒng),含有多個服務器實例broker,每個主題topic 會有多個分區(qū)并均勻地分配到整個集群中,當生產(chǎn)者向?qū)黝}傳遞消息,消息通過負載均衡機制傳遞到不同的分區(qū)以減輕單個服務器實例的壓力[11]。
ZooKeeper 是一個開放源碼的分布式應用程序協(xié)調(diào)服務,它包含一個簡單的原語集,分布式應用程序可以基于它實現(xiàn)同步服務,配置維護和命名服務等,具有類似文件系統(tǒng)、以節(jié)點為基礎保存數(shù)據(jù)的結(jié)構(gòu),以及當目錄節(jié)點發(fā)生變化(數(shù)據(jù)改變、被刪除、子目錄節(jié)點增加或刪除)時的通知機制。Zookeeper 可提供一種可靠的、可擴展的、分布式的、可配置的協(xié)調(diào)機制來統(tǒng)一系統(tǒng)的狀態(tài)[12-13]。
Redis[14](Remote Dictionary Server),即遠程字典服務,是一個開源的使用ANSI C 語言編寫、支持網(wǎng)絡、可基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)據(jù)庫,并提供多種語言的API。它支持多種數(shù)據(jù)類型的存儲和豐富的操作,其中大多都支持原子操作;將數(shù)據(jù)緩存在內(nèi)存中,從而保證數(shù)據(jù)存取的效率;提供對持久化的支持,可定期將更新的數(shù)據(jù)異步寫入磁盤,同時不影響繼續(xù)提供服務;Redis 集群采用主從形式,確保當主節(jié)點失效后可以將一個從節(jié)點轉(zhuǎn)變?yōu)橹鞴?jié)點,從而有效預防單點故障和提高負載能力,以此確保集群的完整性和可用性[15-16]。
Hadoop 是分布式系統(tǒng)開源框架,核心模塊為HDFS 和MapReduce。HDFS 為海量的數(shù)據(jù)提供存儲,而MapReduce 則為海量的數(shù)據(jù)提供計算。HDFS有高容錯性的特點,并且可以部署在低廉的硬件上,可從單一的服務器擴展到上千臺機器,每臺服務器都可以提供本地計算和存儲。它允許在整個集群使用簡單編程模型在計算機的分布式環(huán)境下存儲并處理大數(shù)據(jù),用戶可以在規(guī)定的軟件框架下屏蔽分布式底層細節(jié)進行分布式程序的開發(fā)[17]。Hadoop 的MapReduce 功能實現(xiàn)將單個任務打碎,并將碎片任務(Map)發(fā)送到多個節(jié)點上,之后再以單個數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫里[18-19]。
氣象大數(shù)據(jù)云平臺“天擎”(CMADaaS)全面繼承了CIMISS 規(guī)范、數(shù)據(jù)種類和接口服務標準,是當前業(yè)務流程整體最優(yōu)、數(shù)據(jù)服務統(tǒng)一高效的全國氣象部門信息化系統(tǒng)的核心[20-21]。基于分布式數(shù)據(jù)環(huán)境的MICAPS 系統(tǒng)提供了海量預報數(shù)據(jù)和數(shù)值模式預報產(chǎn)品、集合預報數(shù)據(jù)供預報員使用。為了對數(shù)據(jù)源進行統(tǒng)一采集、存儲、運算、管理和共享,通過虛擬資源池配置2 臺虛機部署MYSQL 開源數(shù)據(jù)庫用于存儲結(jié)構(gòu)化數(shù)據(jù),另外3 臺虛機安裝Hadoop 大數(shù)據(jù)框架,利用其核心模塊HDFS 存儲非結(jié)構(gòu)化數(shù)據(jù),從而建立以關系數(shù)據(jù)庫為基礎、多種數(shù)據(jù)形式共存的行業(yè)氣象服務產(chǎn)品數(shù)據(jù)庫。數(shù)據(jù)庫包括數(shù)據(jù)存儲配置表、任務配置表、任務消息表、數(shù)據(jù)采集任務表、解析任務記錄表、專線用戶信息表、用戶產(chǎn)品清單表、專線用戶記錄表等數(shù)據(jù)表,用于存儲和管理各子模塊所需的公共數(shù)據(jù)和各類服務產(chǎn)品。
數(shù)據(jù)采集解析系統(tǒng)采用B/S+C/S 混合架構(gòu),利用JAVA 技術(shù)開發(fā)數(shù)據(jù)采集、解析等功能模塊。針對氣象數(shù)據(jù)和分布在各個部門的業(yè)務數(shù)據(jù)從識別采集到應用方面,采用自動化作業(yè)的解決方案,實現(xiàn)氣象業(yè)務數(shù)據(jù)和部門共享數(shù)據(jù)自動識別、自動分類、自動驅(qū)動計算模型,進行數(shù)據(jù)的收集、歸檔、清洗、質(zhì)控、解包、打包、格式轉(zhuǎn)換等數(shù)據(jù)處理的操作,從而不斷地提高廣西行業(yè)氣象數(shù)據(jù)服務能力和質(zhì)量。所有的自動服務進程均可進行半自動人工操作干預,數(shù)據(jù)處理模式可切換。數(shù)據(jù)采集解析服務流程圖如圖2所示,通過配置定時器觸發(fā)采集需要的氣象數(shù)據(jù),監(jiān)聽數(shù)據(jù)采集的情況并利用kafka 進行消息隊列通訊,Zookeeper 分布式協(xié)調(diào)服務將任務分配給數(shù)據(jù)解析服務進行解析作業(yè),實現(xiàn)了http、FTP、文件、數(shù)據(jù)庫、MDFS 等高效采集解析。數(shù)據(jù)采集解析系統(tǒng)具有任務管理、消息管理、規(guī)范管理、系統(tǒng)設置、解析記錄等功能模塊。
大數(shù)據(jù)推送管理系統(tǒng)采用JAVA 等技術(shù)開發(fā),通過數(shù)據(jù)統(tǒng)一服務接口對各個業(yè)務系統(tǒng)或?qū)>€用戶提供數(shù)據(jù)和產(chǎn)品服務,利用Redis 緩存技術(shù)和分布式推送節(jié)點進行產(chǎn)品分發(fā),有利于提高數(shù)據(jù)推送時效。大數(shù)據(jù)推送管理系統(tǒng)具有數(shù)據(jù)推送(推送任務、推送記錄查詢)、系統(tǒng)管理(專線用戶管理、專線用戶數(shù)據(jù)清單)等功能,可實現(xiàn)采集目標(數(shù)據(jù)庫、文件、MDFS)、推送頻次、推送時間、推送目的地、推送任務啟動/停止的靈活配置。
數(shù)據(jù)監(jiān)控平臺采用JAVA、WEB 等技術(shù)開發(fā),是對平臺及體系內(nèi)各服務、數(shù)據(jù)和應用的運行情況進行實時監(jiān)控,具有監(jiān)控大屏、API 監(jiān)控、應用程序監(jiān)控、服務器監(jiān)控、數(shù)據(jù)推送監(jiān)控、數(shù)據(jù)采集解析監(jiān)控、全流程監(jiān)控、異常信息查詢、自動告警等功能。
監(jiān)控大屏通欄各個服務器和系統(tǒng)運行狀態(tài)、查看實時可視化數(shù)據(jù)報告。API 接口監(jiān)控是對API 接口進行監(jiān)控,是否有報錯等。應用程序監(jiān)控是監(jiān)控各業(yè)務系統(tǒng)運行情況。服務器硬件監(jiān)控是監(jiān)控服務器運行情況,如是否宕機、CPU、內(nèi)存、網(wǎng)絡和磁盤等實時使用情況進行監(jiān)控。數(shù)據(jù)推送監(jiān)控是監(jiān)控數(shù)據(jù)推送服務情況。數(shù)據(jù)采集解析監(jiān)控是監(jiān)控數(shù)據(jù)采集是否采集解析失敗。全流程監(jiān)控是從數(shù)據(jù)采集、解析、推送進行全流程監(jiān)控。自動告警功能是通過對監(jiān)控指標(告警規(guī)則)、告警渠道(如釘釘群、郵箱、短信等)及聯(lián)系人的自定義配置后設定自動啟動,如監(jiān)控運行狀態(tài)出現(xiàn)異常達到告警規(guī)則時,立即通過告警渠道將告警信息發(fā)送給相應的聯(lián)系人。
業(yè)務系統(tǒng)綜合管理平臺采用JAVA、WEB 等技術(shù)開發(fā),是針對各類業(yè)務服務系統(tǒng)進行統(tǒng)一管理,具有行業(yè)管理、系統(tǒng)管理、用戶管理、日志管理等功能。行業(yè)管理是按照服務行業(yè)的不同將業(yè)務系統(tǒng)進行分類,并定義行業(yè)編碼和關注氣象要素。系統(tǒng)管理分為平臺管理、模塊管理、接口管理和角色管理,平臺管理主要包括平臺編碼、平臺LOGO、平臺密鑰等管理內(nèi)容,模塊管理主要包括模塊編碼、模塊路徑、跳轉(zhuǎn)方式、所屬平臺等內(nèi)容,接口管理主要包括接口名稱、接口地址、請求方式等內(nèi)容,角色管理根據(jù)不同平臺不同用戶分配不同的角色權(quán)限。用戶管理主要是針對不同平臺的用戶進行創(chuàng)建或刪除。日志管理主要針對不同平臺的操作日志、系統(tǒng)日志、接口日志等進行分類管理。
2020 年10 月開始,基礎數(shù)據(jù)支撐平臺通過對原有專線用戶分散的采集傳輸程序集約整合,以及對各業(yè)務服務系統(tǒng)的數(shù)據(jù)支撐,實現(xiàn)了氣象和行業(yè)數(shù)據(jù)在氣象部門內(nèi)部和外部的共享應用,集成氣象服務應用算法,打造了從數(shù)據(jù)采集加工傳輸?shù)娜鞒炭梢暬O(jiān)控,現(xiàn)已為觀天知水氣象綜合信息系統(tǒng)、廣西行業(yè)氣象服務網(wǎng)站、大藤峽APP、廣西行業(yè)氣象影響預報服務系統(tǒng)、廣西行業(yè)氣象服務集約化系統(tǒng)、覆冰專項氣象服務平臺等業(yè)務服務系統(tǒng)提供數(shù)據(jù)支撐,同時還在電力、水利、自然資源、民航等部門服務中進行業(yè)務應用,每日穩(wěn)定高效地執(zhí)行采集解析推送任務45302 項,日數(shù)據(jù)吞吐量約為52778MB,極大提高了氣象信息的及時性和各行業(yè)服務的應用能力。
敘述了基礎數(shù)據(jù)支撐平臺采用的Hadoop、Kafka 等關鍵技術(shù),并對平臺構(gòu)建流程和功能模塊進行了細致的介紹。平臺實現(xiàn)了在大數(shù)據(jù)框架下的數(shù)據(jù)自動采集、解析、推送、監(jiān)控、業(yè)務服務系統(tǒng)管理等功能。
基礎數(shù)據(jù)支撐平臺運行正常,已穩(wěn)定地為各業(yè)務服務系統(tǒng)和行業(yè)用戶提供數(shù)據(jù)服務,通過全流程可視化監(jiān)控,提高服務運維能力。
隨著氣象大數(shù)據(jù)云平臺“天擎”的不斷升級完善,以及各行業(yè)部門對氣象服務要求的不斷提高,平臺內(nèi)容及功能仍需進一步改進和完善,以適應社會與經(jīng)濟發(fā)展對專業(yè)氣象服務的需求,進而提供更具針對性的全方位、專業(yè)性和精細化氣象服務產(chǎn)品,提升行業(yè)氣象服務保障能力。