劉書志,劉曉雷,李靜靜
(中國電波傳播研究所,山東 青島 266107)
電波環境數據質量評價系統是對各類電波觀測數據進行實時監控、查詢統計、質量評價等功能的業務系統,處理的數據種類繁多,數據量巨大,從數據內容上分,主要包括電離層垂直探測數據、電離層斜向探測數據、電離層閃爍和TEC,對流層溫濕壓、降雨衰減等數據等;從數據形式上分,主要包括文件數據和結構數據。每類數據評價機制和方法都不相同,隨著電波觀測手段的進步和發展,數據種類逐漸增多,評價維度也從完整性、時效性和準確性三個維度,變成了完整性、時效性、一致性和準確性四個維度。原有的系統采用單體設計,系統變得日益臃腫和龐大,每類數據的評價方法的改進,都會影響整個系統,運維變得困難,且該系統的效率變得低下。
針對當前數據質量評價系統的特點,引入微服務架構,以數據為基礎,以服務為中心,將系統中的不同功能模塊拆分成多個不同的服務,這些服務都能夠獨立部署和擴展[1],實現不同類別的數據質量評價服務獨立運行,各類數據評價方法的改進不再依賴其他數據的微服務;同時,對文件數據和結構化數據的質量評價的共性需求設計相應的微服務。各微服務以輕量通信的方式來進行協作,以便實現集中式的服務管理[2]。
微服務[3]是系統架構上的一種設計風格,它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間通過基于HTTP協議的RESTful API進行通信協作。被拆分成的每一個小型服務都圍繞著系統中的某一項或一些耦合度較高的業務功能進行構建,并且每個服務都維護著自身的數據存儲、業務開發、自動化測試以及獨立部署機制。由于有了輕量級的通信協作基礎,所以各個服務可以使用不同的語言和技術來實現。
微服務因為其針對性的設計理念,具有眾多優勢:
1)服務組件化
在微服務架構中,會對服務進行組件化分解,使服務成為一個可以獨立更換和升級的單元[3-5],不同的服務通過HTTP等通信協議進行協作,而不是像傳統組件那樣以嵌入的方式協同工作。每一個服務都以獨立開發、部署,可以有效避免一個服務的修改引起整個系統的重新部署。
2)技術異構化
在實施服務架構時,通過采用輕量級的契約定義接口,使得服務本身依賴的具體技術平臺不再那么敏感,整個微服務架構系統中的各個組件就能針對其不同的業務特點選擇不同的技術平臺,允許技術異構性[7]。
3)高容錯性
在微服務架構中,由于服務都運行在獨立的進程中,所以某一服務發生故障時,故障會被隔離在單個服務中,不會像單體架構中發生的進程內擴散等風險,從而不會影響整個系統[8]。
4)高可擴展性
由于微服務采用松散的HTTP協議或輕量級消息總線方式傳遞消息,當系統需要新增服務功能時,只需發布新的服務上線即可,不會影響其他微服務的正常運行。并且,高擴展性能更好地支持資源動態分配[9]。
5)高可維護性
微服務的小規模有助于提高代碼的可理解性和可維護性[10]。當需要對微服務進行升級時,只需要對該服務進行改造、編譯和重新部署即可,不影響其他服務。
微服務作為一種架構設計風格,工程界已經出現若干微服務架構的實現框架,比較主流的有Dubbo[11]、Motan[12-13]、gRPC[14]和SpringCloud[15-16]等。
其中,Dubbo、Motan和gRPC屬于RPC(Remote Procedure Call)型微服務框架,這類框架可以像調用本地服務一樣調用遠程服務,從實現高效可靠的網絡透明傳輸。Spring Cloud本質上是一種RESTful的微服務框架,設計時從資源的角度對系統進行拆分并為每個資源設置特定的URI[17]。與其他微服務框架相比,Spring Cloud是一個解決微服務架構實施的綜合性解決框架[1],它整合了諸多被廣泛實踐和證明過的框架作為實施的基礎部件,優在該體系基礎上創建了一些非常優秀的邊緣組件。Spring Cloud因其功能全面,開源社區活躍,部署簡單而成為最為流行的微服務框架,本文將采用該框架實現系統設計。
針對當前電波環境數據質量評價系統過于臃腫龐大,難以維護且擴展困難,采用微服務架構對其進行重新設計。
電波環境數據質量評價系統處理的數據種類包括各類電波觀測數據的主要包括電離層垂直探測數據、電離層斜向探測數據、電離層閃爍和TEC等,每類數據包含文件數據、結構化數據兩種形態,對文件數據評價維度包括完整性、時效性,并且具備實時監視的功能;對結構化數據的評價緯度包括完整性、一致性和準確性。系統涵蓋了四個功能模塊:實時監視、查詢統計、質量評價和用戶管理功能。系統的用戶分為兩類:中心用戶和觀測站用戶,中心用戶具有所有數據的質量評價權限,觀測站用戶只具備對自身觀測站的質量評價權限。每類數據都有獨立的質量信息庫,每類數據的質量評價方法都有自身的特點,同時它們也有共性的功能需求:電波環境觀測數據庫訪問和用戶訪問權限控制。
數據質量評價系統相較于其他業務系統而言,業務的服務復雜性更多的是由于數據種類的復雜和數據體量的巨大,每類數據的評價方法依據數據自身的特點各有不同,同時,新類型的數據不斷增加,其對應的評價方法呈現出自身獨有的特征。基于這種考慮,按照數據種類進行系統的微服務設計,這樣既能充分發揮微服務的優勢,又能避免因為數據庫的切分造成的數據不一致。因此,數據質量評價系統采用微服務架構設計是十分合適和有效的。
根據電波環境質量評價系統的實際情況,將微服務分為共享微服務和獨有微服務兩種。共享微服務為各類數據提供共性功能需求,獨有微服務提供各類數據提供自身獨特的數據質量評價功能。表1列出了系統的部分微服務。

