基于任务容器的多源数据实时监控技术研究

2020-04-07 10:15
计算机测量与控制 2020年3期
关键词:遥测容器服务器

(中国飞行试验研究院 测试所,西安 710089)

0 引言

试飞试验遥测监控系统是实现飞行器机载数据的实时采集、传输、数据处理和实时监控的重要设施,在保证试飞试验安全、完成试飞科目方面具有必不可少的重要作用,测试数据在监控终端的实时、准确、全面的显示是确保试飞安全、提高试飞效率、缩短试飞周期的重要手段。现有的飞行试验遥测实时监控系统主要有C/S、B/S两种架构,主要由遥测接收解调、遥测实时处理、监控显示三个部分构成。C/S结构采用服务器-客户端模式,数据服务器接收、解析、转发机载采集系统通过遥测系统传输来的试验机PCM调制码流及视频数据,客户端通过Socket套接字进行接收、处理及显示。这种模式下,每一个飞行任务都需要一台服务器进行数据接收,各个服务器独立运行,飞行任务数据无法进行集中管理,且服务器仅针对下行遥测链路设计,没有对未来上行遥测链路的扩充,监控终端仅能显示遥测系统的数据,无法接入其他数据源信息。UDP传输的无连接、不可靠特性也造成了实时监控系统数据包的丢失。B/S结构使用WEB服务器实现对各个飞行任务数据的接收与分发,解决了C/S架构下任务管理的问题,但是同时具有服务器依赖度高、实时性不强等问题。一旦服务器故障,将影响整个试飞试验的进行。以上两种监控系统模式均不具备灵活的数据接入功能 ,导致分布于各地的异构实时监控系统由于数据包协议的不同无法进行有效交互,无法满足异地异构监控系统协同试飞任务监控需求。另一方面,系统的一台监控终端仅能显示一个试验机的PCM及视频遥测数据,采用了面向目标的设计思路,而不是面向数据的设计思路,无法满足多机协同试飞监控需求。系统缺少服务器状态监管、数据交互、服务质量及数据实时性的管控,容错率小。数据收发网络出现问题后往往通过人工进行检查,效率低下。

针对以上问题,研究对象管理组织为异构平台提供的数据交互标准—数据分发服务规范DDS(data distribute service)进行实时监控系统的搭建[1]。 DDS可以实现异构系统的数据实时交互、可灵活接入不同协议数据并提供Qos(quality of service,服务质量)服务质量控制,增强系统的扩展性及灵活性[2]。基于DDS可以实现分布式多任务数据计算分发,解决C/S和B/S监控系统模式下的任务管控、质量控制、高可靠性[3]等问题,实现高质量、低延迟的试飞数据传输。

1 软件设计原理

1.1 DDS通信模型

DDS是基于发布/订阅模式[4]的通信模型。DDS将分布式网络中传输的数据定义为主题(Topic),将数据的产生和接收对象分别定义为发布者(Publisher)和订阅者(Subscriber)从而构成数据的发布/订阅传输模型结构。各个节点在逻辑上无主从关系,在服务质量策略(quality of servicepolicies)控制下建立连接。各个节点可通过全局数据空间获取其他节点的状态信息。DDS 发布/订阅模型如图1所示。

图1 DDS 发布/订阅模型

DDS可实现分布式的监控系统,发布者进行试飞数据的接收与解析、定义话题并发布,监控端的订阅者可以订阅自己所需要看的主题,这种模式可增强系统的计算能力及容错率,QoS的灵活配置可对数据传输通道上的可靠性、传输优先级、数据过滤进行设置,不同于UDP传输的无连接、无反馈[5],DDS传输可以准确获得一次数据发送与接收状态的所有信息,从而实现数据的高可靠性传输,因此软件以DDS通信模型作为基础通信模型,结合现有监控系统数据传输特点实现基于DDS的多源数据实时监控系统。

1.2 软件编程方法

1.2.1 基于任务容器的试飞数据接收解算

