APP下载

多机制优化的模拟试验台数据流实时迁移研究

2023-11-08周启凡郭迎清赵万里陶欣昕

测控技术 2023年10期
关键词:数据表试验台数据流

周启凡,郭迎清,赵万里,王 昆,孙 浩,陶欣昕

(1.西北工业大学 动力与能源学院,陕西 西安 710129; 2.西安现代控制技术研究所,陕西 西安 710065)

高空台是国家战略性资源,高空模拟是自主研制先进航空发动机必不可少的重要手段和工具,一个国家的高空模拟能力和技术水平已成为该国自主研制先进航空发动机能力和水平的一个重要标志[1]。高空模拟试验过程中,会利用各类传感器测量试验设备参数数据信息,这些参数信息最终会存储于历史数据库中(Oracle数据库)[2]。为了供试验人员查看分析数据所蕴含的内在联系和价值,需要将存储于底层数据库中的数据进行数据挖掘与可视化展示,将各类传感器测量参数直观地呈现于前端界面中,供试验人员进行对应的技术操作;且为了不破坏历史数据库的封装性和完整性,需要将后续用于各类算法的数据源从历史数据库中迁移至本地数据库中进行数据处理,因此数据的可视化展示和数据流迁移技术的研究具有重要意义。

目前,我国某型高空台能够对多种型号的发动机进行试验验证,但高空台各个试验设备采集的原始数据仅存储于历史数据库中,在需要用到的时候对数据库进行检索,查询相应的数据信息,可视化、智能化水平不高[3],其深层利用价值并未得到开发。具体来说其数据价值利用的瓶颈主要体现在以下两个方面:① 对数据的挖掘研究不够深入,未对数据本身或各类数据关联集之间所隐藏的各类信息进行充分挖掘[4],发现其所包含的深层联系和规律;② 数据在综合管控平台中的显性化表达处于初级阶段,在人机交互界面中只简单地展现了系统测得的有限原始数据,操作人员获取的数据价值有限且形式简单,在数据价值与数据展示直观性上有待改进。

在数据流迁移技术中,目前航空发动机领域采用的数据流迁移技术主要包括3种:① 创建一个中间数据存储单元[5],将本地所需数据源从历史数据库中取出并存入中间存储单元中,再通过本地数据库读取中间单元的数据,实现数据源获取;② 采用Oracle原生的触发器模式[6],给定触发条件,将历史数据库数据信息在触发条件的作用下同步至本地数据库中;③ 通过TCP协议或动态链接库接口获取历史数据库中的数据源信息[7]。在学术界与产业界中,数据流迁移技术处于平稳发展阶段,Delakis等[8]研究了段特征,进而提出了一种可以解决异构数据库同步问题的段模型。针对异构数据库系统的hooking问题,Lehman等[9]提出了TSpaces,TSpaces是一种数据库中间件,它通过研究和整合异构数据库系统的事务、数据访问等特征解决异构数据库系统之间同步的通信问题;Yadav等[10]基于事务复制提出了一种分布式数据同步架构;Vassev[11]基于微软消息队列提出了一种解决企业多分支系统之间数据库同步解决方案。

IBM公司提出了一种支持异构数据库之间透明访问的连接方法,并研发了名为DB2 Data Joiner的数据库同步中间件产品[12];SyBase通过在数据源节点运行一个检测数据库日志的进程,实现了数据的复制,研发了名为Enterprise Connect的数据库同步中间件产品[9];为了实现异构数据库之间数据通信,Oracle 提出数据库转换器的概念,并直接收购了Golden Gate数据库同步产品[13];DB2通过建立CCD表实现异构复制,SQLSever提出了发布者订阅者模式[14]。但是对于航空发动机模拟试验台采集的各传感器测点数据,因为其具有军工行业性质,追求的是数据的保密性、安全性和数据同步的实时性,目前在航空发动机领域所采用的技术,限制性较多,无法保证数据流迁移的实时性和封装性。而利用产业领域的第三方开源软件无法保证数据流迁移的保密性与安全性。

