一种地市级气象数据共享系统的设计与实现
2020-04-30杨福兴曹锦飞
王 力,杨福兴,曹锦飞
(江苏省苏州市气象局,江苏 苏州 215131)
0 引 言
随着地市级气象装备类型和布设站点的日益增多,带来了气象数据流程错综复杂、数据存储分散、数据共享水平低等问题。按照构建国省统一数据环境、实现数据集约管理的总体要求,国家气象信息中心建立了全国综合气象信息共享平台(CIMISS)[1],解决了数据分散存储、缺乏标准、共享困难等问题。而在地市一级,随着气象服务需求和气象应用系统的日益增加,由于缺乏以气象数据为主线的系统顶层设计,出现了“信息孤岛”,“数据烟囱”等现象。因此,结合气象应用需求,急需构建一种适宜于地市一级的气象数据共享系统。
以苏州为例,近年来建设的气象观测、预报预警、公共服务、专业服务系统约20个,同时,存在15个独立的数据库存储环境,这给应用系统的运维、数据共享带来较大不便。另外,存在气象应用系统较多,应用系统与数据耦合度高,气象数据来源多样,甚至存在数据不一致等现象。其根本原因是缺少市县一体的气象数据共享环境和支撑环境,并需要逐步形成以气象数据为核心的应用开发模式。
气象数据共享是气象业务和气象服务的基础性工作。WIS(WMO information system)[2]作为世界气象组织(WMO)一个综合的信息系统,为WMO各成员国制作的所有气象资料提供发现、获取和共享服务。中国气象局作为世界气象组织规划的全球气象信息系统中心之一,在2011年建立了全球气象信息交换共享系统,提供基于互联网的全球气象交换资料的在线发现、检索和获取服务[3]。
近年来,在气象数据的组织、共享和管理及相关系统建设方面也取得了很多研究成果。李集明[4]提出的气象数据库系统是气象信息共享平台的重要管理系统,需要在集约化和标准化原则下,充分利用成熟的商业数据库技术和大气科学领域的相关技术加以构建。并进行气象数据库的框架设计和体系架构设计。华连生[5]开发了基于Oracle数据库的存储系统,并设计数据调用接口,在J2EE环境下,通过Web进行气象数据共享查询。国家气象信息中心开发设计了CIMISS系统[6],从数据收集、加工处理、存储管理、共享服务和业务监控几个方面进行设计,为国-省两级气象业务提供了统一规范的气象数据使用环境。
针对省级气象信息共享需求,马渝勇[7]提出一套气象信息管理与共享服务系统建设模型,实现了开放式的、要素级的气象信息共享服务。申辉[8]基于Oracle数据库、MQ中间件、访问接口等技术,建立一个实时的数据库共享系统。在数据共享和交换技术方面,XML数据订阅[9],WebService异构数据共享技术[10],标准化气象数据服务接口[11],在气象行业均有大规模的应用。江彩英[12]面向文件的集中存储,基于虚拟化云网盘实现气象数据的共享,并在权限控制下实现共性和个性化的数据访问。
为保证数据共享的安全性,访问控制机制[13]已成为一种信息安全系统不可缺少的安全方案。存在自主访问控制、强制访问控制和基于角色的访问控制[14-15]等。张寅伟[16]通过用户鉴权方式进行气象数据开放平台API的数据访问控制。邓莉[17]采用角色与气象数据权限的分配来建立数据访问控制模型,实现数据访问控制对象的精确控制。文中立足于苏州市县两级数据共享和气象应用需求,针对气象数据源头多、数据支撑能力不足、可管理性差等问题,分别从标准化气象数据获取、数据规范化存储、数据共享平台设计、访问控制及集中运维监控等方面,设计并实现了一种实时气象数据共享系统,为市县一体的气象数据共享平台设计提供一个整体的解决方案。该系统已在苏州市县气象部门中部署,系统运行稳定。同时,规范了气象数据处理流程,开发了数据管理平台,实现多源气象数据的一体化管理和规范调用。
1 系统框架设计
气象数据共享的前提是数据能够有效的组织,形成统一的数据处理流程和集约化的数据支撑环境。因此,文中以气象数据流向为主线,将系统分为气象数据获取、数据处理与存储、数据共享与服务三大模块。整体系统框架如图1所示。
气象数据获取模块通过开发标准化的数据获取客户端,实现多种气象数据的采集和汇聚。数据处理与存储模块负责数据的处理、加工和数据衍生产品的生成,并对数据进行逻辑分类。同时,配套实现集约化的数据支撑环境和数据管理平台。数据共享与服务模块主要实现数据和文件的实时共享访问,封装业务逻辑接口,通过常规的API接口、共享平台等方式对外提供服务,在数据安全性方面,通过多种安全策略实现共享数据的访问控制。在整个系统流程中,均考虑各个环节的监控,为集中运维提供可靠的数据参考。
2 标准化数据获取
苏州气象部门下辖4个县3个区和1个国家级台站,每个站点均有多种自有建设的气象观测设备,存在数据种类多,数据获取流程不统一等问题,因此,市县一体的标准化数据获取是实现数据共享的基础。而由于各县区气象部门在软硬件运维保障力量相对较薄弱,在系统设计上,考虑将各类数据统一落地到市级气象部门,通过数据共享平台进行实时共享。这就决定了,在数据获取上,需采用分布式部署和轻量级软件设计,数据获取客户端主要负责多源数据的采集、汇交,并能够通过灵活配置的形式,完成多种气象资料的解析。
2.1 数据获取客户端
分布式数据获取客户端主要实现数据报文的采集、解压、报文解析、提取,并生成标准化数据序列,发送至市级中心端,进行数据入库。
因多种气象数据原始采集形式多样,为了实现标准化数据获取,客户端集成了多种数据获取方式,主要包括:单文件获取、文件累加获取、压缩文件获取、数据库查询获取、Web Services接口获取、XML网页解析获取等。并实现数据获取记忆功能。比如,客户端可以自动完成网络异常时段的历史数据采集,并进行任意时间段的数据补录。客户端可对原始采集文件定时备份至市局中心服务器端。目前,在苏州气象部门,已实现大气成分、温室气体、风廓线等11种气象数据的标准化获取。
图1 系统框架
2.2 可配置式数据解析
系统采用灵活、可配置式的数据解析模式,来避免数据获取程序重复开发的现象。根据气象原始资料特征,大部分原始资料为txt、Excel、xml和图片等格式,均通过文件内容累加、周期性文件创建(如每天或每小时)来采集原始数据。文中对多种气象资料原始采集文件特征进行抽象、归纳,通过可配置式数据解析的方式实现结构化和图片类数据的标准化获取。可配置信息主要包括:客户端ID、站号、数据采集间隔、文件路径、时间类型(北京时/世界时)、数据解析分割符、队列地址、文件上传路径、文件上传格式等。客户端将定时采集到的数据以消息的形式发送到市级消息队列。系统采用的是RabbitMQ消息中间件,部署两台MQ服务互为热备。
3 数据处理与存储
数据处理与存储是在地市级中心端构建统一的结构化和非结构化数据处理流程和集约、规范的数据存储环境,为气象数据共享奠定基础。对于多种气象应用和数据类别,为了达到逻辑清晰、统一管理的应用效果,需要从底层存储上进行逻辑划分,并在中心端数据处理服务中通过数据路由策略汇聚、存储至对应的数据库或文件库中。
3.1 数据存储与管理
采用物理上集中存储,逻辑上相对独立的方式进行数据的存储和管理。从数据用途和应用类别对数据进行逻辑分类,如表1所示。
表1 数据存储划分(部分)
在底层数据存储上将气象数据在逻辑上分为多个相互独立的存储空间,形成既相互独立,又可进行相互共享的应用效果。系统搭建基于Linux操作系统环境的Oracle数据库。操作系统为RedHat Enterprise Linux 6.4,数据库版本为Oracle 11g R2,由两台机器构成Oracle Rac集群,底层数据管理采用Oracle存储解决方案ASM(自动存储管理)。
根据表1中的数据存储划分结果,在Oracle Rac系统环境中建立对应的方案,采用对象同义词和存储过程,将方案对象映射到主方案,以实现气象数据统一存储和管理。
3.2 数据处理
数据处理中心端实现数据的解码、提取和规整入库,通过数据路由策略汇交存储至对应的数据库或文件库中。标准化数据获取客户端实现了同类型数据序列的规整,在数据处理中心端设计了数据路由策略配置表,可根据数据或业务类型将不同客户端发送的数据信息路由、存储至相应的库表结构中,实现了数据的可配置入库。详细的数据路由策略配置表如表2所示。
表2 数据路由策略配置
数据处理中心端启动后,首先加载数据路由配置策略,启动监听数据队列,当新数据到达时,判断策略中是否存在此类数据,若不存在则过滤此数据,否则,按照数据路由配置信息将数据路由到指定库表或文件库中。中心端以多任务并行处理,增强系统时效性,服务端支持负载均衡,可增加中心端节点数,来提高系统可靠性。
4 数据共享与服务
不同的气象应用场景,对数据共享的需求是不同的,文中通过不同的技术手段,采取访问接口、数据推送、统一出图和开发市县一体化平台等多种形式来提供市县数据共享服务。
4.1 访问接口
系统主要发布了两种类型的数据接口,WCF及WebServices接口,以满足应用级别的数据调用,并开发了接口管理平台,实现接口的统一管理、权限分配等。下面以图片查询接口为例进行说明,图片查询接口示例如下:
public String PicQuery(final String UserID, final String DataType, final String ElementType,final String StationID, final String Year, final String Month, final String FileName)
参数说明如下:
UserID,用户ID,需要判定当前用户是否有访问某种数据类型的权限。
DataType,数据类型。
ElementType,要素类型(可选),默认值null。
StationID,站号。
Year,图片的年份。
Month,图片的月份。
FileName,图片名称。
譬如,从图片服务器中找到道面监测ROAD/2017/DM001/10/20171009153000.jpg文件的实际存放路径。则调用示例为:
String Result=DownloadFile ("szqx_road", "ROAD", null,"DM001", "2017", "10", "20171212143000.jpg ")
其中szqx_road为已分配的道面监测资料访问用户。接口返回的结果采用键-值对形式,如下:
{"Name":"20171009153000.jpg ","Path":"http://IP/group1/M00/00/52/wKdQcFdXJMaAUBMeAACi8R90A3s603.jpg"}
Path值为文件系统实际存储的地址,可供BS应用,各种气象服务系统直接显示或调用。
4.2 市县一体化数据共享平台
基于Html5前端框架开发了市县一体化数据共享平台,以B/S形式实现苏州市县一体的数据共享,可按数据类型、要素、区域、站点、产品进行数据实时查看,包括多站点单要素,单站点多要素等形式的切换展示,平台实现了11种数据的共享。自动气象站风向风速观测数据展示如图2所示。
图2 风向风速观测数据展示(以昆山市为例)
平台采用统一出图和GIS叠加技术完成二次衍生产品的生成,实现数据的直观、可视化展示。出图软件采用grads。同时,基于arcgis实现webgis地图散点图、填色图展示、图片混合叠加显示。
4.3 安全性设计
在数据共享的同时,文中在访问权限控制、资源管理与安全访问等方面进行了安全性设计。
4.3.1 表访问权限管理
对于各应用之间的结构化数据共享访问,利用Oracle权限控制来保证数据访问的安全性和可管理性。譬如,表1中气象业务平台需要访问气象监测库中的特定表数据,则可通过Oracle的GRANT语句完成精确到表结构的权限控制,如下所示。
GRANT SELECT on DmsObse.T_OBSE_AWS_ALL TO DmsMete;
以上命令是将DmsObse库中的T_OBSE_AWS_ALL表(自动站数据表)的查询权限赋予DmsMete应用进行数据访问。这样可以进行气象内部业务平台和外部应用系统之间的数据共享,避免数据级别的重复解报、处理等工作。
4.3.2 资源管理与安全访问控制
开发BS资源管理平台,实现文件资源的管理和安全控制功能,可根据资料类别、起始年份、结束年份、要素、站号等参数初始化目录结构,进行存储资源的划分,同时创建对应的资源群组Group与各个目录进行对应,只有在组中的用户才可访问相对应的目录。
采用用户权限分配,实现访问接口的安全控制。用户管理模块,可实现数据访问接口中用户名、密码的创建,修改。后台可将用户分配到对应的资源群组,以达到访问用户(应用)权限和资源的精确、安全控制,用户-群组管理如图3所示。
图3 用户-群组对应关系示例(部分)
5 运维监控
在图1所示的数据共享系统流程图中,监控是贯穿在各个环节之中的,主要包括:客户端监控、数据库集群环境状态,数据库性能监控,表空间、磁盘空间等的使用,访问接口调用等方面进行的监控。
5.1 数据库集群环境监控
Oracle Rac集群环境监控实现对Oracle数据库系统实例状态,数据库Open状态,是否可用状态,集群并行状态以及上一次启动时间的整体监控,是Oracle数据库是否正常的最直观的展示。Oracle Rac集群环境监控如图4所示。
图4 数据库集群环境监控
5.2 数据库性能监控
实现对Oracle数据库实例SGA、PGA分布情况监控,以进行空间分配调整。同时,对数据库命中率,用户会话信息,被锁定用户,数据库访问等待时间,Redo Log切换频次等性能指标进行了监控。其中数据库等待曲线图和Redo Log切换频次也能直观反映数据库整体性能状况。对于重做日志切换过于频繁,则需要数据库管理员适当调整Redo Log日志组和日志文件大小。实时数据库等待曲线和Redo Log切换频次监控如图5所示。
图5 数据库等待曲线和Redo Log切换频次监控
5.3 SQL性能监控
由于多个应用的开发者编程习惯和技术水平不尽相同,有时不太关注SQL查询语句和数据对象的优化设计。因此,系统建立一种SQL性能监控与通报机制,以最大限度地保证共享系统数据库整体性能。面向多个气象应用的数据查询SQL,实时监控TOP10性能较低SQL,并及时进行SQL优化。SQL性能监控指标包括:CPU耗时、磁盘读时间、执行次数、执行时长。分别按照CPU耗时,执行时间,磁盘读时间进行统计分析。该项监控功能设计在实际的多种气象应用的管理和SQL优化推进中起到了较好的效果,既提高了应用管理水平,同时又建立了一种数据检索SQL优化的机制。采用数据等待时间指标监控近期等待时间较长对象。示例代码如下所示:
select a.CURRENT_OBJ#,
d.object_name,
d.object_type,
a.EVENT,
sum(a.WAIT_TIME + a.TIME_WAITED) total_wait_time
from v$active_session_history a, dba_objects d
where a.SAMPLE_TIME between sysdate - 30 / 2880 and sysdate
and a.CURRENT_OBJ# = d.object_id
group by a.CURRENT_OBJ#, d.object_name, d.object_type, a.EVENT
order by total_wait_time desc;
5.4 数据状态及访问状况监控
系统在数据入库过程中,记录每类数据的更新时间,通过数据的更新周期即可判断数据的获取和接收状态是否正常。同时,在数据访问逻辑接口封装过程中,分别记录用户和数据资料访问频次,按周、月、年实时统计用户和数据访问情况,并按柱状图形式可视化展示。数据更新状态监控示例如图6所示。
图6 数据更新状态监控示例
6 结束语
面向地市级气象部门现代化建设与公共服务对于气象数据的应用需求,针对存在的气象数据共享水平低、无标准等问题,以数据共享为目标,在标准化气象数据获取、一体化气象数据管理、数据共享服务等方面,构建了灵活、高效的气象数据流程,设计和实现一种面向地市级的实时气象数据共享系统,并开发了市县一体化数据共享平台。在系统安全设计方面,通过访问权限管理、安全访问控制等策略,实现数据的安全访问。在整个数据流程中,考虑每个环节的监控,为集中运维提供可靠的数据参考。
目前,该系统已在苏州市县气象部门应用环境中部署并业务化运行。为市县两级多种气象应用的数据调取和公共气象服务提供稳定高效的实时数据共享服务。