地震前兆数据采集适配软件方案设计1
2018-06-01汤一翔滕云田刘高川
汤一翔 滕云田 刘高川 张 旸 王 晨 王 喆
地震前兆数据采集适配软件方案设计1
汤一翔1)滕云田1)刘高川1,2)张 旸1)王 晨1)王 喆1)
1)中国地震局地球物理研究所,北京 100081 2)中国地震台网中心,北京 100045
为解决地震前兆非标准仪器的统一接入问题,本文对地震前兆台网设备异构性进行了分析,提出一套完整的地震前兆数据采集适配软件设计方案,并从采集、存储、传输3个主要软件模块描述了关键技术设计。
前兆台网 数据采集 适配器 设备异构 序列化 NIO
引言
随着网络技术的迅速发展,远程控制和监测设备逐渐成为行业信息化的焦点(袁理想等,2005)。遵循不同协议、多样式的数据表达方式的异构传感数据接入问题成为一个研究热点(邓攀等,2010)。中国地震局于2011年实施了前兆观测系统并网改造升级工作,实现了绝大部分观测设备网络化统一管理(周克昌等,2013;贾鸿飞等,2013)。随着地震前兆台网的发展,观测设备不断增多,学科观测手段不断增加,数据频带逐渐增高和拓宽,单个设备日产出数据量急剧增大,设备通讯协议也更为多样,台网设备的异构性逐渐增大。
适配器被广泛用于解决异构性问题中,其可实现对传感器数据的抽象访问、数据转换操作等(陈峰等,2011;陈庆奎等,2012)。本文提出一种多类型异构设备集成适配设计方案,以完成异构设备数据采集、存储及设备向服务器的高效传输。
1 设备异构分析
地震前兆观测设备的异构性可分为命令集异构、数据结果异构和物理连接方式异构3种(邓攀等,2010)。物理连接方式主要有IPv4连接(网络化设备)、RS232连接(公共数采和智能设备)和PPP连接(调制解调器连接)3种,目前PPP连接已由IPv4取代(周克昌等,2013)。网络化设备遵循“十五”网络通讯协议,但仍存在非标准仪器设备,如极低频仪器、光泵磁力仪、GNSS设备等高采样率仪器。
随着地震前兆观测技术的不断发展以及台网智能化监控管理需求的推动,台网设备越来越多,手段越来越丰富,采样率越来越高,设备通讯协议日益多元,现有的技术系统架构已不堪重负。在大规模传感器组网技术中,采用集中式管理的大数据中心已成为趋势。限于当时的技术手段,“十五”设备网络通讯协议采用的是字符串编码,其编码方式数据量大,且编解码过程需要较大计算资源。与此同时,面对大量异构设备的协议适配和结果处理无疑将极大地增加数据中心负担。如何实现设备的高效透明访问和数据传输控制是当前和未来将要面临的问题。
2 采集适配器设计
屏蔽设备异构性,实现设备高效透明访问和管理是适配器软件设计的核心目标,在前端以地震前兆数据采集适配器实现“多类型设备集成封装”(图1),将物理设备统一封装为同构的虚拟设备,使上层通过适配器设备的统一访问入口对设备进行访问控制和向上层服务器高效安全传输数据(邓攀等,2010;王晨等,2012;梁红杰等,2014)。
根据适配器工作及采集业务管理等需求,将适配器设计为数据采集、数据存储和数据传输3个主要业务逻辑模块,见图2。
图1 适配器物理拓扑图
图2 适配器主要业务逻辑模块
2.1 数据采集模块
数据采集模块主要负责对各类物理设备的统一集成封装,包括物理连接驱动、通讯指令适配,数据结果集适配、任务队列管理和指令执行。采集程序通过线程池管理,实现多并发指令控制,并提供采集状态监控接口。
2.2 数据存储模块
数据存储模块主要负责数据的存储管理,包括数据库连接管理,数据生命周期管理、数据分块和读写接口。数据库连接管理采用连接池,控制外界对数据库的访问连接数,确保数据库安全及性能损耗;数据生命周期管理实现定期清理过期的观测数据;数据分块实现大数据量的数据切块存储;数据读写接口则实现对数据库的操作访问。
2.3 数据传输模块
数据传输模块通过数据传送机制与上层服务器进行通信和数据传输。通过指令侦听与解析模块接收上层指令信息并解析处理。链接安全通过IP白名单机制、连接数管理以及权限进行控制;应用高性能消息序列化技术及可靠加密保证消息的传输效率及数据安全。
3 关键技术设计
3.1 适配采集任务设计
实现对异构设备的透明化访问和数据采集,需要将下层设备封装为同构的虚拟设备,并通过设备访问接口实现设备访问,实现设备统一管理。适配器对上层的业务功能表现为对虚拟设备的访问,在采集过程中,通过采集实现方法的自主适配及采集程序重构完成异构设备采集任务,对采集返回的结果集进行重构并向上层业务反馈统一数据格式的结果。基于适配的采集程序结构如图3所示。
通过设备指令适配、结果集适配和物理连接适配,并根据相应适配行为设计对应接口模型,实现对多类型异构设备访问方法的规范化集成封装,同时根据所封装的异构设备访问方法重构采集执行单元,实现执行接口的动态适配,设备访问流程见图4。
(1)指令适配与命令构造模板设计
在虚拟设备指令向物理设备指令转换时,由于设备通信协议的异构,虚拟指令根据语义映射相应物理设备指令单元,不同指令单元按设备协议组合构造出完整的物理设备指令。
统一虚拟命令通过getbytesCommand接口方法将命令中各个语义单元映射为物理设备指令单元,并组合成相应物理设备命令。同时,由于各个设备的访问安全机制不同,因此需要规定getbytesLogin接口方法获取登录命令和handle建立连接接口方法,规范设备访问行为。
(2)结果适配与结果处理模板设计
结果适配通过设备结果映射处理接口实现,完成抽象结果处理流程实例化。结果处理流程先对物理设备返回结果进行二进制流解析,将二进制流拆分成独立的数据项,然后按数据业务逻辑对数据项进行重组、标记,形成统一格式的数据返回对象向上层业务返回虚拟设备结果。在程序实现中,设备返回数据流通过结果处理接口readNewData分解为各结果单元,通过getUniformResult将结果按需求计算和重新组合为入网结果格式,以便向接口层返回采集结果,具体见图5及图6。
(3)物理连接适配与连接器模板设计
物理连接适配由统一连接器接口和不同物理连接器构成。为保证底层协议规范的异构对设备访问的透明,对底层通信通道协议封装,对上层只暴露connect连接接口、close通道关闭接口、setConfig连接配置接口以及getInputStream和getOutputStream获取输入输出流接口。
(4)基于动态加载的接口适配实例化
为实现设备适配的可扩展及减少在适配新设备时对软件源码的维护,采用动态加载接口实现类的接口适配方式。以DeviceAdapter抽象类为父类模板完成对指令适配、结果集适配、物理连接适配方法的聚合,异构设备根据实际设备访问需求编写相应采集执行的实例,利用JAVA对象编程的多态技术,完成对命令构造、连接访问和结果处理方法的差异化表达。
图3 基于适配的采集程序结构
图4 设备访问流程
如图7所示,接口实例化过程中,通过DeviceType属性存储设备访问实现类的名称,用于检索相应设备访问实现类。对适配类实例进行缓存以实现实例的多次复用,降低频繁初始化的性能消耗。本地库自动从服务器适配仓库中更新。
图5 采集结果处理流程
3.2 适配存储设计
观测及运行数据的有效存储是数据采集、管理、处理和传输的基础条件,基于业务需求及硬件条件,我们选择MYSQL数据库用于数据的存储管理。
为实现观测数据统一存储及适配大数据量数据存储,设计了大字段数据高效存取控制及大数据量数据分块存储两项关键技术方案。
图6 采集结果数据具体构造过程模拟示意
(1)大字段数据高效存取控制
针对数据库中大字段的数据查询、存储或更新时频繁开闭锁可能遇到的性能瓶颈,数据库存取管理设计了相应数据存取流程,见图8。利用内存缓存适配器观测设备配置信息以降低连接数据库的开销;采用将大字段数据与字段检索信息拆分为一对一的两张关联表的数据表结构方式,检索信息表在将大字段单独存放后单行长度变小、数据库存储单元数据密度增加,这大大减少了数据库在不同存储单元间的随机读取,从而提高数据存取性能。
(2)大数据量数据分块存储
对大部分前兆数据MEDIUMBLOB字段类型的存储空间已经可以满足存储需求,针对适配高采样率、大数据量产出的观测设备,数据分块存储是一种可行方案。相较于数据文件的存储方式,数据库分块存储具有更好的并发访问可靠性及更低的内存溢出风险。
图7 接口实例化过程
数据分块流程见图9。为确保数据配置信息的准确性,首先进行获取设备配置连接索引;在获取数据配置信息连接索引后将数据序列化为二进制数据以节省表空间及提高数据读取解析效率;判断数据是否超过字段大小并生成相应数据块信息;最后进行数据入库操作。在数据入库时,大字段数据同样存在update操作系统资源开销过大的问题,可采用数据版本更新策略降低这一影响。
为保存数据信息完整性,对观测设备配置信息进行有效性标识以确保当前配置信息不冲突。应用程序根据实际观测设备配置信息对标识进行修改。观测适配配置信息与当前实际情况一致时则配置有效,否则配置失效、过时。失效配置用于原观测数据连接说明,当删除观测数据时,删除配置信息。
图8 数据存取流程
3.3 高性能传输设计
传输模块通过一套基于Java NIO的数据传输机制实现向上层应用数据传输,如图10。
基于NIO的数据传输模块主要实现对Selector、Channel和EventHandler这3个NIO组件的管理维护。Selector线程池实现Channel注册与数据接收;Channel保存与维护和远端的连接,并通过注册在其上的各类Handler实现消息处理功能。主要消息处理功能包含对消息编解码的高性能对象序列化与反序列化、客户端登陆、心跳检测、连接安全认证、失效数据处理等。消息处理引擎是独立于I/O线程池的消息处理组件,其处理来自EventHandler的请求指令,并将结果经Channel向远端反馈。
图9 数据分块流程
图10 基于NIO的消息传输程序结构
去除网络带宽限制的性能测试更能体现NIO的传输性能优势,在对相同条件下,同组前兆数据文件在本地读取与存储的测试中,基于NIO的传输测试程序相对传统BIO性能提升三分之二,见表1。
表1 基于NIO和传统BIO的传输程序性能对比
3.4 编码技术选型
大量数据的传输所产生的通信开销是传感器网络最重要的性能消耗方式(方效林等,2014)。Java对象序列化技术可以实现适配器与数据中心分布式对象共享,可以实现递归保存对象引用的每个对象数据,实现对象在异地的深度复制,其强大的编解码性能可用于对数据的存储及传输。应用序列化技术对于数据传输的优势在于减少了开发数据流传输协议的工作量,降低传输应用开发及程序维护升级难度(毛国勇等,2008)。
Protostuff是在Google公司开源序列化工具Protobuf基础上发展而来的面向Java对象序列化的工具,与同类工具相比其高性能序列化能力和动态Schema生成能力表现突出(史栋杰,2010;Maeda,2012)。对以时间序列数据为主的地震数据其性能优势更大。以GM4磁通门磁力仪一天的数据为例,在相同运行环境下与传统字符串编码方式对比测试中,Protostuff序列化的变长紧凑型数字编码数据量约为传统字符串编码的70%,单次编解码耗时低一个量级,见表2,在低负载情况下其性能消耗基本可以忽略。
表2 字符串编解码与Protostuff序列化性能对比
多次连续测试模拟高负载情况详见图11及图12。
图11 字符串编解码与Protostuff序列化高负载模拟分项耗时图
图12 字符串编解码与Protostuff序列化高负载模拟总耗时差
对比结果显示高性能的对象序列化具有序列化与反序列化速度快、系统性能占用少且序列化后数据量小的优点,较传统字符串编码方式具有极大的优势。
4 技术实现测试
4.1 适配采集测试
异构设备适配采集测试通过对“十五”协议设备及模拟异构设备的适配采集实现检验异构设备动态适配流程及效果。具体测试时,分别针对“十五”协议设备及模拟异构设备编写相应的接口实现,其中命令异构通过对原“十五”命令进行删减来实现,具体见图13。结果异构体现在对不同数据通道数据排序上,见图14。
图13 “十五”命令格式与模拟异构设备命令差异对比
图14 “十五”结果格式与模拟异构设备结果差异对比
采集结果(图15)显示,在采集过程中,采集程序针对“十五”设备与模拟异构设备分别完成了不同采集接口实现的实例化,并通过不同命令构建方法与结果处理方法完成数据采集和数据入库。因此,测试完成了整套接口适配、命令构造、设备访问和结果处理流程,采集结果符合测试预期。
图15 测试的采集日志
4.2 数据存储性能测试
存储性能测试采用GM4磁通门磁力仪单测项一天数据为数据源,以随机数模拟设备所属台站编码、测点编码等数据属性,分别存入传统结构前兆数据表及索引与上文中索引数据分离的新结构表。在查询性能测试中,以15套GM4仪器3个月共13500条数据为表中背景数据,通过对其中数据进行随机查询测试新结构数据表的查询性能。具体测试结果见图16及图17。
图16 数据批量插入耗时对比
图17 随机查询耗时对比
数据插入性能测试结果显示索引数据分离结构在执行数据插入操作时具有较明显的优势,其执行耗时大约是原结构的50%至60%。在随机查询测试中,索引数据分离结构的执行效率也具有一定优势。
5 结束语
本文为解决对物理连接异构、信息交互命令集异构、数据结果集异构的地震前兆仪器设备统一访问、数据存储和向上层应用进行数据传输的问题,进行了大量调研和技术选型,设计了一种地震前兆数据采集适配器。
该方案将当前最流行的网络通讯技术及存储技术应用于地震前兆设备数据采集,使设备数据采集维护难度降低,传输效率提高,为地震数据汇集提供更加高效的数据服务。同时,该方案还有待完善,虽然适配器解决了上层服务器对设备的透明、虚拟化访问的需求,但用户仍然需要完成对适配器及仪器的相关配置工作,在下一步的工作中可对适配器管理机制进行设计,实现基于上层服务器应用的适配器间动态自动组网。
陈峰,荣晓慧,邓攀等,2011.设备协同技术及其系统软件研究综述.电子学报,39(2):440—447.
陈庆奎,吕晓明,郝聚涛等,2012.一个物联网异构数据接入系统ChukwaX.计算机工程,38(17):12—15.
邓攀,荣晓慧,陈峰等,2010.基于适配的异构设备统一访问中间件.计算机工程,36(6):233—235,238.
方效林,高宏,李建中,2014.无线传感器网络数据收集问题综述.智能计算机与应用,4(1):1—5,9.
贾鸿飞,陈敏,马广庆等,2013.全国前兆台网“九五”系统台站接入的设计与实施.地震研究,36(3):384—389.
梁红杰,刘彦磊,吉红等,2014.基于地震前兆数据采集器在地震前兆台网运行系统的应用研究.天津科技,41(1):11—13.
毛国勇,张晓斌,张武,2008.基于序列化及压缩的网格数据传输性能改进.计算机工程,34(16):89—91.
史栋杰,2010.五种快速序列化框架的性能比较.电脑知识与技术,6(34):9710—9711.
王晨,滕云田,王晓美等,2012.地震前兆串口通讯设备的网络接入方案与实现.地震地磁观测与研究,33(5):244—249.
袁理想,汪文勇,罗光春,2005.设备网格技术的研究.计算机应用,25(12):2914—2915.
周克昌,赵刚,王晨等,2013.中国地震前兆台网观测技术系统整合.中国地震,29(2):270—275.
Maeda K., 2012. Performance evaluation of object serialization libraries in XML, JSON and binary formats. In: Proceedings of the Second International Conference on Digital Information and Communication Technology and it's Applications (DICTAP). Bangkok: IEEE, 177—182.
Maeda K., 2012. Performance evaluation of object serialization libraries in XML, JSON and binary formats. In: Proceedings of the Second International Conference on Digital Information and Communication Technology and it's Applications (DICTAP). Bangkok: IEEE, 177—182.
Design of Adaptation Software for Seismic Precursor Data Acquisition
Tang Yixiang1), Teng Yuntian1), Liu Gaochuan1, 2), Zhang Yang1), Wang Chen1)and Wang Zhe1)
1) Institute of Geophysics, China Earthquake Administration, Beijing 100081, China 2) China Earthquake Networks Center, Beijing 100045, China
In order to solve the unified access problem of seismic precursory nonstandard equipment, we analyzed the heterogeneity of seismic precursor network equipment. And then, a complete set of seismic precursor data acquisition and matching software design scheme is proposed and the key technology design is described from three main software modules of acquisition, storage and transmission.
Precursor observation network; Data acquisition; Adaptation; Device heterogeneous; Serialization; NIO
汤一翔,滕云田,刘高川,张旸,王晨,王喆,2018.地震前兆数据采集适配软件方案设计.震灾防御技术,13(1):215—225.
10.11899/zzfy20180120
中国地震局地球物理研究所基本科研业务专项“地震前兆观测网仪器适配器研制”(DQJB16B01);“基于云平台的前兆组网技术中数据通信系统原型设计”(DQJB16B02)
2017-05-18
汤一翔,男,生于1991年。在读硕士研究生。主要从事地球物理观测信息技术研究。E-mail:tyx@cea-igp.ac.cn
滕云田,男,生于1966年。研究员。主要从事地球物理观测综合技术研究。E-mail:tengyt@cea-igp.ac.cn