基于上述关于高空模拟试验台数据可视化及数据流迁移所存在的不足,本文提出了基于多框架集成的航空发动机高空模拟试验台数据流实时迁移及可视化技术,在高空模拟试验台数据可视化部分采用基于MyBatis-Plus框架的自动视图层构建技术,将试验设备各传感器参数信息清晰直观地展示于Vue框架的浏览器端表结构空间中,供试验人员查看和分析,在数据流迁移部分,采用了基于GateWay限流机制的JDBC接口模式及负载均衡机制的MyBatis框架模式,在保证数据流迁移的保密性和安全性的前提下,极大程度地缩短数据同步时间,满足实时性要求。最终通过Vue框架的前端界面监控数据流同步的过程,并给出对应的结论。

1 多框架前后端交互技术

1.1 实时同步数据库选型

在高空模拟试验设备试验过程中,需要采集数百个字段名参数和数万个测量点数据,这些数据极其重要,为方便后续进行数据分析、发动机性能评估、智能化管理和控制,需要将采集的数据存储起来,但是使用Excel或其他非关系型数据库可能会导致数据覆盖和丢失等问题,因此本文采用Oracle数据库作为历史数据库和本地数据库的源数据库,这是由于Oracle数据库对于历史数据的存储、持久性和热备份都有很好的优势[15]。Oracle的结构主要包括两部分,即实例结构和数据库系统。实例部分包括扩展的JAVA操作池、共享池、日志缓冲池等,真正实现数据存储的是Oracle数据库系统,Oracle的整体结构和后续的数据流迁移流程如图1所示。

1.2 高空模拟试验台测量参数采集技术

在高空模拟试验设施运行过程中,进排气系统、冷却系统、发动机参数等数据通过TCP采集,集中存储在历史数据库(Oracle数据库)中,如图2所示。

图2 测量参数采集原理图

为了保持历史数据库的封装性和完整性,后续基于数据的发动机性能评估、异常数据处理和故障诊断分析都将在本地数据库中完成。该过程中涉及数据流的可视化展示与数据流迁移的技术点包括:数据流的可视化展示可以方便试验员对数据进行查看分析,直观地展示给相关人员;数据流的迁移功能可以在极大程度地保持历史数据库完整性的情况下,充分挖掘所需数据信息,作为后续各类算法研究的数据源,因此数据的可视化功能和迁移功能成为整个实验流程的关键。

1.3 多框架组成结构

针对航空发动机高空模拟试验台数据流迁移及可视化功能,本文主要阐述两部分技术要点:首先是数据流的可视化功能,该部分主要是将高空模拟试验台设备的各类传感器所测量的参数,包括阀门开度数据、进出口压力及进出口温度等信息可视化地展现于浏览器端。主要涉及的技术组成包括后端的MyBatis-Plus框架模式、Spring MVC设计模式、跨域数据传输模式及前端的Vue框架模式、Element UI技术。数据流可视化流程如图3所示。

其次是数据流的实时同步迁移功能,该部分的实现理念是将汇集于Oracle数据库中的集合数据进行数据提炼,因为Oracle数据库中的数据未全部用于后续的故障诊断算法或为其他实现提供数据源支持,且历史数据库一般不能进行改变,直接操作历史数据库会破坏其封装性,造成表结构空间的改变、破坏数据的原子性。因此需要将部分需要利用的数据同步到本地数据库中。在同步的过程中,依据高空模拟试验台测点参数数量级、测点参数字段名个数和同步时间的要求,主要采用3种方式:基于触发条件的原生触发器模式、基于GateWay限流机制的JDBC接口融合全量/增量模式和基于负载均衡机制的MyBatis框架融合多线程并行处理流模式,来针对不同的情况完成数据的迁移功能。该部分主要涉及的技术组成包括后端的MyBatis框架模式、JDBC接口模式、触发器模式、负载均衡权选择器模式、GateWay限流模式、Spring MVC设计模式、Spring Boot框架模式及前端的Vue框架模式、Element UI技术。数据流迁移整体流程如图4所示。

图4 数据流迁移整体流程

