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