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

表1 部分微服務(wù)
電波環(huán)境數(shù)據(jù)質(zhì)量評價系統(tǒng)微服務(wù)總體結(jié)構(gòu)設(shè)計[2]如圖1所示。

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

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

圖3 實時監(jiān)視功能界面
系統(tǒng)的查詢統(tǒng)計功能由前臺服務(wù)調(diào)用后臺文件數(shù)據(jù)微服務(wù)的完整性評估功能實現(xiàn),效果如圖4所示。

圖4 查詢統(tǒng)計功能界面
系統(tǒng)的質(zhì)量評價功能由前臺服務(wù)調(diào)用后臺結(jié)構(gòu)數(shù)據(jù)微服務(wù)實現(xiàn),效果如圖5所示。

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