论文部分内容阅读
北斗卫星导航系统是我国自行研制的全球卫星导航系统,对于我国国防安全和国民生计具有重大战略意义。监测接收机作为卫星信号质量检测工具,关乎到卫星系统全球组网能否顺利实现。监测接收机通过固定协议和标准对卫星信号完整性进行分析,只有监测接收机处于正常工作模式,卫星信号评估时才能得出正确的分析结果。因此,监测接收机的测试评估是各监测接收机生产厂家最为关注的生产环节。传统的监测接收机测试评估往往采用人工方式,借助串行处理信号分析软件对接收机实时流数据接收并存储,再通过逐台、逐测试项的评估方式进行离线测试。在长时间接收的情况下会产生巨大的数据量,数据采集耗费大量时间和人力,且相关评估软件无法并行处理数据,人工参与度大,无法给出实时结果,且性能极其不稳定,已经无法满足我国第四代导航系统的测试评估要求。因此,研究并实现支持长时间数据处理、支持实时数据评估,且可以同时支持多台监测接收机测试评估的处理与存储架构将极大提升监测接收机测试评估效率,对卫星导航工作的顺利开展有重要意义。首先,本文设计了监测接收机整体测试评估流程,并对数据接收和数据处理与存储流程进行了详细设计。在此基础上,本文在单机下实现了C++串行化的测试评估代码,使用Visual studio Profile对该实现代码进行瓶颈分析。通过瓶颈分析,发现在串行测试评估过程中存在单机内存不足、耗时较长且无法实现实时评估的问题。同时,测试数据以时间序列排列,各个测试项互不干扰,各频点、卫星下的测试评估均可单独进行的特点,符合并行化处理的要求。针对这些问题,提出了使用分布式、并行化接收并处理的方案。不同接收机数据通过分布式一致性哈希算法映射到不同计算机节点,使用Kafka消息中间件缓冲数据并解耦合数据接收和数据处理模块,并使用Flink并行化处理多测试项、多接收机数据,最后将测试评估结果与接收到的数据存入HDFS分布式文件系统中。其次,在提出的分布式、并行化接收并处理方案的基础上进行研究试验,实现了本文所提出的基于Flink+Kafka+HDFS的监测接收机数据处理与存储架构。将实现过程分为三个部分,第一部分为数据的接收与Kafka对实时数据的传输实现,并按照接收机数据特点,对每个测试项数据分别实现了数据序列化与反序列化器。第二部分针对瓶颈分析中总结出的4种典型数据处理过程,对监测接收机的这4项典型测试项处理过程使用Flink并行化处理。第三部分为接收机评估结果文件与接收机数据在HDFS集群中的存储实现,根据测试项与频点号在HDFS中创建了不同的存储路径,并且针对本文中结果文件为小文件的特点,优化了原始存储算法,采用合并小文件为组合文件,并增加索引表的机制对HDFS存储结构进行了优化。最后,对本文提出的基于Flink+Kafka+HDFS的监测接收机数据处理与存储架构进行实验与分析,包括功能测试和性能测试。实验环境为4台PC机搭建的分布式系统,在该实验条件下,功能测试表明,本文所提出的分布式架构能够使用TCP接收监测接收机信号并解析,通过消息队列Kafka实时传输给Flink,在Flink中并行化处理接收机多项测试项数据和多台监测接收机数据,并在数据处理过程中,将原始数据和测试结果存入HDFS。通过处理流程的并行化,本文提出的分布式架构数据处理相较于原始串行化算法,平均加速比达到了4.0,接收机测试评估性能有了明显提升,说明本文所实现的基于Flink+Kafka+HDFS的分布式处理与存储架构适用于监测接收机批量测试评估流程。