◆崔磊 馮宇星 石鋒 趙瑞
氣象信息決策支持系統(tǒng)微服務化改造及設計
◆崔磊1馮宇星1通訊作者石鋒2趙瑞1
(1.國家預警信息發(fā)布中心 北京 100081;2.中國氣象局減災司公眾處 北京 100081)
氣象信息決策支持系統(tǒng)是服務于國辦和應急管理部的決策業(yè)務系統(tǒng),系統(tǒng)采用傳統(tǒng)的Web服務架構(gòu)開發(fā),目前很難滿足面向山洪地質(zhì)災害防治和應急管理需求的行業(yè)服務應用,不能支撐各行業(yè)領域定制服務功能,因此需要以“微服務”架構(gòu)思想對系統(tǒng)進行功能升級改造,實現(xiàn)功能服務管理去中心化,系統(tǒng)部署獨立化,功能實現(xiàn)接口化,能夠靈活應對本地化和行業(yè)化需求?!拔⒎铡笔且环N架構(gòu)模式,屬于分布式架構(gòu)系統(tǒng),具有跨語言、“易部署”等優(yōu)點,但“微服務”在對傳統(tǒng)系統(tǒng)應用改造中也有許多需要突破的難點。本文在對“微服務”架構(gòu)技術(shù)體系研究的基礎上,結(jié)合氣象信息決策支持系統(tǒng)的架構(gòu)及業(yè)務體系,給出了系統(tǒng)微服務化改造的設計方案。
微服務;分布式架構(gòu);氣象信息決策支持系統(tǒng);改造
2016年12月,國家發(fā)布《中共中央國務院關于推進防災減災救災體制機制改革的意見》(以下簡稱“《意見》”)文件,《意見》中指出:目前的突出問題是災害信息共享和防災減災救災資源統(tǒng)籌不足;注重災后救助向注重災前預防轉(zhuǎn)變,從應對單一災種向綜合減災轉(zhuǎn)變,從減少災害損失向減輕災害風險轉(zhuǎn)變。因此,2017年在國家預警發(fā)布中心領導的指導下,建設國家突發(fā)事件預警信息發(fā)布系統(tǒng)—氣象信息決策支持系統(tǒng),為國家應急管理工作提供輔助支持。國家級氣象信息決策支撐系統(tǒng)依托“公有云”資源建設,以預警信息和突發(fā)事件為主線,以匯集的各部門數(shù)據(jù)為基礎,通過分析、挖掘氣象和經(jīng)濟社會大數(shù)據(jù)與災害事件間的相關關系,提供基于影響的預報預警信息,并實現(xiàn)可視化應用。
系統(tǒng)自2016年業(yè)務化運行以來,在密云火災、貴州山體滑坡、臺風利奇馬等百余次重大突發(fā)事件中,為國務院應急辦和應急管理部防災救災業(yè)務提供覆蓋災前、災中、災后的輔助決策支持服務,起到了很好的服務和應用效益。預報預警信息是自然資源、交通、電力、能源、森林火險等行業(yè)日常生產(chǎn)順利開展的重要參考資料。
目前系統(tǒng)采用傳統(tǒng)的Web服務架構(gòu)開發(fā),很難滿足面向山洪地質(zhì)災害防治和應急管理需求的行業(yè)服務應用,不能支撐各行業(yè)領域定制服務功能,因此迫切需要解決系統(tǒng)可移植性差,需求變動成本高,不支持定制等方面的問題。
本文在研究“微服務”技術(shù)架構(gòu)基礎上,結(jié)合氣象信息決策支持系統(tǒng)的業(yè)務需求、架構(gòu)體系,設計了氣象信息決策支持系統(tǒng)微服務化的改造方案,實現(xiàn)決策系統(tǒng)能夠靈活應對本地化和行業(yè)化需求,為國家應急決策提供有力支撐。
國家級氣象信息決策支撐系統(tǒng)采用傳統(tǒng)的Web服務架構(gòu)開發(fā),架構(gòu)自底向上分別建立了數(shù)據(jù)層、資源層、應用層、接口層和交互層?;诖思軜?gòu),氣象信息決策支持系統(tǒng)功能、數(shù)據(jù)不斷豐富,研發(fā)了突發(fā)事件、氣象產(chǎn)品、熱點預警等各類服務產(chǎn)品。這樣的平臺架構(gòu)雖然滿足了業(yè)務需求,但是在各行業(yè)領域服務功能定制開發(fā)、“運維”過程中,存在很多問題,主要表現(xiàn)在以下方面:
(1)系統(tǒng)業(yè)務架構(gòu)缺少統(tǒng)一規(guī)劃,沒有標準接口,無法通過功能組合的方式快速響應新需求。
(2)部分業(yè)務重疊,業(yè)務流程相似,存在重復工作,成果復用率低。
(3)功能模塊耦合度高,代碼開發(fā)周期長,系統(tǒng)部署耗時,可伸縮性和靈活性差等問題。
因此,為了更好運用國家級氣象信息決策支撐系統(tǒng)現(xiàn)有成果,向各行業(yè)領域的氣象信息決策支持擴展服務。迫切要求以“微服務”架構(gòu)思想對系統(tǒng)進行功能升級改造,實現(xiàn)功能服務管理去中心化,系統(tǒng)部署獨立化,功能實現(xiàn)接口化,能夠靈活應對本地化和行業(yè)化需求。
自2014年始,微服務(Microservice)概念開始火爆,各大技術(shù)“峰會”均以“微服務”為主題展開討論?!拔⒎铡奔軜?gòu)(Microservices Architecture,MSA)主要依賴領域驅(qū)動設計、敏捷方法論、持續(xù)交付、虛擬化和基礎設施自動化、DevOps這些內(nèi)容?!拔⒎铡奔軜?gòu)是把小的服務開發(fā)成單一應用的形式,運行在自己的進程中,并采用輕量級的機制進行通信,這些服務都圍繞業(yè)務能力來構(gòu)建,通過全自動部署工具來實現(xiàn)“獨立部署”[1-3]。這些服務可以使用不同的編程語言和不同的數(shù)據(jù)存儲技術(shù),并保持最小化管理。因此,“微服務”架構(gòu)有以下好處:
(1)每個“微服務”都相對較?。阂子陂_發(fā)者理解;IDE反應更快,開發(fā)者更高效;Web容器啟動更快,開發(fā)者更高效,并提升了部署速度。
(2)每個服務都可以獨立部署,易于頻繁部署新版本的服務。
(3)易于伸縮開發(fā)組織結(jié)構(gòu),提升故障隔離。
(4)每個服務可以單獨開發(fā)和部署
通過對“微服務”技術(shù)路線的深入研究,對氣象信息決策系統(tǒng)現(xiàn)有的功能模塊進行升級改造,下文按照“微服務”的架構(gòu)思想,設計了氣象信息決策支持系統(tǒng)微服務化改造方案,并通過以下步驟實現(xiàn)。
以“微服務”架構(gòu)思想對現(xiàn)有的功能模塊進行升級改造,需要遵循以下規(guī)則[4-5]:
(1)開發(fā)規(guī)范:遵循國家預警信息發(fā)布中心集約化業(yè)務管理辦法和開發(fā)規(guī)范,項目全部部署于集約化平臺,能夠提供可復用的數(shù)據(jù)、算法等接口服務。
(2)業(yè)務分解原則:按照領域驅(qū)動原則和單一職責原則,實現(xiàn)對所有業(yè)務的分解。
(3)部署原則:實現(xiàn)獨立部署,每個“微服務”獨立運行在各自的進程中,加快部署速度。
(4)輕量級通信:“微服務”間通信應采用輕量級的通信協(xié)議。
通過對氣象信息決策支持系統(tǒng)中的數(shù)據(jù)業(yè)務進行梳理,確定目前系統(tǒng)數(shù)據(jù)服務包括四大類:預警信息服務、突發(fā)事件服務、氣象信息服務和基礎信息服務。預警信息服務包括獲取所有生效預警服務、獲取熱門預警數(shù)據(jù)排行服務、獲取31省及自治區(qū)預警數(shù)量排行服務等;突發(fā)事件服務包括獲取突發(fā)事件詳情數(shù)據(jù)服務、熱點預警分析服務等;氣象信息服務包括獲取氣溫、降水、雷達圖、云圖、臺風、“落區(qū)”數(shù)據(jù)等服務;基礎信息服務包括獲取船舶數(shù)據(jù)、交通擁堵數(shù)據(jù)、POI數(shù)據(jù)、河流水庫水位數(shù)據(jù)、城市預報數(shù)據(jù)等服務。
將單體架構(gòu)的應用拆分為“微服務”時,應考慮“微服務”的顆粒度問題。根據(jù)“微服務”單一職責原則,結(jié)合氣象信息決策支持系統(tǒng)的業(yè)務場景及數(shù)據(jù)服務現(xiàn)狀情況,將系統(tǒng)功能分為四個“微服務”工程,分別為:預警信息服務工程、突發(fā)事件工程、氣象信息服務工程和基礎信息服務工程,并對四個“微服務”工程進一步分解為45個“微服務”,并按照國家預警信息發(fā)布中心的開發(fā)規(guī)范,對45個“微服務”進行代碼改造。基于“微服務”架構(gòu)的技術(shù),氣象信息決策支持系統(tǒng)改造架構(gòu)如下圖1所示:
圖1 氣象信息決策支持系統(tǒng)微服務化改造架構(gòu)圖
“微服務”架構(gòu)下,氣象信息決策支持系統(tǒng)拆分成很多個獨立運行的服務,這些微服務間通信采用輕量級的通信協(xié)議,采用REST服務進行通信,因此需要定義各種各樣的服務接口[5]。具體來說,在基于Spring Cloud的“微服務”模式中,各個“微服務”會基于Spring MVC的Controller定義多個該微服務需要向外部發(fā)布的接口。我們采用Swagger工具進行“微服務”接口測試。Swagger是一款基于YAML、JSON語言的文檔在線生成和代碼自動生成的工具,通過Swagger-UI就可以完成對所有接口的測試。
采用持續(xù)集成的方式進行“微服務”工程部署,持續(xù)集成滿足了“微服務”獨立、進程隔離的特點[6],為“微服務”提供了開發(fā)、測試、構(gòu)建、部署與運維一整套自動化流水線。系統(tǒng)部署時,考慮容災備份,實現(xiàn)生產(chǎn)節(jié)點的雙機備份和容災,避免單點故障。
在深刻理解“微服務”技術(shù)架構(gòu)的基礎上,本文結(jié)合氣象信息決策支持系統(tǒng)的數(shù)據(jù)流程和業(yè)務場景,研究設計了微服務化的升級改造方案,通過確定改造原則、梳理數(shù)據(jù)流程現(xiàn)狀、確定業(yè)務分解方案、功能測試及部署五個步驟,實現(xiàn)對氣象信息決策支持系統(tǒng)的微服務化,從而進一步實現(xiàn)系統(tǒng)功能能夠靈活應對本地化和行業(yè)化需求。
[1]Sam Newman. 微服務設計[M].北京:人民郵電出版社,2016:70-85.
[2]王磊.微服務架構(gòu)與實踐[M].北京:電子工業(yè)出版社,2015:112-132.
[3]宋大為,侯婷婷,顧松敏,等.數(shù)據(jù)挖掘技術(shù)在電子商務領域的應用研究[J].科技創(chuàng)新與應用,2016(05):87.
[4]尹紹捷.移動互聯(lián)網(wǎng)技術(shù)與電子商務[J].科技創(chuàng)新與應用,2015(30).
[5]杜尊.基于微服務的互聯(lián)網(wǎng)金融平臺設計與實現(xiàn)[D].北京:北京交通大學,2018.
[6]張峰.微服務技術(shù)構(gòu)建大規(guī)模web系統(tǒng)的研究[J].科技創(chuàng)新與應用,2017(22).