查字典论文网 >> 一种测震仪器数据流接入框架的设计与应用

一种测震仪器数据流接入框架的设计与应用

小编:

摘要:为了满足对测震仪器的辅助性数据进行综合利用和交换共享的需要,通过分析地震数据采集器传输数据流的方式和特点,利用软件工程思想和面向对象的软件复用技术,建立了一种轻量级、可复用的应用框架,为面向测震仪器的数据接入程序设计提供了一种分布式、高性能、异步流水的体系结构。对框架的实现细节进行了详细阐述,并将框架成功应用于测震台站运行状态监视系统中,测试结果证明了框架的科学性、合理性和实用性,为框架的推广应用提供了典型示范。

关键词:测震仪器;数据流;应用框架;软件复用;健康状态

中图分类号:P315-39 文献标识码:A 文章编号:1000-0666(2015)02-0326-06

0 引言

测震仪器是现代测震台网技术系统的关键设备,为台网应用软件系统提供原始数据资料。现代地震数据采集器通常利用嵌入式TCP/IP协议高速地传输数据流,在输出实时地震波形数据的同时,还能够应服务或者应查询地输出一些辅助性数据,如心跳信息、GPS信息、地震计零位等参数,这些参数可以作为衡量仪器实时运行状态的指标,对于测震台网运维工作具有重要的应用价值。通常台网工程师可以使用仪器厂家提供的客户端软件对这些信息进行查询,但这种传统的工作方式难以应付台网规模较人而又比较复杂的需求,更好的方法是开发专用的应用程序对数据进行接收和处理,这涉及到与数采的通信、数据的存储、加工方式和交换协议等一系列问题。在JOPENS系统中,SSS实时数据流服务模块实现了对实时地震波形数据流的汇集和分发(吴永权等,2013)。为了对辅助性数据进行综合利用,笔者设计了一种轻量级、可复用的应用框架,为辅助性数据的接人提供了一套通用的开发方案和体系结构。

1 框架总体设计

面向对象的应用框架是一种软件复用技术,它是基于特定应用领域的通用的基础结构,强调软件的设计复用性和系统的可扩展性(周树语,2004)。应用框架通常提供了支持该领域应用共同行为的类库,对于具体的应用可通过重写子类或组装对象来实现个性化的需求( Blanchette,Summerfield,2008)。辅助性数据以数据流的形式在网络中传输,与实时地震波形数据同定的传输间隔不同,这类数据流通常是受消息驱动的,消息来源可以是查询指令或者某种环境因素的变化,对这种数据流的应用,应实现以下3种基本功能:①数据接人:支持与数采的双向Socket通信、数据流的接收和分发等;②异步通信:解决通用模块与非通用模块的解耦与通信问题;③数据交换协议:提供分布式环境中异构系统之间的瓦操作性,实现数据共享。这3种功能的实现应具有通用性。

根据数据流的这种特点,采用消息驱动模型进行总体设计,将框架划分成服务器端和客户端,服务器端又包括:仪器适配器、数据缓冲区、数据处理器、消息中间件4个功能模块,各模块之间通过传递消息实现通信和协同。系统运行时,仪器适配器与数采通信、请求并接收数据流、提取日标数据块并写入缓冲区;数据处理器从缓冲区读取并解析数据块、按协议封装消息并发布给消息中间件;客户端从消息中间件订阅消息、加以处理并向用户提供服务。这个数据交换过程的工作序列如图1所示。应用时,这些模块既可以用进程实现也可以用线程实现,既可以用本地接口也可以用远程调用,实现方式取决于具体的应用需求。

2 服务器端设计

仪器适配器的设计功能是实现与数采的通信、对数据流进行接收和分发。要实现与数采的数据通信,需要先了解数采的网络协议及接口。现代地震数据采集器是一类典型的嵌入式系统,网络通信协议一般采用嵌入式TCP/IP。所谓嵌入式系统是一种以应用为中心、软硬件可剪裁、对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统(李佑军,2003)。嵌入式TCP/IP的实现通常是对标准TCP/IP协}义栈进行模块化剪裁,从而在满足需求和节约资源之间达到平衡(Thom-as,2006)。TCP/IP协议栈是一系列分层组织的协议的集合,自上而下依次为应用层、传输层、网络层和接口层,高层使用低层提供的服务( Fall,Stevens, 2012)。图2描述了数采与计算机进行TCP/IP通信的过程,箭头代表的数据流由数采的进程输出,在协议栈中被封装成报文分组,在以太网信道中传输,进入计算机的应用进程后,在协议栈中执行解封装,将数据提交给适配器进程,完成了一次进程通信。其中,应用层与传输层之间的套接字层是一个抽象层,它为应用程序提供了调用传输层服务的接口。根据传输层协议的不同,套接字可分为流套接字(使用TCP)和数据报套接字(使用UDP)。每一个套接字都可由一个IP地址、一个传输层协议和一个端口号唯一确定,通信时,通过将应用程序与特定的套接字绑定,即可令传输层区分来自不同应用程序的数据,从而实现多进程的并发式数据通信,利用这种特性可以实现多台站数据的并发接收。

