石釗銘 劉傳波
(武漢市江夏區(qū)藏龍大道709號(hào) 武漢 430205)
現(xiàn)代戰(zhàn)爭作戰(zhàn)籌劃,是聯(lián)合作戰(zhàn)指揮機(jī)構(gòu)依據(jù)戰(zhàn)略戰(zhàn)役意圖和敵情、我情、戰(zhàn)場(chǎng)環(huán)境等,對(duì)聯(lián)合作戰(zhàn)進(jìn)行的運(yùn)籌謀劃和計(jì)劃安排[1],能否科學(xué)高效組織聯(lián)合作戰(zhàn)籌劃,從而贏得指揮決策優(yōu)勢(shì),把指揮員意圖變成決心、決心變成計(jì)劃、計(jì)劃變成行動(dòng),直接決定著戰(zhàn)爭進(jìn)程和結(jié)局。在當(dāng)今以網(wǎng)絡(luò)中心化環(huán)境為作戰(zhàn)背景的條件下,交戰(zhàn)方作戰(zhàn)力量更加多元、作戰(zhàn)行動(dòng)更加快捷、對(duì)抗更加激烈,對(duì)作戰(zhàn)籌劃的精度、深度、速度提出了更高要求[2]。在信息化技術(shù)的支撐下,對(duì)聯(lián)合作戰(zhàn)進(jìn)行籌劃、優(yōu)化和推演,不再僅僅憑構(gòu)想和思維簡單推理,而是采用意圖統(tǒng)領(lǐng),通過需求、問題驅(qū)動(dòng)牽引,采用規(guī)范的工具和算法進(jìn)行決斷推動(dòng)等方式方法,實(shí)現(xiàn)作戰(zhàn)籌劃方向正確、能做到突出重點(diǎn)、統(tǒng)籌規(guī)劃全局,快速實(shí)施方案籌劃,提高籌劃的實(shí)施效益[3]。
信息時(shí)代,海量信息處理和運(yùn)用矛盾日益突出,極大增加了指揮機(jī)構(gòu)掌握與運(yùn)用信息的難度,傳統(tǒng)作戰(zhàn)應(yīng)用架構(gòu)作戰(zhàn)籌劃系統(tǒng)采用固定架構(gòu),系統(tǒng)中軟件形態(tài)固化,無法解耦,敏捷性和靈活性受限。微服務(wù)架構(gòu)以敏捷、精益、持續(xù)交付的便捷和靈活深入人心[4],為敏捷開發(fā)和部署提供了巨大的幫助,將微服務(wù)架構(gòu)應(yīng)用于作戰(zhàn)籌劃應(yīng)用系統(tǒng),能增強(qiáng)作戰(zhàn)籌劃系統(tǒng)自身的“韌性”,提高廣域資源快速自主協(xié)同調(diào)度能力,能夠規(guī)范和幫助指揮機(jī)構(gòu)更好的展開工作。
微服務(wù)技術(shù)是傳統(tǒng)SOA(面向服務(wù)的架構(gòu))演化的結(jié)果[5],微服務(wù)相比傳統(tǒng)SOA服務(wù),粒度更細(xì)、責(zé)任單一、功能更自治,大多采用輕量級(jí)網(wǎng)絡(luò)協(xié)議進(jìn)行交互。結(jié)合輕量級(jí)虛擬化技術(shù)(Docker)可實(shí)現(xiàn)系統(tǒng)持續(xù)集成和快速部署,為迭代增量式的軍用系統(tǒng)快速演化、快速交付奠定技術(shù)基礎(chǔ)。采用微服務(wù)架構(gòu)將單體應(yīng)用模式的系統(tǒng)分解為一系列的服務(wù),并為每一個(gè)服務(wù)定義良好的業(yè)務(wù)邊界和上下文環(huán)境,解決傳統(tǒng)軍用系統(tǒng)代碼龐雜、業(yè)務(wù)組件之間耦合程度高、業(yè)務(wù)模塊之間存在循環(huán)依賴、系統(tǒng)維護(hù)難度大、升級(jí)成本高等問題[6]。由于以上特性,在軍用系統(tǒng)中具有極好的應(yīng)用前景。
微服務(wù)架構(gòu)正向著“用容器技術(shù)解決部署問題”向“用平臺(tái)解決部署和治理問題”的解決方案方向發(fā)展。向微服務(wù)架構(gòu)演進(jìn)通常包括以下幾個(gè)階段:1)傳統(tǒng)的SOA服務(wù)化改造;2)開始引入某些微服務(wù)原則,進(jìn)行針對(duì)性重構(gòu),如“一個(gè)任務(wù)一個(gè)服務(wù)”;3)引入整套完整的微服務(wù)原則;4)實(shí)現(xiàn)微服務(wù)的規(guī)?;?、添加服務(wù)發(fā)現(xiàn)、服務(wù)縮放能力等增強(qiáng)特性。依據(jù)以上方法,在作戰(zhàn)籌劃任務(wù)微服務(wù)實(shí)現(xiàn)的過程中,我們采用Docker容器技術(shù)包裝微服務(wù),對(duì)作戰(zhàn)籌劃任務(wù)劃分實(shí)現(xiàn)“一個(gè)基本任務(wù)一個(gè)服務(wù)”,采用Kubernetes作為服務(wù)部署管理的工具,同時(shí)以作戰(zhàn)籌劃系統(tǒng)管理平臺(tái)監(jiān)控和維護(hù)各個(gè)微服務(wù),實(shí)現(xiàn)微服務(wù)的規(guī)?;?,發(fā)現(xiàn)監(jiān)控等能力。
作戰(zhàn)籌劃系統(tǒng)采用微服務(wù)架構(gòu),總體架構(gòu)包含三個(gè)部分,分別是資源微服務(wù)封裝、服務(wù)統(tǒng)一注冊(cè)與封裝、任務(wù)終端統(tǒng)一管控。使用流行的容器技術(shù)Docker,實(shí)現(xiàn)服務(wù)的一體化封裝;針對(duì)作戰(zhàn)籌劃任務(wù)服務(wù)接入問題,利用統(tǒng)一注冊(cè)中心處理,實(shí)現(xiàn)了不同節(jié)點(diǎn)服務(wù)的接入,對(duì)不同作戰(zhàn)籌劃任務(wù)的管理采用統(tǒng)一終端平臺(tái)統(tǒng)一管控,屏蔽不同終端的異構(gòu)性。
資源微服務(wù)封裝,利用Docker技術(shù)對(duì)作戰(zhàn)籌劃任務(wù)進(jìn)行微服務(wù)化,并將所有的微服務(wù)保存在服務(wù)資源庫中,使之成為一個(gè)可以按需提供資源的服務(wù)資源池,在服務(wù)資源池之上進(jìn)行統(tǒng)一調(diào)度和管理,提供包括資源調(diào)度、存儲(chǔ)管理、鏡像管理等服務(wù),同時(shí)還提供對(duì)外的API接口,供上層應(yīng)用程序調(diào)用。
服務(wù)統(tǒng)一注冊(cè)與封裝,核心是Docker引擎,Docker引擎負(fù)責(zé)整個(gè)容器系統(tǒng)的控制和管理[7],向上支持基于容器的服務(wù)注冊(cè)、服務(wù)封裝、服務(wù)部署等功能,向下提供鏡像的管理、以及容器的創(chuàng)建、啟動(dòng)和銷毀等服務(wù)。另外,為滿足多容器集群的管理需求,使用Kubernetes容器管理工具,實(shí)現(xiàn)容器的有效編排和部署[8]。
作戰(zhàn)籌劃統(tǒng)一終端平臺(tái),面向各類的作戰(zhàn)籌劃任務(wù),采用統(tǒng)一視圖、統(tǒng)一流程、統(tǒng)一監(jiān)控,建立包括作戰(zhàn)籌劃流程管理、事務(wù)監(jiān)控器和消息隊(duì)列等組件,提供指揮員對(duì)作戰(zhàn)籌劃任務(wù)中微服務(wù)的直接操作界面,簡化服務(wù)管理。
由于作戰(zhàn)籌劃任務(wù)涉及對(duì)海、對(duì)空、對(duì)潛等多個(gè)方面,其復(fù)雜性和多樣性使得微服務(wù)粒度剖分困難[9]。以作戰(zhàn)籌劃任務(wù)的流程為基礎(chǔ)分析,指揮員領(lǐng)受上級(jí)命令后,綜合分析戰(zhàn)場(chǎng)情況,下達(dá)作戰(zhàn)命令,各級(jí)軍官根據(jù)作戰(zhàn)命令擬定作戰(zhàn)技術(shù),生成作戰(zhàn)方案后上報(bào)指揮員審批,繼續(xù)上報(bào)。按照流程的各個(gè)階段,采用資源離散劃分和模塊聚類技術(shù)對(duì)作戰(zhàn)籌劃任務(wù)中任務(wù)執(zhí)行的具體目標(biāo)、執(zhí)行地點(diǎn)、控制資源的狀態(tài)等方面要素進(jìn)行細(xì)分,確定作戰(zhàn)籌劃任務(wù)微服務(wù)實(shí)現(xiàn)類,即對(duì)作戰(zhàn)目標(biāo)的分解得到籌劃任務(wù)實(shí)體。將作戰(zhàn)籌劃任務(wù)劃分為多類微服務(wù),包括對(duì)空作戰(zhàn)籌劃任務(wù)微服務(wù)、對(duì)海作戰(zhàn)籌劃任務(wù)微服務(wù)、對(duì)潛作戰(zhàn)籌劃任務(wù)微服務(wù)、基礎(chǔ)任務(wù)微服務(wù)等。依靠Docker技術(shù),實(shí)現(xiàn)各類作戰(zhàn)籌劃任務(wù)中具體任務(wù)和基本任務(wù)中的微服務(wù)。并將微服務(wù)實(shí)體存入服務(wù)庫中,在作戰(zhàn)籌劃任務(wù)執(zhí)行流程過程中,選擇服務(wù)庫中的微服務(wù)搭建出作戰(zhàn)籌劃流程,在作戰(zhàn)籌劃流程執(zhí)行的過程中,通過感知任務(wù)的執(zhí)行情況,將作戰(zhàn)籌劃任務(wù)按設(shè)定的計(jì)劃執(zhí)行,最終實(shí)現(xiàn)微服務(wù)的作戰(zhàn)籌劃應(yīng)用系統(tǒng)。
微服務(wù)作戰(zhàn)籌劃應(yīng)用系統(tǒng)中,微服務(wù)按類劃分有利于微服務(wù)的資源快速建立與復(fù)用。服務(wù)間的邊界清晰,交互信息明確,主要包括以下幾類微服務(wù):
1)作戰(zhàn)任務(wù)計(jì)劃:實(shí)現(xiàn)作戰(zhàn)籌劃任務(wù)流程的基礎(chǔ),無論是哪類作戰(zhàn)籌劃任務(wù),都是以作戰(zhàn)任務(wù)計(jì)劃作為啟始服務(wù);
2)籌劃資源判定:通過計(jì)劃開啟的籌劃任務(wù),運(yùn)用資源進(jìn)行作戰(zhàn)籌劃,首先取得可用資源;
3)各類任務(wù)管理:是具體任務(wù)管理的入口;
圖1 作戰(zhàn)籌劃系統(tǒng)微服務(wù)劃分
4)各類武器作戰(zhàn)服務(wù):負(fù)責(zé)管理當(dāng)前任務(wù)我方參與的武器列表管理,對(duì)于不同類型的作戰(zhàn)籌劃,劃分不同的武器管理微服務(wù);
5)各類傳感器作戰(zhàn)服務(wù):負(fù)責(zé)管理當(dāng)前任務(wù)我方參與的傳感器列表管理,對(duì)于不同類型的作戰(zhàn)籌劃,劃分不同的傳感器管理微服務(wù);
6)作戰(zhàn)力量規(guī)劃服務(wù):管理我方作戰(zhàn)力量列表和敵方作戰(zhàn)力量列表,針對(duì)可用資源建立合理的作戰(zhàn)規(guī)劃;
7)作戰(zhàn)資源調(diào)度方案生成:對(duì)于作戰(zhàn)計(jì)劃進(jìn)行作戰(zhàn)籌劃的一系列規(guī)劃活動(dòng)生成資源調(diào)度方案,提交服務(wù);
8)作戰(zhàn)籌劃任務(wù)結(jié)果分析:采用科學(xué)的方法對(duì)作戰(zhàn)任務(wù)結(jié)果進(jìn)行評(píng)估。
將作戰(zhàn)籌劃任務(wù)的微服務(wù)封裝在docker容器中,容器的啟動(dòng)和關(guān)閉便捷迅速[9],各個(gè)微服務(wù)相對(duì)獨(dú)立,并可以分布運(yùn)行于不同的節(jié)點(diǎn)[10]滿足籌劃任務(wù)需求。作戰(zhàn)籌劃任務(wù)管理流程業(yè)務(wù)微服務(wù)化之后的特點(diǎn),體現(xiàn)在任務(wù)協(xié)同以及分布式事物處理兩個(gè)方面。微服務(wù)可以部署在同一節(jié)點(diǎn)但在實(shí)際運(yùn)行時(shí)需要考慮籌劃任務(wù)的執(zhí)行站位,通過建立典型作戰(zhàn)籌劃流程模型的過程來確定各項(xiàng)微服務(wù)在實(shí)際運(yùn)行過程中部署的節(jié)點(diǎn)。采用微服務(wù)架構(gòu),在執(zhí)行作戰(zhàn)籌劃應(yīng)用之前,要在確定的節(jié)點(diǎn)上部署對(duì)應(yīng)的微服務(wù)鏡像并運(yùn)行。我們采用kubernetes作為docker微服務(wù)容器的管理工具。作戰(zhàn)籌劃相關(guān)微服務(wù)以鏡像的方式保存在數(shù)據(jù)庫中,運(yùn)維人員只需要確定好部署節(jié)點(diǎn)的位置、部署節(jié)點(diǎn)上需要運(yùn)行的Docker容器信息。在系統(tǒng)運(yùn)行之前只需要部署鏡像并運(yùn)行該微服務(wù)的容器即可。
圖2 作戰(zhàn)籌劃系統(tǒng)微服務(wù)流程分析
在指揮節(jié)點(diǎn)中部署作戰(zhàn)任務(wù)計(jì)劃的相關(guān)微服務(wù),包括接受上級(jí)任務(wù)、編制初步?jīng)Q心、下達(dá)預(yù)研號(hào)令等;在綜合控制節(jié)點(diǎn)上部署各類任務(wù)管理的微服務(wù),將收到的上級(jí)決心等信息發(fā)送給各個(gè)協(xié)同節(jié)點(diǎn);各個(gè)協(xié)同節(jié)點(diǎn)收到上級(jí)指令后,啟動(dòng)本節(jié)點(diǎn)上報(bào)信息微服務(wù),將各個(gè)協(xié)同節(jié)點(diǎn)上的資源信息發(fā)送給綜合控制節(jié)點(diǎn)匯總;綜合控制節(jié)點(diǎn)上的作戰(zhàn)力量規(guī)劃服務(wù)將作出判斷;指揮節(jié)點(diǎn)作出作戰(zhàn)籌劃任務(wù)決定;由綜合控制節(jié)點(diǎn)和協(xié)同節(jié)點(diǎn)共同進(jìn)行各類武器傳感器的作戰(zhàn)計(jì)劃;由綜合控制節(jié)點(diǎn)進(jìn)行作戰(zhàn)資源調(diào)度方案生成服務(wù),并上報(bào)。
在微服務(wù)的集成應(yīng)用時(shí),具體步驟如下:
步驟1:以Kubernetes控制的Pods作為基本操作單元,把相關(guān)的一個(gè)或多個(gè)容器構(gòu)成一個(gè)Pod,Pod包含的容器運(yùn)行在同一個(gè)主機(jī)節(jié)點(diǎn)上,看作一個(gè)統(tǒng)一管理單元。如:在綜合控制節(jié)點(diǎn)上的Pod管理容器中,提供指令下發(fā)服務(wù)、情報(bào)匯總服務(wù)、作戰(zhàn)力量規(guī)劃服務(wù)、作戰(zhàn)資源調(diào)度方案生成等。
步驟2:真實(shí)應(yīng)用服務(wù)的抽象Services是由容器來支持并提供的,通過Proxy的port和服務(wù)selector決定服務(wù)請(qǐng)求傳遞給后端提供服務(wù)的容器,對(duì)外表現(xiàn)為一個(gè)單一訪問接口。
步驟3:確保任何時(shí)候集群中作戰(zhàn)籌劃任務(wù)各個(gè)微服務(wù)至少有Pod在運(yùn)行,Replication Controller使用預(yù)先定義的Pod模板創(chuàng)建Pods,Kubernetes管理時(shí)可以查看節(jié)點(diǎn)中的Pod,以及Pod中所處理的微服務(wù)信息。
相對(duì)傳統(tǒng)部署方式,運(yùn)維人員不再需要對(duì)各個(gè)不同節(jié)點(diǎn)不同環(huán)境中軟件的運(yùn)行狀態(tài)、配置信息進(jìn)行管理,各類軟件變更在測(cè)試完成后即可通過灰度部署等方式部署到生產(chǎn)環(huán)境,能提高戰(zhàn)場(chǎng)資源使用效率,能增強(qiáng)作戰(zhàn)籌劃系統(tǒng)自身的“韌性”[11],使得作戰(zhàn)籌劃應(yīng)用系統(tǒng)運(yùn)行效率大大提高。
微服務(wù)架構(gòu)下,大部分功能模塊都是單獨(dú)部署、獨(dú)立行動(dòng)的,彼此通過接口交互,都是無狀態(tài)的服務(wù),但作戰(zhàn)籌劃業(yè)務(wù)會(huì)涉及多個(gè)服務(wù),復(fù)雜度高。在實(shí)現(xiàn)作戰(zhàn)籌劃應(yīng)用系統(tǒng)時(shí),建立作戰(zhàn)籌劃管理平臺(tái)對(duì)微服務(wù)的運(yùn)行進(jìn)行監(jiān)控和運(yùn)維,作戰(zhàn)籌劃的容器集群管理平臺(tái)支持容器集群調(diào)度、編排,服務(wù)級(jí)的負(fù)載均衡[12],服務(wù)資源自動(dòng)彈性伸縮,服務(wù)異常自恢復(fù)等功能,并根據(jù)任務(wù)感知分散在各個(gè)節(jié)點(diǎn)上微服務(wù)執(zhí)行情況,協(xié)同各個(gè)微服務(wù)的執(zhí)行。作戰(zhàn)籌劃管理平臺(tái)對(duì)微服務(wù)運(yùn)行的監(jiān)控和管理,包括以下幾個(gè)部分:
1)服務(wù)注冊(cè)中心:對(duì)實(shí)現(xiàn)的在容器中運(yùn)行的微服務(wù)進(jìn)行注冊(cè),在作戰(zhàn)籌劃過程中能提供微服務(wù)注冊(cè)信息。
2)節(jié)點(diǎn)探針:采集各個(gè)節(jié)點(diǎn)容器中運(yùn)行的微服務(wù)具體狀態(tài)匯報(bào)給作戰(zhàn)籌劃管控中心,及時(shí)掌握各個(gè)節(jié)點(diǎn)上微服務(wù)的運(yùn)行狀態(tài),確保服務(wù)的正常運(yùn)行。
3)微服務(wù)可靠性管理:在作戰(zhàn)籌劃過程中,保證微服務(wù)在指定的時(shí)間和節(jié)點(diǎn)上,實(shí)現(xiàn)任務(wù)的正常調(diào)度。
4)作戰(zhàn)籌劃管控面板:以可視化的監(jiān)控界面提供指揮員查看操控視圖,指揮員可以在管控面板中操控籌劃元素,進(jìn)行籌劃任務(wù)的動(dòng)態(tài)調(diào)整。
圖3 作戰(zhàn)籌劃系統(tǒng)微服務(wù)管理平臺(tái)組成
作戰(zhàn)籌劃具體實(shí)現(xiàn)如圖4所示,作戰(zhàn)籌劃控制面板提供作戰(zhàn)籌劃設(shè)計(jì)面板,面板中的籌劃元素即對(duì)應(yīng)分類中的各個(gè)微服務(wù),通過面板中對(duì)籌劃元素的操作,在展示界面中形成作戰(zhàn)籌劃任務(wù)的計(jì)劃。當(dāng)作戰(zhàn)籌劃任務(wù)真正執(zhí)行時(shí),即調(diào)用在服務(wù)中心中注冊(cè)的各個(gè)籌劃元素對(duì)應(yīng)的微服務(wù),微服務(wù)執(zhí)行過程由微服務(wù)可靠性管理保證微服務(wù)執(zhí)行正確,各個(gè)容器中的探針程序能夠?qū)⑽⒎?wù)的執(zhí)行情況匯報(bào)給作戰(zhàn)籌劃管控面板,通過籌劃任務(wù)監(jiān)控界面對(duì)微服務(wù)的執(zhí)行過程、狀態(tài)以及需要輸入的參數(shù)進(jìn)行控制,由此完成微服務(wù)架構(gòu)中的作戰(zhàn)籌劃應(yīng)用系統(tǒng)。籌劃元素即對(duì)應(yīng)的微服務(wù)是基于微服務(wù)作戰(zhàn)籌劃應(yīng)用系統(tǒng)的操作基礎(chǔ),由于微服務(wù)的獨(dú)立和敏捷,由此架構(gòu)產(chǎn)生的作戰(zhàn)籌劃應(yīng)用系統(tǒng)就能夠動(dòng)態(tài)的獲取籌劃元素,籌劃任務(wù)可以根據(jù)微服務(wù)資源來動(dòng)態(tài)生成,提供給用戶一種新的作戰(zhàn)籌劃可能。
圖4 作戰(zhàn)籌劃系統(tǒng)微服務(wù)管理平臺(tái)實(shí)現(xiàn)
作戰(zhàn)籌劃中,用科學(xué)的工具方法指導(dǎo)規(guī)范指揮機(jī)構(gòu)展開工作,便于指揮機(jī)構(gòu)在作戰(zhàn)籌劃時(shí)準(zhǔn)確把握和預(yù)測(cè)戰(zhàn)場(chǎng)態(tài)勢(shì),綜合謀劃力量運(yùn)用、戰(zhàn)法設(shè)計(jì)及保障行動(dòng),明確作戰(zhàn)籌劃的工作重點(diǎn)、流程、路徑與時(shí)間節(jié)點(diǎn)。面向作戰(zhàn)籌劃任務(wù)的微服務(wù)架構(gòu)技術(shù)研究,通過對(duì)應(yīng)用進(jìn)行細(xì)粒度的劃分,每一個(gè)微服務(wù)只專注于單一功能,同時(shí),微服務(wù)之間邊界表述清晰,去除中心化,服務(wù)更替更靈活,對(duì)系統(tǒng)整體影響較小,降低了系統(tǒng)運(yùn)維難度,大大提高了系統(tǒng)的靈活性、可靠性及抗壓能力。