中國電子科技集團公司第二十研究所 魚昆 李桂斌
針對數據鏈領域綜合應用平臺中包含諸多不同依賴環境、不同架構、不同軟硬件要求的軟件,本文首先分析了傳統的架構和SOA 架構的不足,提出以云平臺為底座基于微服務的層次化、服務化平臺架構,闡述了平臺架構的特征和集成方法;然后將綜合應用平臺的構建過程進行描述,并以不同類別軟件的接入改造為例說明架構良好的適配性;最后對平臺的應用部署、容器管理和服務中心功能進行驗證,取得了良好的應用效果。
對軍用軟件系統,如指控系統、應用平臺等需要將各種子系統集成并綜合處理展示,傳統的單體架構已經無法滿足這種大型軟件快速迭代、按需擴展的要求。引用[1]以分布式構件、DDS 數據分發技術對指控系統進行了設計,達到了一定程度的開放、通用[1];引用[2]以面向服務的架構(SOA)為基礎,解決了嵌入式軟件技術體制各異接入困難等問題[2]。當前在民用領域方興未艾的微服務理論已經取得了較好發展應用[3,4],并在向下一代發展。而在軍用軟件領域,由于網絡隔離和云設施投入大,研究和應用較為緩慢,使其微服務以易擴展和高可用的優點被廣為接受。引用[5]基于艦載指控系統作戰應用軟件,提出了作戰籌劃系統微服務架構的實現技術途徑[5];引用[6]針對傳統指揮控制系統存在的系統封閉等問題,采用了基于微服務為基礎的云原生方法構建了開放式指控平臺[6]。本文研究的數據鏈領域綜合應用平臺作為數據鏈方面的一個集管理、仿真、驗證的大型系統,其架構關系到系統本身的生命力,本文對平臺特點進行了闡述,并結合服務化主流技術分析研究,以構建開放可靠的綜合應用平臺。
數據鏈領域綜合應用平臺是將數據鏈領域中的頂層管理、體系規劃、仿真模擬、技術驗證、教學培訓等類型應用軟件進行集成,形成一個大而全的綜合系統。設計這樣的大型平臺系統主要是為將數據和業務流程統一到一個系統上面來,各個用戶登錄同一個系統進行相關的數據獲取或業務處理,從而免去了系統間需要通過非數字化的手段(報告、報表)來傳遞信息,使數據的生產和消費更加流暢,使需要各單位協作的業務流程更加便捷。但是由于平臺系統下軟件眾多,類型多樣,且是由多家廠商單位開發維護的,導致軟件集成難度大,交互設計溝通多,具體表現在:(1)軟件體制不一。有的軟件是B/S 軟件,有的是C/S 軟件,有的是單體軟件,有的是需要依賴特殊軟硬件才能正常運行的應用;(2)部署平臺各異。有的軟件需要部署在Linux 系統,有的需要部署在Windows 系統,有的嵌入式軟件需要運行在Vxworks 上等;(3)迭代需求不同。部分軟件由于功能不明確,在開發部署過程中需要持續迭代,持續改進,有些軟件基于穩定的業務和過程,基本不需要改動。
傳統的開發集成方法是通過設計單體軟件,將需要集成的各軟件、數據、處理等都接入到這個大而全的中心軟件中。這就需要對各軟件進行深度的改造、適配,將技術體制、部署平臺等都統一到中心軟件上來,保證用戶通過這個中心軟件能夠操作處理其他面向具體業務的軟件。這種方法的缺點顯而易見,需要對系統中各軟件進行適配開發或者改造,不僅開發、溝通工作量大,而且軟件間互相交連,單個軟件的需求模糊進度落后可能導致多個軟件的進度拖延。這些不足概括起來有以下幾點:(1)新增業務困難。由于系統內模塊眾多,互相依賴復雜,當加入新業務時,極易對已有業務產生或多或少的影響;(2)系統可靠性下降。系統規模越龐大復雜,出故障的概率就越高;(3)協作效率降低。各軟件間由于涉及復雜的接口和互相交叉的依賴關系,需要大量溝通協調的工作做支撐;(4)軟件迭代受限。由于系統規定了各軟件的架構或技術路線,當需要對軟件進行技術升級時就會產生阻礙。
針對傳統開發集成模式的問題,一個解決方案就是遵循SOA 規則,將應用進行縱向和橫向的拆分,對應用系統進行服務化轉型。其將應用程序的不同功能單元通過服務接口聯系起來,接口采用中立方式定義,獨立于實現服務的硬件、操作系統和語言,運行在不同系統中的服務可通過統一和通用的方式進行交互。
SOA 的關鍵技術有企業服務總線ESB、遠程過程調用RPC、Web Service[7]。但是隨著發展,逐漸發現SOA的缺點開始顯現,主要有:ESB 承載了所有的服務消息通信,對于高并發、大系統,ESB 模塊太“重”、維護成本大、服務間的組合方式不夠靈活、擴展性不強等。雖然SOA 架構缺點明顯,但是服務化的方向沒有錯,龐大系統如果不采用服務化架構,那將很快被淘汰。主要體現在:服務化提高了軟件間的交互能力,減少了業務煙囪、數據孤島,減小了算力浪費,更大程度地實現了信息的融合與共享;更加容易地對跨地域服務進行調用和集成;服務解耦,迭代快速;更易于知識產權的保護。因此,近年來,隨著云計算、容器化的快速發展,新的服務化架構——微服務架構獲得了更好的應用和反饋,其主要特點為:對系統的劃分更加細粒度,共用的組件能夠更好地得到重用和維護;減少了服務間的耦合,只需遵守約定的API;服務集成不受限于過時的或特有的架構;促進了軟件的敏捷開發。因此本文采用微服務架構和相關技術對平臺進行構建。
要構建基于微服務的靈活可靠、統一開放的數據鏈領域綜合應用平臺,首先要從底層構建硬件集群,在綜合資源的基礎上,向上構建虛擬容器集群及容器編排管理工具,最后構建業務應用服務和微服務治理相關工具,保證整個平臺能夠提供穩定可靠的服務。基礎設施層將物理設備進行整合統一,形成整個平臺的硬件資源池,對各個物理機上的計算能力、存儲能力、網絡能力和輸入輸出設備統一進行管理,并可以根據需要進行劃分,從而支撐上部的各類業務應用。虛擬化層按照業務應用的需求將下部資源進行劃分配置,構建虛擬化容器,將應用打包部署后形成服務容器,同時支持對容器的管理、編排等功能。業務服務層提供頂層管理、體系規劃、仿真模擬、技術驗證、教學培訓等各類應用的服務入口,向上面向用戶,向下鏈接到具體的微服務容器,容器間相互交連,完成業務功能。支持對各類容器服務進行整合管理,包括服務注冊、發現等。各類用戶通過服務入口進入平臺,獲取各項業務能力和數據資源,完成具體的任務目標。
云平臺承擔著合并底層資源、規范基礎架構、連接業務要素、支撐上層應用等任務,是解決軟件系統集成的關鍵,是實施一體化數據底盤、形成網絡信息體系能力的重要支撐,在平臺中發揮著“基座”的作用。本文采用基于國產化的軟硬件環境構建云平臺,其軟硬件環境如表1 所示。

