張小發(fā)
摘要:基于微服務(wù)架構(gòu)的民航綜合信息顯示系統(tǒng)的設(shè)計(jì)是通過三層分離和微服務(wù)架構(gòu)提供的細(xì)粒度化模塊構(gòu)建方式將民航綜合信息顯示系統(tǒng)所包含的應(yīng)用功能進(jìn)行分解,將系統(tǒng)所包含的航行情報(bào)信息、氣象信息、飛行計(jì)劃信息等功能模塊拆分為獨(dú)立的運(yùn)行模塊,各運(yùn)行模塊之間的部署、運(yùn)行、故障處理等相互獨(dú)立并且以消息交互的方式接入到由微服務(wù)架構(gòu)提供的注冊中心進(jìn)行統(tǒng)一監(jiān)控維護(hù)以提高系統(tǒng)設(shè)計(jì)的敏捷性、可伸縮性和可用性,同時(shí)通過網(wǎng)關(guān)隔離、斷路器、回退等機(jī)制提升系統(tǒng)的安全穩(wěn)定性,通過配置管理提高屬性的快速編輯。
關(guān)鍵詞:微服務(wù)架構(gòu);民航綜合信息顯示系統(tǒng)
1引言
依據(jù)Martin Fowler 在Microservices 中的描述,“微服務(wù)架構(gòu)”一詞是在過去幾年里涌現(xiàn)出來的,它用于描述一種獨(dú)立部署的軟件應(yīng)用設(shè)計(jì)方式。微服務(wù)這種架構(gòu)風(fēng)格就是把一組小服務(wù)演化成為一個(gè)單一的應(yīng)用的一種方法。每個(gè)應(yīng)用都運(yùn)行在自己的進(jìn)程中,并通過輕量級的機(jī)制保持通信,就像HTTP這樣的API。這些服務(wù)要基于業(yè)務(wù)場景,并使用自動(dòng)化部署工具進(jìn)行獨(dú)立的發(fā)布??梢杂幸粋€(gè)非常輕量級的集中式管理來協(xié)調(diào)這些服務(wù),可以使用不同的語言來編寫服務(wù),也可以使用不同的數(shù)據(jù)存儲(chǔ)。
民航綜合信息顯示系統(tǒng)旨在采用信息化的手段為空管局提供一套包含氣象數(shù)據(jù)、情報(bào)數(shù)據(jù)、飛行計(jì)劃數(shù)據(jù)等信息數(shù)據(jù)的采集、存儲(chǔ)、顯示管理等功能的信息一體化顯示系統(tǒng)為管制席位提供可視化的、直觀化、綜合化的信息服務(wù),提高席位的信息數(shù)據(jù)共享,提供信息數(shù)據(jù)的歷史查詢、及時(shí)消息推送與重要信息告警等功能,避免管制員“錯(cuò)”、“忘”、“漏”,提升管制員的工作效率和工作質(zhì)量。為適應(yīng)信息技術(shù)的發(fā)展,系統(tǒng)采用層次化、組件化的軟件體系結(jié)構(gòu),要求具有體系結(jié)構(gòu)穩(wěn)定、可移植性好、易于擴(kuò)充等特征。
綜合考慮微服務(wù)架構(gòu)的特點(diǎn)及民航綜合信息顯示系統(tǒng)的要求,基于微服務(wù)架構(gòu)的設(shè)計(jì)將能更好的滿足民航綜合信息顯示系統(tǒng)的需求,提升民航信息化建設(shè)的水平。
2正文
由于民航綜合信息顯示系統(tǒng)需要處理的信息種類比較多,信息量大,一般化的信息系統(tǒng)建設(shè)難以滿足系統(tǒng)運(yùn)行所需的高穩(wěn)定、低耦合的要求,結(jié)合系統(tǒng)需要采集、存儲(chǔ)、顯示管理等功能的要求本文將系統(tǒng)分為信息引接、信息存儲(chǔ)、信息發(fā)布三層分別建設(shè)。
2.1 信息接入層設(shè)計(jì)
信息接入層包括氣象數(shù)據(jù)、情報(bào)數(shù)據(jù)、飛行計(jì)劃數(shù)據(jù)等部分,這些數(shù)據(jù)在引接過程中數(shù)據(jù)源千差萬別,比如氣象數(shù)據(jù)來自機(jī)場自觀系統(tǒng)、情報(bào)數(shù)據(jù)來自情報(bào)中心、飛行計(jì)劃數(shù)據(jù)來源于飛行計(jì)劃集中處理中心等,同時(shí)各種數(shù)據(jù)之間在引接過程中相互關(guān)聯(lián)性較弱甚至沒有任何關(guān)聯(lián),在引接過程中處理的方式也因業(yè)務(wù)的不同有所差異,因此可以將每個(gè)數(shù)據(jù)引接類別建立成一個(gè)獨(dú)立的微服務(wù)客戶端(Service),如下圖:
每個(gè)微服務(wù)客戶端(Service)負(fù)責(zé)各自的數(shù)據(jù)接收、格式轉(zhuǎn)換、數(shù)據(jù)清洗等工作,并將處理完的符合要求的數(shù)據(jù)同步到數(shù)據(jù)存儲(chǔ)模塊中,相互之間相當(dāng)于互相獨(dú)立的程序系統(tǒng),可以獨(dú)立開發(fā)、部署和運(yùn)維,信息交互完全隔離。
2.2信息存儲(chǔ)層設(shè)計(jì)
信息存儲(chǔ)層負(fù)責(zé)信息數(shù)據(jù)的長期有效保存,在整個(gè)系統(tǒng)中起到承上啟下的作用,既可以實(shí)時(shí)接收并且保存信息接入層的數(shù)據(jù),同時(shí)可以實(shí)時(shí)響應(yīng)信息發(fā)布層的索取響應(yīng),提供有效的數(shù)據(jù)服務(wù)。該部分可以采用關(guān)系型數(shù)據(jù)庫,如Oracle、SqlServer等,也可以應(yīng)用非關(guān)系型數(shù)據(jù)庫如HBase、MongoDB等,不管哪種數(shù)據(jù)庫,里面的表結(jié)構(gòu)設(shè)計(jì)都可以依據(jù)業(yè)務(wù)劃分設(shè)計(jì)成獨(dú)立表或是獨(dú)立表空間,下面是基于Oracle 11g的數(shù)據(jù)表簡要設(shè)計(jì):
2.3信息發(fā)布層設(shè)計(jì)
信息發(fā)布層主要負(fù)責(zé)獲取信息存儲(chǔ)層的信息數(shù)據(jù),經(jīng)過業(yè)務(wù)邏輯處理后,實(shí)時(shí)響應(yīng)外部請求,是整個(gè)系統(tǒng)對外發(fā)布信息的窗口,與信息接入層在業(yè)務(wù)功能上不存在必然的信息數(shù)據(jù)交互,因此建立獨(dú)立的微服務(wù)服務(wù)器,監(jiān)視管理信息發(fā)布層的微服務(wù)客戶端(Service)。
信息發(fā)布層根據(jù)不同的數(shù)據(jù)業(yè)務(wù)同樣劃分為氣象信息交互模塊、情報(bào)信息交互模塊、飛行計(jì)劃信息交互模塊等微服務(wù)客戶端,充分分離業(yè)務(wù)提高程序的穩(wěn)定性和伸縮性,每個(gè)模塊獨(dú)自獲取數(shù)據(jù)并且依據(jù)微服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)的請求進(jìn)行數(shù)據(jù)的業(yè)務(wù)邏輯處理并且向微服務(wù)網(wǎng)關(guān)移交處理后的信息數(shù)據(jù)。由于對信息發(fā)布層的微服務(wù)客戶端的訪問存在兩級及以上信息轉(zhuǎn)發(fā)的過程,短暫的網(wǎng)絡(luò)故障、服務(wù)器宕機(jī)、網(wǎng)絡(luò)負(fù)載過大可能會(huì)造成單節(jié)點(diǎn)無法及時(shí)響應(yīng),從而產(chǎn)生各級的級聯(lián)故障,為最大程度的提高程序的可靠性與穩(wěn)定性,每個(gè)信息交互模塊中加入斷路器、回退等機(jī)制控制模塊內(nèi)部的特殊異常。
信息發(fā)布層由于面向多種用戶,多種業(yè)務(wù)交錯(cuò)調(diào)用,網(wǎng)絡(luò)環(huán)境復(fù)雜,直接訪問既提升了訪問的難度,同時(shí)加大了安全隱患。微服務(wù)網(wǎng)關(guān)提供身份驗(yàn)證和安全性、觀察和監(jiān)控、動(dòng)態(tài)路由、負(fù)載分配、靜態(tài)響應(yīng)處理、路由多樣化等功能,通過網(wǎng)關(guān)將信息請求過程劃分為內(nèi)外兩個(gè)部分,將集群的服務(wù)都隱藏到網(wǎng)關(guān)后面,屏蔽內(nèi)部結(jié)構(gòu)的復(fù)雜性并且對外提供統(tǒng)一的網(wǎng)絡(luò)訪問端口,提高訪問便捷性,同時(shí)提升了集群的安全性。
配置服務(wù)器中包含每個(gè)模塊的端口、服務(wù)名、轉(zhuǎn)發(fā)路由等屬性信息,當(dāng)發(fā)生屬性變更時(shí),配置服務(wù)器可以在程序不間斷運(yùn)行的情況下通過消息通知的方式將配置屬性傳遞到相應(yīng)的微服務(wù)客戶端,實(shí)現(xiàn)屬性的在線更改,提高屬性修改的效率。
3結(jié)語
基于微服務(wù)架構(gòu)的民航綜合信息顯示系統(tǒng)的設(shè)計(jì)是綜合考量民航綜合信息顯示系統(tǒng)的業(yè)務(wù)需求和微服務(wù)架構(gòu)的特點(diǎn),在三層分離的基礎(chǔ)上將系統(tǒng)化整為零、充分分解為獨(dú)立運(yùn)行的客戶端,每個(gè)客戶端的業(yè)務(wù)、故障、穩(wěn)定性等的處理相互獨(dú)立,在信息接入層和信息發(fā)布層上分別由微服務(wù)服務(wù)器統(tǒng)一監(jiān)控并且管理。高度的解耦使系統(tǒng)的敏捷性、可伸縮性、可用性及運(yùn)行效率等等得到極大的提高。網(wǎng)關(guān)的安全隔離、斷路器/回退的局部故障分離、配置服務(wù)器的動(dòng)態(tài)屬性變更等策略進(jìn)一步提升了系統(tǒng)的安全性和運(yùn)行穩(wěn)定性。隨著業(yè)務(wù)的變更,整個(gè)系統(tǒng)可以在不間斷運(yùn)行的情況下,撤銷、增加相應(yīng)的業(yè)務(wù)客戶端,極大的提升了民航綜合信息顯示系統(tǒng)的適應(yīng)性。
參考文獻(xiàn):
[1]Martin Fowler,Microservices,2014.3.
[2]楊恩雄,瘋狂Spring Cloud微服務(wù)架構(gòu)實(shí)踐,2018.1.
[3]《中國民航國際通信手冊》.
(作者單位:南京萊斯信息技術(shù)股份有限公司)