2 数据流可视化及迁移技术

2.1 基于Vue的高空台试验数据可视化技术研究

为了在航空发动机高空模拟试验过程中,数据流可以可视化地呈现于浏览器端供试验人员查看和分析,而无须再从数据库中查询相关的数据,则需要利用基于MyBatis-Plus 框架的自动视图层构建可视化技术的支持,这个过程中涉及到多个框架的交互和数据流跨域传输的关键点,首先介绍此技术中涉及的几大类框架结构及其功能。

(1) MyBatis-Plus框架。

MyBatis-Plus框架是用于Java与底层数据库之间进行数据交互与映射的高级框架模式,根据底层数据库中所存在的数据类型及字段名名称,构建航空发动机高空模拟试验台实体类对象,实现BaseMapper接口后,完成自动视图层构建程序,即可实现Spring MVC的三层递进结构模式,自动生成高空模拟试验台实体类对象中的字段名属性,这些字段名属性与数据库中对应数据表的字段名名称一一映射,操作程序即可修改或重新为字段名信息进行赋值,利用MyBatis-Plus框架即可实现自动数据查询、修改和重置等功能,将数据表信息读取到高空模拟实验台实体类对象内部,便于后续操作。

(2) Spring MVC设计模式。

Spring MVC设计模式,即Model(模型),View(视图),Controller(控制器)三层结构模式[16-17],采用循环依赖注入的逻辑,将视图层注入模型中,并将封装好的模型层注入前端控制器中,便可将数据在浏览器端展示,MyBatis-Plus的自动视图层构建技术就用到了Spring MVC的三层递进结构模式[18],分别对应Repository层,Service层和Controller层。Repository层中编写查询高空模拟试验台对应表结构空间中的数据的功能,将其注入到Service层中,实现对应的接口及实现类,最终将Service层注入Controller层中,在浏览器中调用Controller层中的根目录路径,即可将数据呈现于浏览器中。

(3) 数据流跨域传输技术。

因为最终需要呈现的高空模拟试验台测量参数是在Vue框架对应表结构中,而Spring MVC设计模式中的Controller层是在给定根路径下的浏览器端中呈现最终的数据,想要将数据呈现于Vue框架下设定的表结构中,则需要数据的跨域传输,在主程序中加入对于跨域请求GET、POST、DELETE、SELECT支持的屏蔽端口传输的程序即可实现数据的跨域传输。

该过程的实现流程如下。

① 首先利用TCP协议,将传感器测量的试验设备参数数据存储于历史数据库中,试验参数主要包括阀门开度,进出口压力测量值,进出口温度测量值及时间戳等数据信息。

② 利用Java作为第三方语言操作数据库,配置连接信息,给定驱动及数据库连接池信息,使得程序与历史数据库之间建立连接关系。

③ 创建航空发动机高空模拟试验台实体类对象,实现BaseMapper接口,自动生成实体类对象内部属性值,与数据表字段名一一映射。自动生成视图层层递进逻辑关系,自动生成数据表数据检索功能,并将最终所获取的数据表信息封装于高空模拟试验台实体类对象内部,用于后续前端界面的展示。

④ 利用Vue框架,编写屏蔽端口的跨域数据流传输程序,使得封装于高空模拟试验台内部的数据信息可视化地呈现于Vue框架的浏览器端表结构中,至此整个执行流程完成。

最终呈现于Vue框架浏览器端表结构中的数据信息如图5所示。

图5 高空模拟试验台参数测量信息展示

2.2 基于GateWay限流机制的JDBC接口模式

因高空模拟试验台在试验过程中所测量参数的保密性及重要性,利用基于触发条件的原生触发器模式和开源的数据流迁移技术无法保证数据的实时性及安全性,所以本文采用了基于GateWay限流机制下的JDBC接口融合全量/增量数据流迁移模式来实现数据实时同步的功能。

JDBC接口模式主要包括以下6部分:配置数据库连接信息层、Druid数据源连接层、动态SQL语句切换层、定时器任务层、GateWay限流机制层和最终的主程序。所有的功能最终集成于主程序中,以定时任务的形式不断地将数据流进行迁移,从而完成数据的同步功能,程序的执行流程如图6所示。