传统的试飞监控模式中每一台数据处理服务器对实时数据进行接收解析,实际试飞试验中多个任务同时进行,需要给多个任务分配计算资源,资源的分配由人进行完成,硬件的故障以及人为因素很有可能导致数据接收异常。因此采用基于任务容器[6]的处理单元实现试飞数据的数据解算,任务的分配由管理端自动完成,任务在任务容器中并行,每一个任务可以进行不同业务的处理。任务容器设计成自动为任务分配CPU逻辑核心,让业务能够独占CPU进行计算,提高任务处理的可靠性和实时性。

每一个计算节点均对应一个任务容器,在计算飞行任务时,飞行任务管理端对各个容器状态进行分析,通过将任务分发给各个节点进行计算实现稳定的高性能分布式实时处理系统[7]。在管理端进行任务容器、任务的管理及状态信息显示,管理端软件可实时监控各个计算节点的状态并进行任务的重新调整分配。管理端与计算节点通过DDS通信协议进行交互,可以获得彼此的状态信息,如图2所示。

图2 任务容器示意图

计算节点端由容器Container和任务Worker组成。Container是一个任务集合容器,用于对任务进行添加删除启动停止等内部管理工作,Container负责接收由管理端下达的控制指令和上报计算端信息。Worker是执行具体业务的任务,所有业务逻辑代码编写在Worker任务内,例如数据的接收、数据的解析和数据的处理等。Worker可被手动分配到单个或多个CPU核心当中以调整不同的系统性能和并发性。对不同的Worker之间,容器Container提供数据的交互传输,用户可以定义Worker的数据输出和数据输入。例如,将数据接收任务和数据处理任务如果定义至两个不同的Worker之中[8],数据接收任务需要额外将接收的数据定义为数据输出,数据处理任务需要额外将接收的数据定义为数据输入,便可进行不同的Worker之间的数据交互。对于数据仅进行单向流动并任务之间具有强耦合的任务,可通过将多个任务代码写入一个任务以减轻任务难度和提供传输效率。任务容器需要包含增加任务、开始执行/停止某一个任务、开始执行/停止所有任务、开始发送数据、停止发送数据、数据接收显示等功能,使用一个类Container进行描述。在创建飞行任务后,管理软件首先获得各个计算节点的信息,对其状态进行分析,然后将任务分配给资源丰富的节点,如果正在进行任务处理的计算节点负载过载或者出现异常,管理软件可以实时获得节点信息并重新分配计算节点,增强了系统的鲁棒性。

1.2.2 基于模板方法的解析算法架构

异构网络联合监控情况下,需要在异构遥测系统之间进行数据接收和解析。在现有的C/S监控模式下,不同监控系统之间的数据协议是不同的,数据包结构上的差异导致需要开发新的数据服务器软件对数据流进行接收和解析。每类协议需要配备一种协议解析模块,新增一种数据源就需要开发相应的解析模块,为异构网络下的实时监控带来很大的工作量。

模板方法设计模式定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。因此对各种试飞遥测数据进行分析,采用基于模板方法[9]的解析算法架构使实时监控系统具有接入任何软件应用接口的能力。

对监控系统接入的各种数据的数据包协议进行分析,发现其具有一定的共性,提取和提升这些共性,形成基类。当有新的数据源接入时,仅需少量修改程序代码,继承基类对其数据包进行解析,从而具有接入各个数据源的能力。

图3 模板方法示意图

1.2.3 基于序列化和活跃度检查的任务派发机制

序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。软件在对任务的创建中,采用面向对象的思想,使用类描述一个任务的执行方式。

任务管理端通过序列化将新建的任务发送给计算节点进行处理[10],计算节点首先通过反序列化、实例化形成任务对象,然后将其添加至任务容器,实现任务的执行。

在实时监控中,计算节点有可能出现故障,因此软件需要发现故障及重新分配任务节点的能力。通过在DDS通信数据中加入计算节点的状态信息,在进行任务派发的过程中,管理端通过与各个节点进行通信,获得各个计算节点的活跃度信息[11],获得整个系统的硬件状态信息及任务处理状态,如硬盘容量、CPU使用状态、内存使用情况等,管理端可以监控各个计算节点的状态实现任务的最优分配。当某个计算节点因意外突然异常或者关闭的情况下,管理软件自动进行计算节点的重新分配,保障实时任务的持续进行。任务派发流程如图4所示。

