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