基于微服务架构的作战筹划应用系统研究*
2022-11-09石钊铭刘传波
石钊铭 刘传波
(武汉市江夏区藏龙大道709号 武汉 430205)
1 引言
现代战争作战筹划,是联合作战指挥机构依据战略战役意图和敌情、我情、战场环境等,对联合作战进行的运筹谋划和计划安排[1],能否科学高效组织联合作战筹划,从而赢得指挥决策优势,把指挥员意图变成决心、决心变成计划、计划变成行动,直接决定着战争进程和结局。在当今以网络中心化环境为作战背景的条件下,交战方作战力量更加多元、作战行动更加快捷、对抗更加激烈,对作战筹划的精度、深度、速度提出了更高要求[2]。在信息化技术的支撑下,对联合作战进行筹划、优化和推演,不再仅仅凭构想和思维简单推理,而是采用意图统领,通过需求、问题驱动牵引,采用规范的工具和算法进行决断推动等方式方法,实现作战筹划方向正确、能做到突出重点、统筹规划全局,快速实施方案筹划,提高筹划的实施效益[3]。
信息时代,海量信息处理和运用矛盾日益突出,极大增加了指挥机构掌握与运用信息的难度,传统作战应用架构作战筹划系统采用固定架构,系统中软件形态固化,无法解耦,敏捷性和灵活性受限。微服务架构以敏捷、精益、持续交付的便捷和灵活深入人心[4],为敏捷开发和部署提供了巨大的帮助,将微服务架构应用于作战筹划应用系统,能增强作战筹划系统自身的“韧性”,提高广域资源快速自主协同调度能力,能够规范和帮助指挥机构更好的展开工作。
2 微服务架构
微服务技术是传统SOA(面向服务的架构)演化的结果[5],微服务相比传统SOA服务,粒度更细、责任单一、功能更自治,大多采用轻量级网络协议进行交互。结合轻量级虚拟化技术(Docker)可实现系统持续集成和快速部署,为迭代增量式的军用系统快速演化、快速交付奠定技术基础。采用微服务架构将单体应用模式的系统分解为一系列的服务,并为每一个服务定义良好的业务边界和上下文环境,解决传统军用系统代码庞杂、业务组件之间耦合程度高、业务模块之间存在循环依赖、系统维护难度大、升级成本高等问题[6]。由于以上特性,在军用系统中具有极好的应用前景。
微服务架构正向着“用容器技术解决部署问题”向“用平台解决部署和治理问题”的解决方案方向发展。向微服务架构演进通常包括以下几个阶段:1)传统的SOA服务化改造;2)开始引入某些微服务原则,进行针对性重构,如“一个任务一个服务”;3)引入整套完整的微服务原则;4)实现微服务的规模化、添加服务发现、服务缩放能力等增强特性。依据以上方法,在作战筹划任务微服务实现的过程中,我们采用Docker容器技术包装微服务,对作战筹划任务划分实现“一个基本任务一个服务”,采用Kubernetes作为服务部署管理的工具,同时以作战筹划系统管理平台监控和维护各个微服务,实现微服务的规模化,发现监控等能力。
3 作战筹划微服务架构
3.1 作战筹划系统微服务总体设计
作战筹划系统采用微服务架构,总体架构包含三个部分,分别是资源微服务封装、服务统一注册与封装、任务终端统一管控。使用流行的容器技术Docker,实现服务的一体化封装;针对作战筹划任务服务接入问题,利用统一注册中心处理,实现了不同节点服务的接入,对不同作战筹划任务的管理采用统一终端平台统一管控,屏蔽不同终端的异构性。
资源微服务封装,利用Docker技术对作战筹划任务进行微服务化,并将所有的微服务保存在服务资源库中,使之成为一个可以按需提供资源的服务资源池,在服务资源池之上进行统一调度和管理,提供包括资源调度、存储管理、镜像管理等服务,同时还提供对外的API接口,供上层应用程序调用。
服务统一注册与封装,核心是Docker引擎,Docker引擎负责整个容器系统的控制和管理[7],向上支持基于容器的服务注册、服务封装、服务部署等功能,向下提供镜像的管理、以及容器的创建、启动和销毁等服务。另外,为满足多容器集群的管理需求,使用Kubernetes容器管理工具,实现容器的有效编排和部署[8]。
作战筹划统一终端平台,面向各类的作战筹划任务,采用统一视图、统一流程、统一监控,建立包括作战筹划流程管理、事务监控器和消息队列等组件,提供指挥员对作战筹划任务中微服务的直接操作界面,简化服务管理。
3.2 作战筹划系统微服务划分
由于作战筹划任务涉及对海、对空、对潜等多个方面,其复杂性和多样性使得微服务粒度剖分困难[9]。以作战筹划任务的流程为基础分析,指挥员领受上级命令后,综合分析战场情况,下达作战命令,各级军官根据作战命令拟定作战技术,生成作战方案后上报指挥员审批,继续上报。按照流程的各个阶段,采用资源离散划分和模块聚类技术对作战筹划任务中任务执行的具体目标、执行地点、控制资源的状态等方面要素进行细分,确定作战筹划任务微服务实现类,即对作战目标的分解得到筹划任务实体。将作战筹划任务划分为多类微服务,包括对空作战筹划任务微服务、对海作战筹划任务微服务、对潜作战筹划任务微服务、基础任务微服务等。依靠Docker技术,实现各类作战筹划任务中具体任务和基本任务中的微服务。并将微服务实体存入服务库中,在作战筹划任务执行流程过程中,选择服务库中的微服务搭建出作战筹划流程,在作战筹划流程执行的过程中,通过感知任务的执行情况,将作战筹划任务按设定的计划执行,最终实现微服务的作战筹划应用系统。
微服务作战筹划应用系统中,微服务按类划分有利于微服务的资源快速建立与复用。服务间的边界清晰,交互信息明确,主要包括以下几类微服务:
1)作战任务计划:实现作战筹划任务流程的基础,无论是哪类作战筹划任务,都是以作战任务计划作为启始服务;
2)筹划资源判定:通过计划开启的筹划任务,运用资源进行作战筹划,首先取得可用资源;
3)各类任务管理:是具体任务管理的入口;
图1 作战筹划系统微服务划分
4)各类武器作战服务:负责管理当前任务我方参与的武器列表管理,对于不同类型的作战筹划,划分不同的武器管理微服务;
5)各类传感器作战服务:负责管理当前任务我方参与的传感器列表管理,对于不同类型的作战筹划,划分不同的传感器管理微服务;
6)作战力量规划服务:管理我方作战力量列表和敌方作战力量列表,针对可用资源建立合理的作战规划;
7)作战资源调度方案生成:对于作战计划进行作战筹划的一系列规划活动生成资源调度方案,提交服务;
8)作战筹划任务结果分析:采用科学的方法对作战任务结果进行评估。
3.3 作战筹划流程构建
将作战筹划任务的微服务封装在docker容器中,容器的启动和关闭便捷迅速[9],各个微服务相对独立,并可以分布运行于不同的节点[10]满足筹划任务需求。作战筹划任务管理流程业务微服务化之后的特点,体现在任务协同以及分布式事物处理两个方面。微服务可以部署在同一节点但在实际运行时需要考虑筹划任务的执行站位,通过建立典型作战筹划流程模型的过程来确定各项微服务在实际运行过程中部署的节点。采用微服务架构,在执行作战筹划应用之前,要在确定的节点上部署对应的微服务镜像并运行。我们采用kubernetes作为docker微服务容器的管理工具。作战筹划相关微服务以镜像的方式保存在数据库中,运维人员只需要确定好部署节点的位置、部署节点上需要运行的Docker容器信息。在系统运行之前只需要部署镜像并运行该微服务的容器即可。
图2 作战筹划系统微服务流程分析
在指挥节点中部署作战任务计划的相关微服务,包括接受上级任务、编制初步决心、下达预研号令等;在综合控制节点上部署各类任务管理的微服务,将收到的上级决心等信息发送给各个协同节点;各个协同节点收到上级指令后,启动本节点上报信息微服务,将各个协同节点上的资源信息发送给综合控制节点汇总;综合控制节点上的作战力量规划服务将作出判断;指挥节点作出作战筹划任务决定;由综合控制节点和协同节点共同进行各类武器传感器的作战计划;由综合控制节点进行作战资源调度方案生成服务,并上报。
在微服务的集成应用时,具体步骤如下:
步骤1:以Kubernetes控制的Pods作为基本操作单元,把相关的一个或多个容器构成一个Pod,Pod包含的容器运行在同一个主机节点上,看作一个统一管理单元。如:在综合控制节点上的Pod管理容器中,提供指令下发服务、情报汇总服务、作战力量规划服务、作战资源调度方案生成等。
步骤2:真实应用服务的抽象Services是由容器来支持并提供的,通过Proxy的port和服务selector决定服务请求传递给后端提供服务的容器,对外表现为一个单一访问接口。
步骤3:确保任何时候集群中作战筹划任务各个微服务至少有Pod在运行,Replication Controller使用预先定义的Pod模板创建Pods,Kubernetes管理时可以查看节点中的Pod,以及Pod中所处理的微服务信息。
相对传统部署方式,运维人员不再需要对各个不同节点不同环境中软件的运行状态、配置信息进行管理,各类软件变更在测试完成后即可通过灰度部署等方式部署到生产环境,能提高战场资源使用效率,能增强作战筹划系统自身的“韧性”[11],使得作战筹划应用系统运行效率大大提高。
4 作战筹划应用系统实现
微服务架构下,大部分功能模块都是单独部署、独立行动的,彼此通过接口交互,都是无状态的服务,但作战筹划业务会涉及多个服务,复杂度高。在实现作战筹划应用系统时,建立作战筹划管理平台对微服务的运行进行监控和运维,作战筹划的容器集群管理平台支持容器集群调度、编排,服务级的负载均衡[12],服务资源自动弹性伸缩,服务异常自恢复等功能,并根据任务感知分散在各个节点上微服务执行情况,协同各个微服务的执行。作战筹划管理平台对微服务运行的监控和管理,包括以下几个部分:
1)服务注册中心:对实现的在容器中运行的微服务进行注册,在作战筹划过程中能提供微服务注册信息。
2)节点探针:采集各个节点容器中运行的微服务具体状态汇报给作战筹划管控中心,及时掌握各个节点上微服务的运行状态,确保服务的正常运行。
3)微服务可靠性管理:在作战筹划过程中,保证微服务在指定的时间和节点上,实现任务的正常调度。
4)作战筹划管控面板:以可视化的监控界面提供指挥员查看操控视图,指挥员可以在管控面板中操控筹划元素,进行筹划任务的动态调整。
图3 作战筹划系统微服务管理平台组成
作战筹划具体实现如图4所示,作战筹划控制面板提供作战筹划设计面板,面板中的筹划元素即对应分类中的各个微服务,通过面板中对筹划元素的操作,在展示界面中形成作战筹划任务的计划。当作战筹划任务真正执行时,即调用在服务中心中注册的各个筹划元素对应的微服务,微服务执行过程由微服务可靠性管理保证微服务执行正确,各个容器中的探针程序能够将微服务的执行情况汇报给作战筹划管控面板,通过筹划任务监控界面对微服务的执行过程、状态以及需要输入的参数进行控制,由此完成微服务架构中的作战筹划应用系统。筹划元素即对应的微服务是基于微服务作战筹划应用系统的操作基础,由于微服务的独立和敏捷,由此架构产生的作战筹划应用系统就能够动态的获取筹划元素,筹划任务可以根据微服务资源来动态生成,提供给用户一种新的作战筹划可能。
图4 作战筹划系统微服务管理平台实现
5 结语
作战筹划中,用科学的工具方法指导规范指挥机构展开工作,便于指挥机构在作战筹划时准确把握和预测战场态势,综合谋划力量运用、战法设计及保障行动,明确作战筹划的工作重点、流程、路径与时间节点。面向作战筹划任务的微服务架构技术研究,通过对应用进行细粒度的划分,每一个微服务只专注于单一功能,同时,微服务之间边界表述清晰,去除中心化,服务更替更灵活,对系统整体影响较小,降低了系统运维难度,大大提高了系统的灵活性、可靠性及抗压能力。