表1 軟硬件環境Tab.1 Software and hardware environment
云平臺按照虛擬化的粒度分為多種云,本文采用基于Docker+Kubernetes 的容器云。通過分布式集群資源管理的方式,將集群內各類資源進行統一管理、全局調度,支撐上層服務在容器云環境下的調度運行。部署完容器云后,即擁有了對基礎資源進行容器虛擬化并進行管理的能力,包括監視物理服務器狀態,集群CPU、內存、存儲、網絡占用,每個虛擬容器的狀態等信息,基于鏡像進行容器構建等。然后對微服務管理相關工具進行部署,主要包括配置目錄、服務支撐后端、服務支撐前端、Center-check、K8swatch、Podinteractive 以及Rkts、Redis 等基礎服務,以支撐復雜的服務調用關系,保證服務高可用,主要能力包括:(1)服務治理。包括服務注冊、服務發現、服務注銷。(2)服務調用。支撐服務間的遠程調用,基于Http 的RESTful 接口和基于TCP 的RPC 協議。(3)服務網關。包括統一接入、安全防護、協議適配、流量管控、請求容錯等能力。(4)服務熔斷。保證單個微服務的擁塞或錯誤不會使整個服務鏈條產生崩潰。(5)鏈路追蹤。支持對服務鏈路監控追蹤,以進行排錯調優。
微服務體系構建完成后,就可以對業務應用的服務容器進行打包、部署、編排、維護等。業務應用容器按照應用包+Docker 基礎鏡像進行打包,然后配置容器依賴的數據庫與外部服務,配置容器參數,包括計算核心數量、內存大小、DFS 掛接點、服務副本數、存活探針地址、配置文件注入等,然后對容器進行啟動測試,容器打包啟動的Docker File 格式如下:
平臺共性軟件和業務應用軟件按照上述步驟部署到云平臺,完成各軟件向平臺的集成與構建,形成自下而上的基礎設施、工具支撐到業務應用的整體架構,并具備開放、擴展、可靠的能力。
數據鏈領域綜合應用平臺中包含新研軟件和沿用軟件,這些軟件架構多樣,并不都是云原生應用,而且部分軟件包含定制化的硬件,因此應該分別考慮應用的微服務化接入和改造。(1)原生的B/S 應用。可直接將應用的各模塊進行拆分,分別打包部署,編排服務,形成整體的業務能力。(2)C/S 應用。需要對客戶端軟件結合平臺的服務中心API 進行改造,從而可以在客戶端運行時能夠動態獲取服務端地址并進行交互,客戶端通過服務中心進行更新。(3)單體應用。需要大量運行資源的應用進行C/S 或B/S 改造,將其拆分為客戶端與服務端,客戶端通過服務端獲取資源或結果,從而減輕客戶端的壓力;不需要大量運行資源的,可直接改造后運行在終端機上,通過服務中心獲取待交互服務的地址。(4)不適合容器化與需要硬件支撐的應用。直接作為非虛擬化的外部服務與平臺進行集成,這些服務統一注冊到服務中心,從而和其他服務相互感知,通過平臺整體管理調用。(5)部分沿用的軟件已對業務功能有較完整的包裝和精煉,雖然按照微服務的思想需要進行模塊拆分,但是由于其更新迭代的頻率不高,模塊復用幾率小,因此可直接作為單個服務快速接入、快速集成。例如,部分軟件需要采用DDS 進行消息通信,可直接將DDS 作為一個服務進行接入,從而減少消息總線改造的工作量和難度。
通過上述方式,將各種軟件服務以較小改造成本、較大集成效率和較強交互能力接入到數據鏈領域綜合應用平臺中,形成了一個開放、可靠的以云平臺為基礎的復合系統,同時也形成了各單位在數據鏈領域進一步激發創新活力的眾創平臺。
軍用軟件系統由于其自身特點,采用服務化架構的方式并未完全鋪開,本文研究了將微服務架構引入數據鏈領域綜合應用平臺的集成方法,取得了良好的應用效果。通過研究與應用,證明微服務架構是實現兼容不同技術體制、軟件架構和軟硬件環境的重要手段之一,是對已有軟件模塊化、服務化的體系架構理論的進一步發展,能夠最大限度地解放集成工作,讓各服務專注于自身業務能力。其松散耦合的關系能讓各服務更快速迭代需求變化,從而提升企業數字化能力,促進以用戶為中心的轉型。本文所提出的集成構建方法對于相關復雜系統有一定的參考意義。但是,軍用系統對微服務的架構使用還很有限,其面向具體業務場景的適配問題還未完全挖掘;服務化架構仍在發展當中,基于邊車模式的多語言易用和基礎設施單獨演進的服務網格架構[8]研究也在不斷深入等。在后續的研究實踐中,將對這些問題持續關注。