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