图4 任务派发机制

1.3 软件结构及运行流程

软件结构如图5所示,采用分布式结构的主从模式[11],计算节点软件分布于各个计算机客户端,任务管理软件进行任务的管理及分配,并将相关数据存储于数据库中,数据传输采用DDS通信协议,解析出来的数据最终通过兼容模式软件传输给监控画面。

图5 软件结构

软件运行流程如图6所示,在试飞任务准备阶段,通过配置带头信息、交换机地址等信息创建数据接收任务。管理节点会自动将任务分别给各个计算节点进行执行,计算节点对数据进行相应结算后可通过兼容数据处理软件实现试飞数据对监控画面的驱动,从而完成试飞实时监控任务。

图6 软件运行流程

2 实现及性能测试

2.1 软件实现展示

管理软件界面如图7所示,管理软件实现对任务的分发与集中管理,并实时监测各个计算节点的运行状态,提高试飞监控系统的可靠性与稳定性。

图7 管理软件界面

计算节点运行界面如图8所示,计算节点会显示PCM带头信息及心跳字,用于判断数据接收状态。

图8 计算节点界面

数据接收界面如图9所示,通过接受不同节点上的数据,可将飞行数据实时显示与监控画面上。

图9 兼容模式软件

2.2 性能测试

2.2.1 实时性测试

系统实时性测试引入时间同步服务器,实时监控系统通过接收、解析试飞遥测数据,将时间显示于监控画面上,同时得到时间同步服务器发来的时间信息,通过比较两个时间,得到数据处理延迟,从而完成实时性能测试。实时性能测试流程如图10所示。

图10 实时性能测试流程图

2.2.2 带宽受限情况下数据传输性能测试

对交换机端口进行带宽设置,在受限带宽状态下对采用基于任务容器的多源数据实时监控技术的监控系统的数据传输性能进行测试,遥测数据带宽为10 M。分别设置交换机网口带宽为100 M、50 M、20 M、10 M情况下,对基于任务容器的多源数据实时监控系统和现有的基于Socket的监控系统进行测试。

2.3 测试结果与分析

如图11为基于任务容器的多源数据实时监控技术与现有监控系统性能结果比较,可以看出基于任务容器的监控系统由于其通信协议的优势,具有更好的实时性能,其数据处理时间延迟仅为30 ms以下,而现有的监控系统,基于Socket编程通信,数据延迟高达50 ms。在不同带宽下进行测试,从图12可以看出 ,在一定范围内带宽的减少对采用基于任务容器的监控技术的监控系统数据处理性能影响不大。在带宽很小的极端状态下,系统仍可以进行数据处理,数据延迟在可接受范围内,而现有监控系统如图13所示,在小带宽的情况下,延迟高达10秒左右,系统已经无法使用。

图11 实时性测试比较

图12 不同带宽下的数据延迟

图13 低带宽下数据延迟比较

综上可以得出,任务容器的多源数据实时监控系统具有更好的数据传输性能,且提供任务的管理功能,便于操作。

3 结束语

针对现有遥测实时监控系统存在的不足,在数据分发服

务中间件DDS的基础上研究基于任务容器的多源数据实时监控技术,经过实际测试与使用,该系统运行稳定,不仅满足数据实时性要求,而且可以接入时间服务器、天气、地理等多源信号,支持不同的数据包解析,提高了系统的灵活性。与C/S架构监控模式相比,具有易于管理、稳定性高、数据传输可靠等优点。目前实时监控系统逐渐走向智能化,基于任务容器的多源数据实时监控系统提供了与云平台传输数据的接口,未来可整合到基于云计算的分布式智能化监控系统中。

猜你喜欢
遥测容器服务器
遥测定位信息网络传输间断问题的解决方法
高层次综合技术在遥测地面站数据处理中的应用
难以置信的事情
2018年全球服务器市场将保持温和增长
液体对容器底及容器对桌面的压力和压强
调度监控系统画面数据信息纠错方法讨论
取米
非协作目标的遥测数据处理技术
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