省级气象数据共享系统的设计与实现*
2022-02-19河北省气象信息中心成晓裕张进
河北省气象信息中心 成晓裕 张进
针对省级气象业务的现状和需求,提出了一套气象数据共享系统的模型。该系统实现了对实时气象数据包括海量历史数据的管理,能够提供从包括气象数据的实时传输、存储、共享等功能:在数据数据传输中应用了消息大大提高了传输效率,存储中设计了多套分布式数据库提供不同服务解决了数据库瓶颈的问题,在共享服务中首次采用了数据网关对访问做到了精细化管控。基于该模型开发的共享系统,已经投入了业务化运行,对河北省气象业务的运行提供了数据的保障。
随着全球气候变暖,极端天气的频现,天气预报、气候预测、灾害预警等变的空前的重要,而这些都离不开气象数据的支撑,气象数据一贯以庞杂众多数据量大而著称,所以做好气象数据的传输、存储、共享又尤为重要。省级单位做为枢纽,负责所辖地区观测数据的本级存储和上传,交换数据的下载。
全国综合气象信息共享系统建设完成以来,逐渐形成了以文件系统作为管理和共享气象数据的气象信息管理共享体系。该系统通过FTP方式实现了气象数据的传输,通过使用ORACLE RAC实现了气象数据的存储和管理,设计了API接口实现了数据的共享[1-3]。但是随着自动观测技术的快速发展,预报和预警等业务对气象数据频次的要求从原来的小时发展到分钟,传输效率从10几分钟到1分钟,接口的访问频次也越来越高,原有的系统已经不能满足需求。为了将海量的气象数据进行更好的管理和共享,结合河北省气象业务的需求,我们应用了多种计算机新技术建设了一套集传输、存储管理、共享服务和监控于一体的气象数据共享系统。
1 系统结构和功能
本系统的内容实体是气象数据,目的是为了实现数据的高效存储和共享,因此, 系统设计的理念是以数据为主线,以需求为导向。气象数据共享系统采用RabbitMQ[4]、Kafka、Zookeeper等分布式传输和协调工具,通过消息传递,文件共享和服务交互实现了业务协作。
1.1 系统架构
气象数据共享系统分为数据传输、数据存储与管理、数据共享等三个分系统。
1.2 数据传输分系统
数据传输分系统功能包括数据收集、数据分发、数据解码、数据入库、系统管理等。根据资料种类的不同,我们采用了FTP、消息、流三种方式进行气象数据的传输,大大提高了气象数据的传输效率。
1.2.1 FTP 文件传输
基于TCP/IP协议的FTP文件传输方式仍然用于部分气象观测资料的传输,传输流程如图1所示。
图1 气象观测资料文件传输流程图Fig.1 Flow chart of meteorological observation data file transmission
1.2.2 消息传输
随着自动观测技术的快速发展,部分气象观测资料产生的频次已经提升到了分钟级。部分气象观测资料类型和它的数据传输频次,每种资料大小都在200字节以上,有些可以达到几KB,甚至几MB。传统TCP/IP协议的FTP文件传输方式已经无法满足这么高的传输频次和海量观测数据的传输需要,而且频繁的文件读写,会大大影响服务器的整体性能[5]。基于传统的TCP/IP协议的FTP文件传输方式,已无法满足大数量、高频次、多种类的观测数据高时效传输,所以采用消息方式传输。
1.2.3 雷达流传输
在雷达体扫模式下,要等一个提扫结束(6分钟),才能以FTP方式将雷达基数据以文件为单位进行传输。在2018年之后,开始实行以流传输方式进行数据传输的标准格式[6],并同步上传至省级传输系统。流传输方式采用Socket通信方式进行逐径向实时传输,实现了雷达径向流传输数据从雷达站点到省级、国家级节点的可靠、稳定传输。
1.3 数据存储和管理分系统
数据存储和管理分系统包括数据的入库、存储管理、备份、删除、迁移等功能。数据存储和管理分系统利用分布式存储技术对各类气象资料数据进行存储,并按照业务应用场景对数据存储进行分类分级,通过数据存储管理网站建设,实现了对数据库、存储结构、权限控制、能力开放等功能。利用数据同步、数据迁移与清除、数据备份与恢复等功能,实现数据的高效流转。流程如图2所示。
图2 观测数据存储流程图Fig.2 Flow chart of observation data storage
按照图2流程,结构化数据经解码程序处理首先写入缓冲库,然后通过实时数据ETL同步,按照同步策略再写入服务库和分析库。缓冲库作为数据的临时中转存储,并且不对外提供数据访问,仅用于实现入库和服务的解耦。服务库是用于对外提供服务访问实时数据的分布式服务数据库,其特点是行式存储架构,具有更好的访问性能。分析库是用于对外提供服务访问长时间序列的分布式分析型数据库,其特点是采用了列式存储架构,对于长时间序列的列数据进行访问,具有比较高效访问能力。索引库用于存储文件属性,文件则写到NAS存储中,一般用于存储非结构化数据。
1.4 数据共享分系统
数据共享分系统包括接口网关、接口信息管理、用户管理等功能。数据共享分系统主要对多种存储技术存储的各类数据,提供统一、便捷的数据服务。提供了接口框架、检索接口、计算接口、可视化接口、数据库访问和接口管理等服务。
接口服务流程如图3所示。用户通过接口客户端或接口测试工具发起数据服务请求;数据服务请求通过接口网关实时将数据服务请求转发至对应服务器的接口服务;接口服务端获取服务请求后,对接口请求进行解析,拼接指定数据库类型的SQL,然后执行语句获取数据并对检索结果进行格式化,最后返回结果。
图3 平均计算能力vs时间块长度Fig.3 Average computing power vs time block length
图3 访问观测资料流程图Fig.3 Flow chart of accessing observation data
2 关键技术
2.1 基于消息的数据传输
为了增加数据传输的可靠性,在系统中采用了消息发布确认和消息接收确认模式。发布确认可以有效确保消息传输到了消息服务器,接收确认的原理是:在消息消费者获取消息之后,并没有马上把消息删除,而是将消息标识为Unacked状态,直到收到消费者消费完消息返回指令后,才会从队列中删除消息,从而保证消息的完整。
2.2 基于日志消息的数据库同步
建立数据同步功能,实现了基于数据库操作日志的从缓冲库到服务库和分析库的同步。
数据同步处理流程如下:
(1)传输系统分发的结构化数据通过解码程序处理后存入缓冲库;
(2)数据同步程序根据同步策略采用日志流同步机制,实现数据从缓冲库到服务库和分析库的数据同步;
(3)在缓冲库中存储的数据按照清除策略进行清除。
2.3 基于消息的系统内部信息交换
省级气象数据共享系统基于控制信息的消息通信和共享文件系统的数据交换, 实现各分系统间业务数据的流转。系统利用消息队列的可靠异步传输机制构建高性能、高可用的消息传输实现系统间或系统内的控制信息的交互, 并推动数据在分系统间的流转。
3 小结
根据省级对气象数据管理的现状以及需求分析,按照数据的特点在数据的传输、存储、共享等环节采用了消息、Kafka、Zookeeper等大量开源的新技术,由此构建了省级气象数据共享系统,该系统具有如下优点:
(1)在观测数据的传输中按照资料传输频次、大小、数量、时效要求等的不同分别采用了文件FTP、消息,大大提高了传输效率;
(2)在存储中根据应用需求不用使用了不同的数据库,针对查询时间序列长而更改较少等统计引入了列存储分布式数据库,解决了存储一直以来的瓶颈;
(3)在共享服务中首次采用了数据网关等新技术实现了访问的负载均衡、流量控制等功能,保证了气象数据访问的效率和安全。