一种基于消息队列的并行雷达数据处理方法与流程

文档序号:11233821阅读:855来源:国知局
一种基于消息队列的并行雷达数据处理方法与流程

本发明涉及计算机数据处理领域,尤其涉及一种基于消息队列的并行雷达数据处理方法。



背景技术:

通过加载和解析获取的雷达实测数据,对原始回波数据进行野值剔除,对窄带回波数据进行脉压处理,对宽带原始回波数据进行降噪、对齐、成像、多目标分割处理,并对解析后的数据进行存储,用于后续数据回放、特征提取和目标识别等。如何快速地处理雷达实测数据,对外场实验和实验室研究具有重要意义。

随着计算机技术的发展,高性能计算朝着多cpu多核计算、gpu计算、集群计算等方向发展,为充分发挥计算机的处理能力、提高数据处理效率,常见的做法是对程序进行并行化。并行化常用的方法主要是多线程/进程方式,该方式需要修改原有程序处理逻辑,容易出现死锁等问题,编程难度大。actor模式是一个解决分布式计算的数学模型,其中actor是计算实体,它接收和处理接收到的消息,能够与其他actor并行地进行协作。通过消息队列,应用程序开发人员可以通过发送和接收消息,方便地与其他程序进行快速可靠的通信,减少模块间的耦合,提高程序的可靠性和稳定性。



技术实现要素:

针对上述现有技术存在的状态,本发明提供一种基于消息队列的并行雷达数据处理方法,充分利用多核cpu、gpu加速雷达数据处理,提高数据处理效率,减少并行程序开发难度。

本发明提供一种基于消息队列的并行雷达数据处理方法,其改进之处在于,发送端根据业务需求,将雷达原始回波数据根据数据帧结构分割成独立的数据块,发送给消息输入队列,处理模块采用竞争方式抢占消息进行所述数据块的数据处理,并将结果发送给输出队列,接收端将所述结果进行出队列处理,并对处理结果进行合并。

优选的,所述发送端和所述接收端的处理模块保持原有单线程方式进行数据处理,无需进行复杂的多线程开发;当存在多个发送端和接收端时,系统按照生产者-消费者方式并行地进行数据处理。

较优选的,通过设置不同的消息类型,每种消息类型对应一个消息队列,同一类型的处理模块只处理所述消息队列中某一特定类型的消息;多个同类型处理模块并行化处理数据;

所述处理模块根据所述消息类型的数量进行增减。

较优选的,设置重试队列,保存执行异常的数据,根据重试策略重新被其他处理模块执行。

较优选的,所述特定类型的消息包括雷达的原始数据、宽带回波数据、窄带回波数据、宽带回波处理结果和窄带回波处理结果。

较优选的,通过优化消息队列参数,提高i/o吞吐率,保证了消息队列的i/o时间远小于处理模块的处理时间,系统可提高处理效率。

本发明的技术方案中,将雷达数据处理过程中的各个模块抽取成单独的程序,独立运行,每个程序只处理单一的数据,减少了模块间的耦合程度;对于耗时的处理流程,可在满足硬件需求的情况下部署多个处理模块进行加速数据处理过程,提高雷达数据处理的效率和实时性。

附图说明

图1为本发明实施例的基于消息队列的并行程序处理流程示意图;

图2为本发明实施例的基于消息队列的并行雷达数据处理流程示意图;

图3为本发明实施例的程序部署示意图;

图4为本发明实施例的单线程方式处理时间分布示意图;

图5为本发明实施例的基于消息队列的并行处理时间分布示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。

本实施例采用基于消息队列的push-pop模式,将系统功能拆分成多个独立的模块,模块之间通过消息队列方式传递数据,减少模块间的耦合度。并行雷达数据处理流程示意图如图1所示,可由发送端、消息输入队列、处理模块、结果输出队列、接收端五部分组成,本实施例提出的一种基于消息队列的并行雷达数据处理方法,其流程示意图如图2所示,发送端根据业务需求,将雷达原始回波数据根据数据帧结构分割成独立的数据块,发送给消息输入队列,处理模块采用竞争方式抢占消息进行所述数据块的数据处理,并将结果发送给输出队列,接收端将所述结果进行出队列处理,并对处理结果进行合并。

其中,发送端和所述接收端的处理模块分别采用单线程方式进行数据处理,可减少算法移植及多线程并发带来的问题。当存在多个发送端和接收端时,系统按照生产者-消费者方式并行地进行数据处理。

本实施例中,可以设置不同的消息类型,每个消息类型对应一个消息队列,同一类型的处理模块采用预处理、分析和处理的过程,只处理消息队列中某一特定类型的消息。多个同类型处理模块实例可同时执行,并行性地处理数据,还可动态增加处理模块实例,提高系统吞吐率。本实施例采用redis作为消息队列,消息队列不持久化存储数据(将消息保存到内存中,不持久化到硬盘等设备上),处理模块负责消息的插入、删除、执行、异常处理、重试等;可设置重试队列,保存执行异常的数据,根据重试策略选择其他处理模块重新执行。

本实施例由于存在i/o传输时延、线程切换等开销,但通过优化消息队列参数,提高了i/o吞吐率,保证消息队列的i/o时间远小于处理模块的处理时间,提高了处理效率。

具体的,本实施例采用redis作为消息队列,程序采用c++语言编写,如图3所示部署在一台8核心cpu的工作站上,若使用多台机器,可将处理模块根据需要分别部署在不同的机器上,各机器间通过千兆网络连接。

8核cpu的工作站上,每个处理模块独占一个cpu核心,其中宽/窄带特征提取与识别程序分别部署了两个实例。对于传统的单线程方式,其处理时间分布如图4所示。采用本实施例的程序处理时间分布如图5所示,每个处理模块总耗时与对应的单线程方式基本相同,由于充分利用了多核心cpu的性能,其处理耗时要远远低于单线程方式。对于4gb的测试数据,单线程方式处理耗时约15min(与所选算法及实现有关);本方法的处理时间约6min(其中磁盘和网络i/o以及进程间的切换等占用了一定时间),大大加速了雷达数据处理速度和效率。

本发明支持异构计算和多机器并行计算,处理模块可运行在cpu核心(独占)或gpu上,处理模块间只通过消息队列进行通信,降低了模块间的耦合程序,可灵活部署在多台机器上。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。



技术特征:

技术总结
本发明公开了一种基于消息队列的并行雷达数据处理方法,即发送端根据业务需求,将雷达原始回波数据根据数据帧结构分割成独立的数据块,发送给消息输入队列,处理模块采用竞争方式抢占消息进行所述数据块的数据处理,并将结果发送给输出队列,接收端将所述结果进行出队列处理,并对处理结果进行合并。本发明将雷达数据处理过程中的各个模块抽取成单独的程序,独立运行,每个程序只处理单一的数据,减少了模块间的耦合程度;对于耗时的处理流程,可在满足硬件需求的情况下部署多个处理模块进行加速数据处理过程,提高雷达数据处理的效率和实时性。

技术研发人员:王衍祺;贾雨生;盛晶
受保护的技术使用者:北京环境特性研究所
技术研发日:2017.05.17
技术公布日:2017.09.12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1