APP下载

基于消息的水利数据共享交换平台设计与实现

2012-04-30许明家高祥涛胡金龙

水利信息化 2012年4期
关键词:分中心队列消息

陈 宁 ,许明家 ,高祥涛 ,胡金龙

(1. 江苏省水文水资源勘测局,江苏 南京 210029;2. 水利部水文局,北京 100053)

0 引言

随着水利信息化的日趋深入,对各类水利应用系统之间的数据共享、交换要求日益提高。设计建设统一的水利数据共享交换平台,可为水利行业跨部门间的信息共享,以及跨学科的科学计算提供相应的数据支撑[1],是水利信息化的主要研究内容之一。

江苏省水利数据交换的形式主要包括以下几种:省中心与分中心之间的数据交换;分中心与分中心之间通过省中心中转的数据交换;省中心运行正常情况下,省中心与备份中心(江苏省太湖管理处)的数据同步;省中心出现故障时,备份中心与分中心之间的数据交换,以及分中心与分中心之间通过备份中心中转的数据交换;省中心(或分中心)与其它省中心(或国家流域中心)之间的数据交换。

数据交换主要包括以下几种:数据库与应用系统之间、应用系统与应用系统之间、数据库与数据库之间、数据文件与数据文件之间、数据文件与数据库之间、应用系统与数据文件之间等的数据交换。

1 设计原则

水利数据共享交换平台设计需遵循以下原则:

1)开放性。为降低由技术本身的限制而产生的对数据共享交换系统发展带来的风险,保护水利信息化上的长期投资,有效地规避风险,数据共享交换平台的选型应当遵循开放的技术原则,保证构架内外现有的、可能增加的不同应用模型系统容易集成。

2)可扩展性。随着各项水利应用的增加,业务量的加大,应用终端用户的增长,数据共享交换系统应能够通过服务器等硬件设备的添加实现快速、有效的扩展,无需对系统逻辑构架、系统或业务应用进行改动,使得系统能够随着业务的变化易于做出改变。

3)安全性。水利数据共享交换平台应采用全面开放的安全体系结构,保证平台的物理和逻辑安全。物理安全指系统设备及相关设施受到物理保护,免于破坏和丢失;逻辑安全包括信息完整性、保密性和可用性,建立相应的安全管理制度。

4)可管理性。水利数据共享交换平台是一个跨部门、用户群的大型系统。对不同性质用户、系统运行状态、数据资源等应具有良好的可管理性和可维护性。系统可进行集中的监控和管理,快速发现已发生或潜在的问题并做出判断,在此基础上自动解决问题或者提出相应的建议和策略,以保障系统的可用性与稳定性。

5)先进性和成熟性。随着新技术的发展,许多新产品不断出现,为了保障系统的稳定性和可靠性,应在选用成熟产品的前提下,充分利用新开发的并已有成功经验[2]的技术。

2 平台架构

基于消息中间件的水利数据共享交换平台整体架构如图 1 所示。

图1 平台整体架构图

省中心和各分中心的应用系统、数据库、数据文件通过数据共享交换平台实现系统间的实时数据传输。数据共享交换平台为各应用系统提供标准的应用程序调用接口,数据交换共享系统间通过消息中间件实现数据交互。

1)数据交换共享平台。实现应用系统间的数据交换,为应用系统屏蔽传输底层。数据交换共享平台如图 2 所示。

DEM(Data Exchange Manager):数据交换系统核心,作为数据交换系统的控制层,提供路由、规则、日志和安全管理等功能。

消息中间件:实现数据交换共享系统间可靠的消息传输。

2)日志数据库。是整个数据交换共享系统日志记录的数据库。

3)路由管理。数据交换系统以传输队列设计为基础,通过对传输数据控制信息的配置实现消息路由的策略。

图2 数据交换共享平台

数据交换系统内部建有消息路由表,含消息的源、目的、类型及相对应传输队列名等字段;传输消息的控制信息也含有消息的源、类型等数据项,通过查询路由表消息流程明确该业务对象应该送去哪里、怎么送。

4)规则管理。数据交换系统通过管理配置设计提供数据规则管理功能。通过该功能,用户可维护交换的数据包类型、数据记录类型、数据记录各字段类型和格式,这些信息可以存放在数据库中。

5)日志管理。数据交换系统提供完善的日志管理功能,包括数据库和非数据库方式,通过该功能可以调阅数据交换共享系统上流过的每条消息,并且进行跟踪。

6)安全管理。数据交换系统提供消息的加密传输功能及相应的监控界面,以保证系统运行的可靠性。

3 数据流程

各水利业务应用系统通过数据交换共享平台提供的接口接入中心数据交换系统,并通过数据交换平台实现和其它应用系统的数据交换。完整的收发流程数据流向图如图 3 所示。

省中心和分中心的各应用系统可以根据是否具有数据存储功能分成有数据库和没有数据库的 2 类应用系统[3]。

