基于RabbitMQ 的软件化雷达通信中间件的设计与仿真

2021-01-20 08:43孟承
科学技术创新 2021年1期
关键词:中间件组件消息

孟承 王 建

(中国船舶重工集团 第七二四研究所,江苏 南京211100)

现代雷达系统面对日益复杂多变的目标和电磁环境,需要具备多种工作模式,且能根据环境、目标特性等快速调整自身参数和资源配置以适应不同的探测任务。但是,传统雷达系统各环节耦合性强,主要采用定制研发的机制,当雷达系统功能需求改变时,需要重新设计雷达系统底层的软硬件,这导致了雷达系统研制周期长,雷达类型繁杂,难以满足现代雷达系统的多功能探测需求。因此推动了现代雷达在设计理念、系统实现方法和装备研制模式上的创新发展,“软件化雷达”的概念应时而生[1-3]。文献[3]尝试提出了一个“软件化雷达”定义,并描述了其特点和定位。文献[4]将软件构件技术引入到雷达系统开发过程中,生成了软件化雷达体系结构和层次化的软件体系结构。文献[5]分析和论述了软件化雷达的需求、国内外研究现状、内涵及技术架构、关键技术及发展设想等方面。文献[6-7]研究了软件化雷达系统的分层结构。为了解决软件化雷达中软件和硬件分层解耦带来的跨层衔接和软硬件铰链的难题,中间件技术是软件化雷达中的关键技术之一。软件化雷达中的中间件主要分为通信中间件和计算中间件两类。文献[8]设计了一套通信中间件,并实现了一套兼容DDS 的API。目前有很多较为成熟的消息中间件,比如RabbitMQ、RocketMQ、Kafka 等。本文利用开源中间件RabbitMQ,对软件化雷达进行了通信中间件的设计和仿真,通过通信中间件实现了软件化雷达系统各模块间的消息传递。

1 问题描述

在传统雷达系统中,往往采用专用的硬件和软件模块来实现信息处理功能,信息处理各环节软硬件处于紧耦合状态,仅适应于单一的雷达探测功能。体制和工作模式变化的灵活度很小,也限制了雷达系统性能进一步的提升的空间。

软件化雷达系统采用可扩展、可重构、可升级的软硬件解耦分层处理结构,其中,中间件是实现雷达系统中软件和硬件分层解耦的关键,起到了跨层衔接和软硬件铰链的桥梁作用。针对如何在软件化雷达系统中使用中间件,怎么基于RabbitMQ 对软件化雷达系统通信中间件进行具体相关的设计以及数据包结构等问题,下面给出解决方案。

2 解决方案

2.1 通信中间件的使用

通信中间件是目前计算机和互联网领域广泛应用的概念之一,特指在分布式计算节点之间,通过软件封装的方式对通信接口的操作,简化多节点应用程序的开发复杂度,便于系统规模的弹性扩展和维护。雷达信号处理系统持续接收前端的回波数据,且回波数据大多为脉冲结构,能够作为数据包在系统中传输,适合数据流驱动计算模式。由于单个芯片性能不足以实现整个算法,不同算法处理环节分布在不同节点上,因此给雷达信号处理系统中不同节点之间的通信带来非常多的障碍。不同的通信接口不仅为算法调试人员的开发带来了困难,也不利于顶层应用的通用性。通信中间件主要解决的问题就是简化通信接口的开发[9-11]。传统雷达系统各组件间耦合性强的原因是因为各组件间直接进行数据传输,通过在系统中使用通信中间件,各组件间的数据传递都通过通信中间件来进行,即可实现解耦。

2.2 基于RabbitMQ 的软件化雷达通信中间件的设计

由于雷达数据是持续、有序、以脉冲为节拍的输出,有明显的数据包的概念且雷达信号处理有很强的实时性需求,并行要求较高,所以本文选择订阅发布模式的消息中间件RabbitMQ来设计通信中间件。

下面对消息发送和消息消费模块进行设计。消息生产者和消息消费者的核心流程如下图1、2 所示。

图1 生产者核心流程

图2 消费者核心流程

3 仿真分析

3.1 功能性分析

按照以上设计对软件化雷达中间件进行搭建。首先在linux系统上安装好RabbitMQ 搭建好服务器。

然后按照上述核心流程编写消息生产者和消息消费者的代码,并进行相关的参数配置。最后模拟雷达系统中组件间的消息传递。组件1 给组件2 发送测试消息,仿真结果如图3、4 所示。

当雷达功能需求发生改变导致组件1 的消息需要发送给组件3 时,此时只需改变组件1 交换机绑定规则即可完成发送对象的转变。仿真结果如图5、6 所示。

从仿真结果可看出,借助通信中间件进行消息传递,雷达系统各组件间实现了解耦。

3.2 传输速率分析

RabbitMQ 提供了一个管控台插件,安装后可以在web 页面登陆进入后台,可对服务器上的交换机、队列等进行相应的操作,同时还可查看队列中消息传输情况。本设计的消息速率如图7 所示。

4 结论

本文针对传统雷达系统各组件间耦合度太强的问题,按照软件化雷达的理念,基于RabbiMQ 消息中间件对软件化雷达系统通信中间件进行了设计和仿真。仿真结果表明该设计满足雷达系统的解耦仿真。

但是由于硬件设备的问题,本设计的消息传递速率不够高,后续可通过硬件设备的升级以及程序的优化进行提升。另外,RabbitMQ 还提供了消息确认机制,消费者在声明队列时,可指定noAck 参数,当noAck=false 时,RabbitMQ 会等待消费者显式发回ack 信号后才从内存或者磁盘中移除消息否则RabbitMQ 会在队列中消息被消费后立即删除它。同时在代码方面有部分重复的部分,还可通过使用SpringBoot 来简化程序。后续工作可在这些方面展开。

图3 组件1 消息发送测试

图4 组件2 接收测试

图5 组件1 消息发送测试

图6 组件3 接收测试

图7 消息速率

猜你喜欢
中间件组件消息
无人机智能巡检在光伏电站组件诊断中的应用
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
一种嵌入式软件组件更新方法的研究与实现
我国自主可控中间件发展研究
一张图看5G消息
通用(OA)办公自动化系统的组件运用
晚步见道旁花开
云计算环境下中间件的负载均衡机制研究
金蝶 引领中间件2.0新时代