图6 基于GateWay限流机制的JDBC接口模式程序执行流程图

首先配置.yml文件,包含历史数据库和本地数据库的所有配置信息;给定Druid数据源,初始化数据库常量池的配置参数,通过数据库连接函数将配置文件内的信息解析到定时程序中;设置定时器,使程序一直处于启动状态,给定刷新率。在定时程序执行过程中,通过Map集合的键值对存储高空台试验编号和其对应的数据表信息,通过动态SQL指令,实现不同数据表的数据同步操作,最终将定时任务程序注入主程序逻辑中。当有新的数据增添到历史数据库并提交时,主程序可以实时监测到数据量的改变并将数据刷新插入到本地数据库中。在数据流迁移过程中,每次数据同步的数据量不同,数据量过大时会造成数据同步的堵塞,前一次同步的数据发生的堵塞会使得后续的同步无法进行,这样急剧地增加了数据同步的时间。当数据堵塞严重时,会造成数据库发生死锁的情况,数据处于堵塞状态,后续的同步请求持续等待,处于僵持状态,当死锁状态过长时,会增加服务器雪崩的可能,在这种情况下,利用GateWay限流机制,控制每一次的同步量处于设定的数量集范围内,这种设定可以控制每一次的数据同步量都可处于最优的数量级,且依据触发条件可以动态切换全量及增量同步方式,即可实现数据的有效迁移,避免死锁的发生。

其中配置数据库连接信息层主要包括数据库连接时所需要的用户名信息、密码信息、驱动配置信息和URL信息。还包括数据库池数量及初始化参数、试验编号的存储路径和定时任务执行时间等内容。

Druid数据源配置层将连接好的数据库信息以Druid数据连接源形式进行封装,给定池化参数的初始化信息,完成数据库的连接操作。并将最终配置完成的数据库放入定时任务中。

动态SQL语句切换层主要是将SQL语句进行编译,实现其所需达到的目标,该层主要包括两个部分,第一部分是反射解析历史数据表的表结构信息,解析源表的字段名信息、数据结构、注释等内容,从而构建与历史数据表表结构空间完全一致的本地数据表,为数据同步提供表结构空间支持。第二部分主要是全量/增量数据同步切换模式,如图7所示。

图7 数据同步模式切换逻辑

当数据同步主程序启动时,历史数据库中已存在数据,若此时本地数据库表中存在不需要的数据时,则执行全量同步方式。该方式主要包含以下3部分。

① 获取历史表数据,将本地表清空,将数据同步至本地表,之后再执行增量同步方式,将历史数据表后续不断增加的数据同步到本地表中。当本地数据库的目标表中不存在数据时,则直接执行增量同步方式,将历史数据库中的数据不断同步到本地数据库中。

② 定时任务层。将连接配置完成后的Druid连接池利用Connection关键字进行数据通道连接,并将动态SQL语句与定时任务进行关联,解析并获取定时任务执行时间,开启定时任务,不断获取历史数据库表结构空间中的数据,并将数据同步到本地数据库的表结构空间中。

③ 主函数层。将定时任务层所执行的所有逻辑的外部设置监控系统,实时监测数据流的执行进度,统计数据执行的时间和数据同步量。

2.3 基于负载均衡机制的MyBatis框架模式

MyBatis框架模式主要以注入层的形式实现,主要包括Repository层、Service层,以及Controller层外部设置数据监控逻辑,用以监控数据同步的状态。基于负载均衡机制的MyBatis框架模式如图8所示,核心研究对象为数据流迁移从历史数据库到本地数据库的执行进程,因此采用一主一从的多数据源方式。

图8 基于负载均衡机制的MyBatis框架模式

引入多线程的概念,该多线程并行传输流与传统的多线程方式不同,该方式采用分治并行处理,将数据进行分割,分割块选为100,则每个线程处理几百行数据,多个线程同时并行执行数据的索引和插入功能,将极大程度地提高数据同步的效率,满足实时性要求。