数据缓冲区解耦了数据10操作与数据处理操作,它与特定类型的数据流相关联,是实现数据分发的通道。通过分析仪器适配器、数据处理器的业务逻辑可以发现,仪器适配器的加工过程属于10密集型,数据处理器属于CPU密集型,且加工对象是仪器适配器的输出,两者之间具有典型的生产者和消费者关系,可以用生产者/消费者模型来处理。生产者/消费者是一种应用广泛的并发设计模式,它将系统中的生产与消费过程分离,引入缓冲区作为两者交换数据的中介一生产者把数据写入缓冲区,消费者从缓冲区读取数据。这种模式实现了生产者与消费者的解耦、简化了工作负载的管理(Goetz et al,2012)。在实际应用中,通常有多个仪器适配器线程,而仅有一个数据处理器线程,生产者数量远大于消费者数量,这时需要使用一种线程安全的数据结构作为缓冲区,实现生产者线程之间的同步,同时还要考虑通过配置生产周期来调节负载,使生产和消费的步调趋于平衡。消息中间件的功能:一是解耦数据处理操作与数据应用操作;二是实现跨系统、跨平台的数据共享。在实际应用中,笔者使用了Apache出品的开源消息总线ActiveMQ,数据交换协议采用JMS规范(Snyder et al.,2011)。用户可以在任何平台下开发符合JMS规范的客户端应用程序,订阅通过ActiveMQ发布的消息。数据缓冲区和消息中间件的应用实现了模块的解耦和异步通信,为系统的分布式部署创造了条件。 3 框架在测震台站仪器状态监视系统中的应用

3.1 应用需求分析

多年来,测震台网T程师们致力于提高实时运行率和数据完整率,提出了一些方法,研发了一些应用软件,对保障台网运行质量发挥了一定的作用(陈吉锋等,2012;胡斌等,2013)。在测震台网的运行过程中,台站仪器的健康状态起到至关重要的作用。仪器的病态运行将严重影响数据资料的可用性,因此有必要开发一套应用程序,实现对遥测台站仪器运行状态的集中监视。JOPENS数据库中定义了台站仪器健康状态的存储数据结构,其中包含一系列表征仪器状态的物理量,如外部供电电压、主板温度、钟差、地震计零位等,我们从中选取了11个具有代表性的参数,见表1(董一兵等,2013)。工作思路是对这些参数进行接收,向用户提供数据浏览和异常告警服务。套用上文介绍的框架,将系统分为服务器端和客户端。服务器端的主要功能包括:(1)实现EDAS-241P、EDAS-24GN和CMG-DM24数采的状态数据接人;(2)发布符合JMS规范的仪器状态消息;(3)支持断线重连、多台并发。客户端的主要功能包括:订阅仪器状态消息和提供图形化的监视与告警界面。

监视系统应满足下列基本性能需求:

(1)可靠性:系统运行稳定、计算结果准确、具有可靠的容错机制。

(2)兼容性:系统应与测震台网日前的软硬件系统及仪器良好兼容,不应对现有系统的正常运行产生不利影响。

(3)规范性:接口定义符合规范,便于与业务系统的集成。

(4)易用性:具有设计良好的图形用户界面。

(5)可维护性:提供系统配置文件和运行日志。

3.2 服务器端实现

用Java线程实现仪器适配器、数据缓冲区和数据处理器。创建仪器适配器线程池,为每一个测震台站分配一个独立的适配器线程。缓冲区使用JDK提供的阻塞队列(BlockingQueue),阻塞队列是一种线程安全的数据结构。消息中间件使用ActiveMQ,消息格式使用BytesMessage。

EDAS-24适配器的实现(包括EDAS-241P、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.3 客户端实现

图3是客户端界面图。用列表方式显示台站仪器的运行状态,用红色底纹标识异常。

3.4 软件测试

为了对系统的各项指标进行测试,同时对框架的性能进行验证,笔者在本测震台网中心搭建了测试环境,分别部署了应用服务器、消息服务器和客户端软件,测试环境的拓扑结构如图4所示。在测试过程中,特别注意了应用程序与数采及其他软硬件系统的兼容性,经过数月的观察,发行系统整体运行稳定、兼容性良好,功能及性能均达到了设计预期,证明了该框架的合理性与实用性。

4 结论

笔者介绍了一种面向仪器的数据处理应用框架。在设计过程中,通过引进生产者/消费者设计模式,实现了数据接收、数据处理和数据应用的解耦与异步流水。利用框架实现了一套台站仪器状态监视软件。经测试证明,该系统性能稳定、与现有仪器、软硬件的兼容性良好,验证了框架的合理性和实用性。设计本框架具有的现实意义为:(1)为仪器辅助性数据的接人提供一种通用的开发方法和体系结构,以简化同类系统的开发过程;(2)以数据接人为切入点,探索软件复用技术在测震台网业务系统中的应用方法,以降低系统升级改造的开销。

热点推荐

上一篇:江苏南部地区现今震源机制和应力场特征

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文

最新竞选体育委员的演讲稿范文(12篇) 夜学心得体会