连彦泽 何信华 白健
【摘 要】提出一种面向航天领域的实时数据处理框架,采用插件式框架设计方法,实现行业数据的高效实时处理。
【Abstract】In this paper, a real-time data processing framework for aerospace field is proposed. The plug-in framework design method is used to realize the efficient and real-time processing of industry data.
【关键词】实时;数据处理;框架
【Keywords】real-time; data processing; frame
【中图分类号】G15 【文献标志码】A 【文章编号】1673-1069(2017)05-0154-02
1 引言
信息与通信技术的飞速发展,已深刻影响到航空、航天、能源、钢铁、电力等工业领域的生产模式与流程,促使行业生产模式由传统的粗放式的以人工为主向精确化、自动化、智能化方向转变。通过信息系统对工业生产过程中产生的大量数据进行实时处理分析,实时监控,为生产决策提供自动化智能化的数据支撑。
航天领域的实时数据处理一般以实时传感与实时采集的数据为数据源,包括各类传感器采集的数据、现场各类控制终端的数据等,数据量大,数据采集的频率高。特别是随着物联网概念的出现与技术的应用,航天领域实时产生的数据量在成倍增加。随着云计算与大数据等IT技术的出现与发展, 互联网领域中产生了诸多数据处理框架,如Hadoop、Spark等,此类框架采用批处理方式的MapReduce技术,实现海量数据的实时处理,数据处理的延时一般为秒级,能够满足互联网领域大部分数据实时处理需求。但在工业领域,由于监测与控制的精度更高,一般要求在毫秒级完成数据的实时处理,现有批处理方式的MapReduce大规模数据处理技术难以满足此类计算需求。本文提出一种面向行业应用的实时数据处理框架,实现满足多种数据源、多种数据类型的实时数据处理。
2 数据处理方法
在航天领域中,测量系统作为飞行器、航天测控系统中的重要组成部分,用于获取飞行器内部各系统的工作状态参数和环境数据,为评定飞行器的性能和故障分析提供依据[1]。而数据处理是测量过程中的一个重要环节,其任务是将接收到的原始信息,经过挑路、拼接和运算,完成各类参数的处理,处理结果以时间函数值表或时间函数曲线提供[1]。数据处理包括从数据块中提取数据帧、对数据帧进行后处理、处理数据帧中的参数、输出处理结果。
3 实时处理框架设计
3.1 软件框架的概念
软件框架是整个系统或系统的一部分的可重用性设计,由一组抽象出来的类及其实例间的相互作用方式组成。框架把一个系统有机地分解成一组相对独立的构件,并定义了各个构件间的接口和作用关系,符合软件工程中设计的模块化、独立化和信息隐藏等特征。框架提供了一个大粒度的重用技术,即不仅支持源代码级的重用,而且支持分析和设计以及体系结构的重用,因而被认为是一种最有前途的面向对象技术。
框架必须是健壮的、可扩展的、灵活的,它要求基于开放或共享标准。框架的设计要力求做到完备性、灵活性、可扩展性、可理解性,同时抽象能用于不同的场合;用户能轻松地添加和修改功能,定制框架;用户和框架的交互清晰,文档齐全。框架设计的一个核心问题就是发现可重用的设计和“热点”,以保证框架具备充分的灵活性,使用户能在已有构件的基础上生成应用程序,实现“零代码编写”的理想目标。
3.2 实时处理框架设计原则
实时处理框架设计采用框架与插件相结合的设计方式,把数据处理各功能从框架中剥离出来,降低框架的复杂度,让框架更容易实现。数据处理功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布。采用该设计原则,具有以下好处:
①无需更改或编译程序就可以扩展程序的功能;
②可以在不需要源代码的环境下扩展程序的功能;
③在一个程序的业务逻辑在不断发生变化仍能灵活适应。
4 实时处理框架实现
4.1 框架接口
框架对各插件进行统一管理,软件启动时,自动识别并加载指定目录下的所有插件。框架共抽象出数据提取器、帧提取器、数据处理器、输出器共4类插件接口,各类插件需要实现相应类型的插件接口,才能被框架正确的调用。框架与插件之间的关系如下图所示。
4.2 框架实现
程序框架包括主程序模块、数据源模块、缓冲区管理模块、数据处理模块、状态管理模块、配置管理模块、插件管理模块与日志管理模块共8个模块。主程序模块负责管理各模块中的对象,并完成各对象的创建与初始化工作。通过调用数据源与数据处理模块的启动与停止接口实现对两个模块的控制。数据源模块通过调用缓冲区管理模块的写入数据接口向缓冲区中写入数据,数据处理模块调用缓冲区管理模块的读取数据接口从缓冲区中读取数据进行数据处理。各模块均可调用日志记录模块的记录日志接口写操作日志或错误信息。
主框架模块类关系如下图所示,main函数是整个软件的入口函数,调用日志記录模块中的相应接口完成日志初始化工作,并将命令行参数传递给CMainApp类,调用CMainApp类的Execute接口启动软件。
CMainApp类通过ProgramOption对象解析命令行参数,获得命令行中设置的各个选项,创建插件管理模块中的CPluginManager对象,完成所有插件的加载工作,并将CPluginManager对象传递给CMultiAddrDataSource类,调用CProgressTimer类的对象实现程序计时工作。
4.3 插件实现
数据处理软件总体框架采用插件式架构,抽象出数据提取器、帧提取器、数据处理器、输出共4类插件接口,插件采用统一接口设计,每一个插件均是实现了标准接口的动态链接库(Windows平台为.dll文件、Linux平台位.so文件),由插件管理器进行统一管理,实现自动识别与加载。实时处理框架根据系统配置创建若干个数据处理线程,根据配置中插件的类别,数据处理线程对象向插件管理器请求创建插件服务,生成所需的各插件,各插件相互协作,完成数据处理与输出的功能。
5 结论
本文提出了一种面向航天领域的实时数据处理框架,采用插件式框架的设计原则,实现了一套具备真正的跨平台、强扩展性、强复用性等优势的数据处理平台。
【参考文献】
【1】李邦复,郝建民.遥测系统[M].北京:宇航出版社,1991.