创建航空发动机高空台字段名参数实体类对象,构建Repository层的数据获取和插入功能接口,将其注入Dao层来完成数据源配置。最终将连接好的Dao层注入Service层,加入多线程并行传输流逻辑,分配表结构,获取试验台编号信息,自动检索同步表名称。

Repository层主要是实现数据库的配置信息,采用主从数据源配置历史数据库信息及本地数据库信息,连接历史数据库,获取历史数据表字段名及数据信息;连接本地数据库,构建与需要同步的历史数据表表结构空间相同的本地数据表,将数据执行插入操作。

将连接好的Repository层注入Dao层,Dao层主要是从Mapper文件中利用元注解解析出SQL语句和需要执行的函数功能,将高空模拟试验台数据表字段名信息与高空模拟试验台实体类属性对象进行对应关联,整体连接好的结构定义为Service层。

将Service层注入Controller层中,利用定时程序解析获得定时时长和外部监控逻辑,实时监控数据流的传输过程,最终得到所需的执行结果。负载均衡作用于主程序的逻辑中,负载均衡的引入是为了解决某一线程处理数据同步过程中,因数据量较大造成的同步堵塞的问题。当某一个线程所需要同步的数据量过大时,此时触发负载均衡权重选择器的逻辑,该线程的负载均衡权重值较大,此时,系统会将其任务量分配给其他线程同时来完成,极大程度地解决了单一线程超负荷工作的情况,避免了线程堵塞和数据库死锁现象的发生。

3 数据流迁移实时性验证

因为高空模拟试验台试验流程中采集的数据量巨大,分布于不同的表结构空间中,每次需要同步多个表的数据,每个表的同步时间是统计开始同步时刻的时间戳节点到同步完成时的时间戳节点之间差值,本文采用基于Vue框架的前端框架实时监控数据流传输过程中各个表的同步信息,其中前端界面包含3部分主要功能。

① 用户登录界面:采用基于Nacos服务注册与发现的设计原则,匹配正确的用户名及密码,支持多用户登录模式。

② JDBC接口数据同步监控:主要是监控JDBC接口模式的数据流迁移的同步时长,包含不同数据表的切换功能、同步表名称、同步数据量、同步时长、同步状态等信息。

③MyBatis框架数据同步监控:主要是监控MyBatis框架模式的数据流迁移的同步时长,包含不同数据表的切换功能、同步表名称、同步数据量、同步时长、同步状态等信息。

3.1 基于Nacos服务注册与发现的用户登录界面

登陆界面主要包括用户名及用户密码信息,用户名及密码一一对应存储于Oracle数据库中,以键值对的形式取出,这样可以满足多用户登录整个系统的模式。当用户名与密码匹配成功,即可进入首页,Nacos服务的注册与发现设计原则可以解决在同一时间有多用户登录服务的情况,其逻辑校验功能可以排除非法登录信息的情况。在登录页面中,首先会根据用户输入的用户名密码校验数据的准确性,当用户名和密码组成的键值对形式处于完全正确的情况下才会登录整个平台内部数据流监控的页面。同时Nacos服务也会在该过程中监控整个登录用户名的合法性。当多用户同时进行登录时,Nacos服务会识别登录的顺序,利用JUC并发包下的semphore机制来排序登录的用户信息,从而完成整个登录流程。用户登陆界面如图9所示。

图9 用户登录界面

3.2 GateWay限流机制的JDBC接口监控界面

JDBC接口融合全量/增量的数据实时同步技术,具体选择增量还是全量的方式则需要利用GateWay的限流机制来进行判断。当每次新增的数据量不大时,为防止同步数据的缺失及因网络延迟等造成的数据丢失问题,选择执行全量同步将需要的数据再全部同步一次。当数据量很大时,则需要利用GateWay机制调用增量式的同步方法来完成,且每一次同步限定其同步数据量处于机制调控允许的范围内,防止同步堵塞产生死锁的可能。该方式的数据同步量为平均每秒200+行数据,满足实时性要求,对应数据如表1所示。同步时长与同步数据量关系如图10所示,监控界面如图11所示。并且图11所示界面中可以增加同步模式,同步表试验编号等额外组件按钮,扩展性和泛化能力好,当需要改变同步模式及不同表的同步过程时,只需自定义切换即可更改前后端交互的接口。