3.1 数据库方式

若应用系统具有数据库,考虑到数据交换系统对应用系统的非侵入性及减少应用系统的实施风险,需在应用系统数据库中建立统一结构的发送和接收接口。以省中心应用系统发送数据至分中心应用系统为例,整体流程图如图 4 所示。

图3 数据收发流向图

发送数据时,省中心应用系统只需将待发送的数据组织后成功插入发送接口,省中心数据交换系统就会自动取出该数据,根据该数据的配置信息送到省中心数据交换系统至分中心数据交换系统传输队列里。

接收数据时,分中心数据交换系统会自动从本地接收队列将消息提出,并成功插入分中心应用系统的接收接口,应用系统接收该数据并做相应处理。收发详细流程图如图 5 和 6 所示。

3.1.1 发送

1)DEM 侦听发送接口表,提取应用系统插入的尚未发送或者发送不成功的数据。

2)每条数据都有相应的控制信息,通过该控制信息可以确定待发送数据的目标系统、数据类型及发送方式(点对点、广播和发布订阅)。

图4 数据库方式下数据收发流向图

图5 数据库方式下发送流程图

3)DEM 根据数据的控制信息判断发送方式和相应传输队列名称,调用消息中间件接口将数据写入相应的传输队列,并根据发送结果修改接口表中数据的“发送状态”字段。

4)数据发送的可靠性由消息中间件的相关机制保证。

3.1.2 接收

1)DEM 侦听本地接收队列。当本地接收队列有消息存在时,提取该消息,并根据该消息中的控制信息分发到本地接收子队列。

图6 数据库方式下接收流程图

2)DEM 侦听本地接收子队列。当本地接收子队列有消息存在时,DEM 调用消息中间件接收接口取出该数据并插入应用系统接口表,在保证成功插入接口表时再删除本地接收队列中的相关数据。

3)应用从接收接口表提取数据,做相应的业务处理。

3.2 非数据库方式

若应用系统无数据库,或需要交换共享的水利数据以非数据库方式存放,数据交换共享系统提供了标准的接口供应用系统调用,收发详细流程如图 7和 8 所示。

3.2.1 发送

1)数据交换系统提供发送 API 供应用系统调用,API 接口方式如下(C 语言或者 Java,以下只列出 C 接口):int dem_send(const char* messageid,void* buffer, int length, int priority )。其中 messageid表示消息号;buffer 表示待发送的数据;length 表示数据长度;priority 表示数据发送优先级。

2)DEM 根据数据的控制信息判断发送类型(点对点、广播和发布订阅)和相应传输队列名称,并调用消息中间件接口将数据写入相应的传输队列。

3.2.2 接收

1)DEM 侦听本地接收队列。当本地接收队列有信息存在时,提取该信息,并根据该信息中的控制信息分发到本地接收子队列。

图7 非数据库方式下发送流程图

图8 非数据库方式下接收流程图

2)应用系统调用数据交换系统提供的接收数据API。该 API 完成从本地接收子队列收取消息(不关心消息的发送地址)的工作。接口声明如下:int dem_receive(char* messageid, char* systemid, void*buffer, int timeout)。其中 messageid 表示接收到的消息号;systemid 表示接收该消息的应用系统代号;buffer 表示收到的数据内容;timeout 表示等待超时间,单位 ms。

3)应用系统收到消息后,做相应的业务处理。

4 结语

该平台在分析各类水利数据的标准、结构、管理,以及互操作的基础上,实现了水利数据的共享交换服务,并紧密结合应用,为突破水利数据信息行业壁垒,更好地为社会公众服务提供了思路和技术参考。

目前,基于消息中间件的水利数据共享交换平台已经在江苏省太湖自动监测系统工程中部署应用,实现了江苏省太湖地区各级水利部门各类信息资源的交换与共享,为防洪排涝、水资源管理、调水改善水环境工作提供了历史和实时信息,为各级水行政主管部门和生产单位提供了准确、及时、有效的信息服务。

[1]朱星明,张行南,白婧怡,等. 水利科学数据共享元数据理论的应用探讨[J]. 水利学报,2005, 36 (8): 56-59.

[2]司存友,高祥涛. 国家防汛指挥系统江苏省水情分中心设计思路[J]. 江苏水利,2006 (8): 30-32.

[3]高祥涛,陈宁,胡金龙. 江苏省水利厅数据存储体系架构浅析[J]. 江苏水利,2009 (3): 29-30.

猜你喜欢

分中心队列消息
浙江大学基础医学实验教学中心机能分中心
浙江大学基础医学实验教学中心机能分中心
队列里的小秘密
基于多队列切换的SDN拥塞控制*
一张图看5G消息
在队列里
丰田加速驶入自动驾驶队列
高速公路监控分中心网络配置探析
消息
消息