表1 部分微服務
電波環境數據質量評價系統微服務總體結構設計[2]如圖1所示。

圖1 系統微服務應用總體架構
系統總體架構由SpringCloud核心組件和微服務組成。通過Zuul提供智能路由、訪問過濾等功能,統一向前端服務提供RESTful API。Ribbon提供客戶端負載均衡的功能;RabbitMQ提供消息總線服務,實現微服務和SpringCloud的消息通信功能;Hystrix提供熔斷功能,避免單個微服務故障引起的風險蔓延;Eure?ka作為服務注冊中心,提供服務注冊與發現功能。
每類數據的質量評價功能作為獨有微服務,共性微服務為各微服務提供共性功能,各類服務均注冊到Eureka,由負載均衡和路由向外提供統一的服務接口,每一個微服務均含有獨立的數據庫。
電波環境數據質量評價系統由前端展示平臺、后臺微服務系統和電波環境數據庫組成,用戶訪問前端平臺,前端平臺通過RESTful API調用對應的后臺微服務,滿足用戶功能需求。系統功能架構如圖2所示。

圖2 系統功能結構圖
系統前臺系統包括實時監視、查詢統計、質量評價和用戶服務四個功能模塊組成。實時監視和查詢統計提供電波環境文件數據的完整性和時效性評價功能;質量評價功能模塊提供電波環境結構數據的完整性、一致性和準確性評價功能;用戶服務提供用戶身份驗證和權限管理功能。用戶通過驗證并登錄系統后,由前臺調用后臺微服務,實現數據的評價功能。
系統后臺系統由微服務集群和數據庫系統組成。微服務集群包括獨有微服務和共性微服務。獨有微服務按照數據形式又分為文件數據微服務和結構數據微服務,文件數據微服務提供文件數據(電離層垂測文件數據、電離層斜測文件數據、L頻段電離層閃爍文件數據、U頻段電離層閃爍文件數據和TEC文件數據等)的質量評價服務功能;結構數據微服務提供結構數據(電離層垂測結構數據、電離層斜測結構數據、L頻段電離層閃爍結構數據、U頻段電離層閃爍結構數據和TEC結構數據等)的質量評價功能。共性微服務作為基礎服務供其他微服務調用,包括電波環境數據庫訪問和用戶權限管理。電波環境觀測數據庫作為外部數據源,是質量評價系統的數據來源和評價對象,由數據訪問微服務讀取數據供數據評價微服務調用。除了數據訪問微服務,其他微服務均維護著自己獨有的數據庫,保證了數據庫的訪問效率,不會出現數據庫過快臃腫的現象,同時,考慮到各類數據質量評價的獨特性,數據庫的切分不會產生數據不一致的問題。
電波環境數據質量評價系統為用戶提供實時監視、查詢統計、質量評價功能,用戶的權限管理由用戶管理微服務實現,用戶登錄系統后即可使用系統提供的服務。
系統的實時監視功能由前臺服務調用后臺文件數據微服務的時效性評估功能實現,效果如圖3所示。

圖3 實時監視功能界面
系統的查詢統計功能由前臺服務調用后臺文件數據微服務的完整性評估功能實現,效果如圖4所示。

圖4 查詢統計功能界面
系統的質量評價功能由前臺服務調用后臺結構數據微服務實現,效果如圖5所示。

圖5 質量評價功能界面
本文設計并實現了一種基于微服務架構的數據質量評價系統,按照數據種類進行微服務劃分,實現了各類數據的質量評價功能以獨立的微服務提供,有效解決了該系統數據種類繁多、業務復雜的問題,使得該系統具備服務組件化、技術異構化、高容錯性高、可擴展性和高可維護性等優點,并且,由于數據質量評價系統本身具備數據各異性,能有效地避免因為數據庫切分帶來的數據不一致的問題,為后續該系統的運行維護和業務擴展提供了有力支撐。該設計方案為數據質量評價類系統提供了一種有效的解決途徑。