表1 JDBC接口方式数据同步式数据展示

图10 JDBC接口模式数据同步量与同步时间关系表示图

图11 JDBC接口模式数据同步监控界面

3.3 负载均衡机制的MyBatis框架监控界面

负载均衡的提出正是为解决在多任务情况下,数据读取量大、数据多、情况较为复杂的场景中出现的问题。而基于MyBatis框架融合多线程并行处理流的数据实时同步这一模式,正是针对大数据量、多字段名情况而设计的方法,利用负载均衡机制对其进行相应优化,优化每一块线程并行处理流的执行速度,让每一部分叠加起来,使整个系统执行的速度显著提升,在该流程中,主要是监控数据流同步的数据量,数据同步时间及日期等相关信息内容。

其中有切换数据同步模式的双选功能,并且预留了增配接口,当有新的方式需要加入时,可以动态进行选择加入,最终向试验员展示的是数据同步总量、数据同步时间和同步状态。在整个平台中,选择需要试验的编号,即可完成对应试验编号数据的同步,且试验可进行扩展,可增加试验编号与其对应的数据表。数据流迁移过程也可同步或分步进行,该方式的数据同步量为平均每秒300+行数据,满足实时性的要求,对应数据如表2所示。同步时长与同步数据量关系如图12所示,监控界面如图13所示。并且图13所示界面中可以增加同步模式,同步表试验编号等额外组件按钮、扩展性和泛化能力好,当需要改变同步模式与不同表的同步过程时,只需自定义切换即可更改前后端交互的接口。

表2 MyBatis框架数据同步模式数据展示

图12 MyBatis框架模式数据同步量与同步时间关系表示图

图13 Mybatis框架模式数据同步监控界面

4 结束语

本文提出了采用多框架集成的方式来实现高空模拟试验台数据流可视化及迁移的技术:通过基于MyBatis-Plus的自动视图层构建模式将存储于底层数据库中的各传感器测量参数信息跨域呈现于Vue框架的浏览器端,可供试验员查看分析;利用基于GateWay限流机制的JDBC接口融合全量/增量数据实时同步模式及基于负载均衡机制的MyBatis框架融合多线程并行处理流模式可实现数据的实时迁移功能,前端采用Vue框架监控数据流传输过程,可实时监测数据同步的流程。通过对这两部分功能的验证,得到以下结论。

① 航空发动机高空模拟试验台各测点数据可以通过基于MyBatis-Plus的自动视图层构建技术通过检索底层数据库表结构中的信息,清晰地呈现于浏览器端界面,数据展示过程中,完整性对应性好,试验员可以直观地查看分析数据所蕴含的内在信息,数据可视化分析具有参考价值。

② 数据同步的实时性极大地提高。两种数据流迁移技术均可保证在每秒内实现200以上的数据同步量,能在短时间内高效地完成数据库之间的数据传输,保证了实时性。能够实现数据的完全迁移,在传输过程中不丢失数据和保证准确性,能够实现完全的数据同步。

③ 自动检索同步表功能齐全。同步表名称可根据试验编号自动选择,完成不同字段表的实时数据同步功能,扩展能力强。当需要添加其他试验表同步业务时,只需给定试验编号。该试验编号对应的同步表可以完成数据的实时同步任务。

猜你喜欢

数据表试验台数据流
血管吻合试验台的研制及试用
汽车维修数据流基础(下)
湖北省新冠肺炎疫情数据表
滚动直线导轨副静刚度试验台设计
基于列控工程数据表建立线路拓扑关系的研究
一种提高TCP与UDP数据流公平性的拥塞控制机制
KYJ-T型空压机试验台自动化控制系统研究与开发
基于数据流聚类的多目标跟踪算法
防爆变频器加载试验台的设计
图表