基金项目:地震科技星火计划项目——基于消息中间件的测震台站健康状态消息推送系统研制(XH14006Y)、测震台网青年骨干培养专项——基于WebGIS的河北测震台站管理系统研制(20140303)、河北省科技支撑计划项目——河北省重点地区壳幔结构及地震监测预报关键技术研究(13275407D)和河北省科技支撑计划项目——河北震后快速响应辅助决策系统建设(15275402D)联合资助.
(1.中国科学技术大学地球与空间科学学院,安徽 合肥 230026; 2.河北省地震局,河北 石家庄 050021)
(1. School of Earth and Space Science of USTC,Hefei 230026,Anhui,China)(2. Earthquake Administration of Hebei Province,Shijiazhuang 050021,Hebei,China)(3. Geophysical Exploration Center,Zhengzhou 450002,Henan,China)
seismic instruments; data stream; application framework; software reuse; state of health
备注
基金项目:地震科技星火计划项目——基于消息中间件的测震台站健康状态消息推送系统研制(XH14006Y)、测震台网青年骨干培养专项——基于WebGIS的河北测震台站管理系统研制(20140303)、河北省科技支撑计划项目——河北省重点地区壳幔结构及地震监测预报关键技术研究(13275407D)和河北省科技支撑计划项目——河北震后快速响应辅助决策系统建设(15275402D)联合资助.
为了满足对测震仪器的辅助性数据进行综合利用和交换共享的需要,通过分析地震数据采集器传输数据流的方式和特点,利用软件工程思想和面向对象的软件复用技术,建立了一种轻量级、可复用的应用框架,为面向测震仪器的数据接入程序设计提供了一种分布式、高性能、异步流水的体系结构。对框架的实现细节进行了详细阐述,并将框架成功应用于测震台站运行状态监视系统中,测试结果证明了框架的科学性、合理性和实用性,为框架的推广应用提供了典型示范。
In order to meet the requirements for the comprehensive utilization and exchange sharing of the ancillary data of seismic instruments,we analyzed the way and characteristics of transmitting data flow by seismic data acquisition,and designed a lightweight and reusable application framework by software-engineering ideas and object-oriented software reuse technology methods. This framework could provide a distributed,high-performance and asynchronous pipelined architecture for the design of seismic instrument-oriented data accessing program. We expound the implementation details of the frame in detail and apply the frame on the monitoring system of seismic station running state successfully. The test result show that the framework is scientific,rational and practical,and our study could provide a typical example for the extension and application of the frame.
引言
测震仪器是现代测震台网技术系统的关键设备,为台网应用软件系统提供原始数据资料。现代地震数据采集器通常利用嵌入式TCP/IP协议高速地传输数据流,在输出实时地震波形数据的同时,还能够应服务或者应查询地输出一些辅助性数据,如心跳信息、GPS信息、地震计零位等参数,这些参数可以作为衡量仪器实时运行状态的指标,对于测震台网运维工作具有重要的应用价值。通常台网工程师可以使用仪器厂家提供的客户端软件对这些信息进行查询,但这种传统的工作方式难以应付台网规模较大而又比较复杂的需求,更好的方法是开发专用的应用程序对数据进行接收和处理,这涉及到与数采的通信、数据的存储、加工方式和交换协议等一系列问题。在JOPENS系统中,SSS实时数据流服务模块实现了对实时地震波形数据流的汇集和分发(吴永权等,2013)。为了对辅助性数据进行综合利用,笔者设计了一种轻量级、可复用的应用框架,为辅助性数据的接入提供了一套通用的开发方案和体系结构。
1 框架总体设计
面向对象的应用框架是一种软件复用技术,它是基于特定应用领域的通用的基础结构,强调软件的设计复用性和系统的可扩展性(周树语,2004)。应用框架通常提供了支持该领域应用共同行为的类库,对于具体的应用可通过重写子类或组装对象来实现个性化的需求(Blanchette,Summerfield,2008)。辅助性数据以数据流的形式在网络中传输,与实时地震波形数据固定的传输间隔不同,这类数据流通常是受消息驱动的,消息来源可以是查询指令或者某种环境因素的变化。对这种数据流的应用,应实现以下3种基本功能:① 数据接入:支持与数采的双向Socket通信、数据流的接收和分发等; ② 异步通信:解决通用模块与非通用模块的解耦与通信问题; ③ 数据交换协议:提供分布式环境中异构系统之间的互操作性,实现数据共享。这3种功能的实现应具有通用性。
根据数据流的这种特点,采用消息驱动模型进行总体设计,将框架划分成服务器端和客户端,服务器端又包括:仪器适配器、数据缓冲区、数据处理器、消息中间件4个功能模块,各模块之间通过传递消息实现通信和协同。系统运行时,仪器适配器与数采通信、请求并接收数据流、提取目标数据块并写入缓冲区; 数据处理器从缓冲区读取并解析数据块、按协议封装消息并发布给消息中间件; 客户端从消息中间件订阅消息、加以处理并向用户提供服务。这个数据交换过程的工作序列如图1所示。应用时,这些模块既可以用进程实现也可以用线程实现,既可以用本地接口也可以用远程调用,实现方式取决于具体的应用需求。
2 服务器端设计
仪器适配器的设计功能是实现与数采的通信、对数据流进行接收和分发。要实现与数采的数据通信,需要先了解数采的网络协议及接口。现代地震数据采集器是一类典型的嵌入式系统,网络通信协议一般采用嵌入式TCP/IP。所谓嵌入式系统是一种以应用为中心、软硬件可剪裁、对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统(李佑军,2003)。嵌入式TCP/IP的实现通常是对标准TCP/IP协议栈进行模块化剪裁,从而在满足需求和节约资源之间达到平衡(Thomas,2006)。TCP/IP协议栈是一系列分层组织的协议的集合,自上而下依次为应用层、传输层、网络层和接口层,高层使用低层提供的服务(Fall,Stevens,2012)。图2描述了数采与计算机进行TCP/IP通信的过程,箭头代表的数据流由数采的进程输出,在协议栈中被封装成报文分组,在以太网信道中传输,进入计算机的应用进程后,在协议栈中执行解封装,将数据提交给适配器进程,完成了一次进程通信。其中,应用层与传输层之间的套接字层是一个抽象层,它为应用程序提供了调用传输层服务的接口。根据传输层协议的不同,套接字可分为流套接字(使用TCP)和数据报套接字(使用UDP)。每一个套接字都可由一个IP地址、一个传输层协议和一个端口号唯一确定,通信时,通过将应用程序与特定的套接字绑定,即可令传输层区分来自不同应用程序的数据,从而实现多进程的并发式数据通信,利用这种特性可以实现多台站数据的并发接收。
3 框架在测震台站仪器状态监视系统中的应用
3.1 应用需求分析多年来,测震台网工程师们致力于提高实时运行率和数据完整率,提出了一些方法,研发了一些应用软件,对保障台网运行质量发挥了一定的作用(陈吉锋等,2012; 胡斌等,2013)。在测震台网的运行过程中,台站仪器的健康状态起到至关重要的作用。仪器的病态运行将严重影响数据资料的可用性,因此有必要开发一套应用程序,实现对遥测台站仪器运行状态的集中监视。JOPENS数据库中定义了台站仪器健康状态的存储数据结构,其中包含一系列表征仪器状态的物理量,如外部供电电压、主板温度、钟差、地震计零位等,我们从中选取了11个具有代表性的参数,见表1(董一兵等,2013)。工作思路是对这些参数进行接收,向用户提供数据浏览和异常告警服务。套用上文介绍的框架,将系统分为服务器端和客户端。服务器端的主要功能包括:(1)实现EDAS-24IP、EDAS-24GN和CMG-DM24数采的状态数据接入;(2)发布符合JMS规范的仪器状态消息;(3)支持断线重连、多台并发。客户端的主要功能包括:订阅仪器状态消息和提供图形化的监视与告警界面。
监视系统应满足下列基本性能需求:(1)可靠性:系统运行稳定、计算结果准确、具有可靠的容错机制。
(2)兼容性:系统应与测震台网目前的软硬件系统及仪器良好兼容,不应对现有系 统的正常运行产生不利影响。
(3)规范性:接口定义符合规范,便于与业务系统的集成。
(4)易用性:具有设计良好的图形用户界面。
(5)可维护性:提供系统配置文件和运行日志。
3.2 服务器端实现用Java线程实现仪器适配器、数据缓冲区和数据处理器。创建仪器适配器线程池,为每一个测震台站分配一个独立的适配器线程。缓冲区使用JDK提供的阻塞队列(BlockingQueue),阻塞队列是一种线程安全的数据结构。消息中间件使用ActiveMQ,消息格式使用BytesMessage。
EDAS-24适配器的实现(包括EDAS-24IP、EDAS-24GN):传输层采用TCP协议,使用控制端口和数据端口进行通信,其中控制端口用于建立连接时实现用户验证和服务申请,采用字符串方式通信,数据端口用于数据服务和系统配置,采用二进制方式通信(北京港震机电有限公司,2009)。EDAS-24系列数采在数据端口定义了查询帧、应答帧、设置帧、广播帧等几种不同类型的帧,用于实现不同的功能。EDAS-24数据帧实际上是经过编码的字节序列,每个序列都由若干个数据块组成,包括帧同步码、帧标志、帧长度、数据项、检查和等,其中,帧标志字段用于指示帧的类型,可作为过滤条件对数据帧进行筛选。生产一条状态消息要用到下列数据帧:心跳信息查询帧、地震计零位查询帧、心跳信息应答帧、地震计零位应答帧。EDAS-24适配器线程的设计流程如下:使用流套接字与数采建立控制连接,通过认证后建立数据连接,成功后开始数据I/O过程,依次执行:发送心跳信息查询帧、接收心跳信息应答帧、发送地震计零位查询帧、接收地震计零位应答帧,数据I/O完毕,解析应答帧提取状态数据块,将数据块写入缓冲区。
CMG-DM24适配器的实现:传输层采用UDP协议,输出流是采用UDP数据报封装的GCF数据。DM24数据报是经过编码的字节序列,通常由以下字段组成:GCF块、版本号、字节序、序列号、字符串长度和数据源。GCF是Guralp定义的数据压缩格式,每个GCF块都由一个16字节的首部和一组数据记录组成,首部中的流ID字段用于标识报文的类型,与EDAS的帧标志字段类似,可用作过滤条件(Guralp Systems,2009)。生产一条状态消息要用到下列数据流:心跳数据流(00流)、垂直向零位数据流(M8流)、北南向零位数据流(M9流)、东西向零位数据流(MA流)。DM24适配器线程的设计流程如下:首先将数采的数据端口与一个本地端口绑定,成功后使用数据报套接字接收数据,依次接收M8、M9、MA、00流,从中提取状态数据块并写入缓冲区。
3.4 软件测试为了对系统的各项指标进行测试,同时对框架的性能进行验证,笔者在本测震台网中心搭建了测试环境,分别部署了应用服务器、消息服务器和客户端软件,测试环境的拓扑结构如图4所示。在测试过程中,特别注意了应用程序与数采及其他软硬件系统的兼容性,经过数月的观察,发行系统整体运行稳定、兼容性良好,功能及性能均达到了设计预期,证明了该框架的合理性与实用性。
4 结论
笔者介绍了一种面向仪器的数据处理应用框架。在设计过程中,通过引进生产者/消费者设计模式,实现了数据接收、数据处理和数据应用的解耦与异步流水。利用框架实现了一套台站仪器状态监视软件。经测试证明,该系统性能稳定、与现有仪器、软硬件的兼容性良好,验证了框架的合理性和实用性。设计本框架具有的现实意义为:(1)为仪器辅助性数据的接入提供一种通用的开发方法和体系结构,以简化同类系统的开发过程;(2)以数据接入为切入点,探索软件复用技术在测震台网业务系统中的应用方法,以降低系统升级改造的开销。
- 北京港震机电技术有限公司.EDAS-24GN地震数据采集器[DB/OL].(2009-08-07)[2014-05-07].http://www. geodevice.cn/prod uctInfo.aspx?n=20090807141655703154.
- 陈吉锋,陈军辉,应昶,等.2012.无人职守地震台站远程监控系统的设计与实现[J].地震研究,35(3):429-433.
- 董一兵,高景春,刘胜国,等.2013.测震仪器健康状态数据交换平台的设计与实现[J].地震研究,36(3):379-383.
- 胡 斌,董一兵,刘 新,等.2013.基于百度地图API的测震台网电子地图服务系统的设计与实现[J].地震研究,37(2):312-315.
- 李佑军.2003.嵌入式系统综述[J].现代电子技术,26(6):90-91.
- 吴永权,黄文辉,苏柱金.2013.国家测震台网的实时数据传输与服务[J].华南地震,33(3):77-84.
- 周树语.2004.面向对象框架复用技术研究与应用[D].重庆:重庆大学.
- Blanchette J.,Summerfield M..2008.C++ GUI Programming with Qt 4,Second Edition[M].New Jersey:Prentice Hall.
- Fall K.R.,Stevens W.R..2012.TCP/IP Illustrated Volume 1,Second Edition[M].New Jersey:Addison-Wesley Educational Publishers Inc.
- Goetz B.,Peierls T.,Bloch J..2012.Java Concurrency in Practice[M].Texas:Pearson Education,Inc.
- Guralp Systems.Guralp Compressed Format[DB/OL].(2009-01-05)[2014-05-07].http://www.guralp.com/documents/html/MAN-D24-0004/s5.html.
- Snyder B.,Bosanac D.,Davies R..2011.ActiveMQ in Action[M].New York:Manning Publications.
- Thomas F..2006.Linux TCP/IP Networking for Embedded Systems[M].Massachusetts:Charles River Media.