顾文静 戴晴 张媛媛 王鹏
(1 国家气象信息中心, 北京 100081; 2 华云信息技术工程有限公司,北京 100081)
目前,基于卫星链路的CMACast广播[1]和基于地面宽带网的实时资料下载平台是国省数据共享的两大主要传输通道。通过CMACast卫星广播传输,具备“只播发一份数据量,所有接收站均可接收到”的优势,但是也存在单向传输、受雨衰影响和无线电干扰丢失文件等缺陷,且CMACast每日广播400 GB已接近饱和[2]。实时资料下载平台提供的被动自由下载能够避免卫星广播的缺陷,但需要用户定时轮询接口目录,不仅影响实时数据的获取时效,也造成了大量无序轮询操作,且不具备用户访问控制管理能力。
为解决上述问题,且满足省级用户获取临省实时观测资料和实况分析产品等迫切的业务需求,国家气象信息中心设计了基于消息通信进行数据共享的新流程[3-4]。目前,已经实现国省之间消息通信、国家级授权、省级订阅等功能。当国家级新资料到达后,触发数据到达消息通知,省级系统客户端收到消息通知后,启动数据下载。
本文详细介绍了国省数据共享系统的设计实现及业务应用等,依次对系统架构、数据共享流程及技术实现进行详细描述,并阐述下一阶段的工作方向。
国省数据共享系统基于消息通知机制开发,实现省级从国家级主动获取数据的功能,能够覆盖地面宽带的数据下载和卫星广播的数据补调等国家级对省级提供的数据共享需求,支持大容量多种数据的高速传输,具备国家级多种来源(国内、国际等)的数据采集能力,支持HTTP、FTP、SFTP等多种数据传输协议[5]。
国省数据共享系统包含基于消息机制的数据到达通知、数据下载与补调、数据共享订阅与授权管理、数据管理和监视与统计等5个功能模块,如图1所示。
图1 功能结构
基于消息机制的数据到达通知。实现省级客户端收到数据到达消息通知后,主动从国家级下载数据的功能,满足国省数据协同传输的业务需求。
数据下载与补调。支持HTTP、FTP、SFTP等多种数据下载协议,具备数据重传和自动/手工补调功能。对接CMACast广播系统,在新框架下重构CMACast数据补调功能。
数据共享订阅与授权管理。实现国家级数据授权与省级数据订阅功能,数据订阅与授权的实时动态生效。支持基于4级编码和省级编码资料的授权与订阅。数据管理。根据实时资料下载平台数据分级存储规划,开发相应的数据迁移程序,实现数据的统一管理。
监视与统计。按照综合业务监控的要求,实现数据传输、消息通知和订阅与授权管理等业务信息,以及系统运行状态信息,记录并发送到气象综合业务实时监控。
基于消息通知机制的国省数据共享系统采用集中管理和多层的体系结构以简化系统的业务逻辑,降低系统的设计和实现的复杂度,提供简单、方便有效的管理手段[6]。平台总体架构可以划分为4个层次和4个保障体系,如图2所示,4个层次自底向上分为基础设施层、数据服务层、应用服务层、访问接入层;4个保障体系分别为标准规范体系、运行维护体系、安全保障体系、技术支持体系[7-8]。
图2 技术架构
基础设施层是指支撑系统正常运转的基础软件和基础硬件设施,包括服务器、网络安全设备、存储设备、磁盘阵列以及支撑系统运转的操作系统、数据库软件、存储备份系统、安全软件等。
数据资源层是系统信息汇集和数据存储与管理的基础。包括文件系统、数据库和内存缓存这3种数据的存储方式。其中数据文件、配置文件和日志文件通过文件系统进行存储;系统和业务监视信息、统计信息、业务策略和配置信息和用户信息、目录信息等通过数据库进行存储;对数据传递过程中的中间态文件以内存方式进行缓存[9]。
应用服务层的系统软件包括监视统计、下载客户端、数据到达通知、CMACast补调、数据管理等业务功能。
访问接入层提供界面服务和接口服务。其中,界面服务主要指人机交互的相关功能,值班员和维护人员通过界面监视系统运行和业务处理状态,系统管理员通过后台管理界面对数据目录管理、数据授权等操作,省级管理员通过交互界面进行数据查询、数据订阅等操作,此外,用户也可以通过ES数据库的接口进行数据发布查询、下载记录查询、数据统计等。该层采用B/S结构[10]。
标准规范体系是支撑系统运转的基础,用以实现应用协同和信息共享,节省项目建设成本、提高项目建设效率,满足系统不断扩充、持续改进和版本升级的需要。
运行维护体系为确保国省数据共享系统的协调性和连续性,构建以系统运行保障为基础的运行维护体系,建立了运维管理机制,明确以事件管理、问题管理、变更管理和配置管理等环节为基础的运行维护流程[11]。
安全保障体系是保障系统安全应用的基础,包括物理安全、网络安全、信息安全及安全管理等。
技术支持体系的核心是人,通过科学的服务管理流程建立专业服务体系的标准化,针对国省数据共享系统新的数据需求和功能需求不断推陈出新,优化组合,保障系统的不断优化和完善。
国家级系统服务端发布实时数据共享服务,省级部署系统客户端,当授权订阅的数据到达国家级设定位置后,国家级服务端向省级客户端发送数据到达通知,由省级客户端从国家级下载对应资料,并存入省级数据环境[12]。如果下载失败,下载客户端根据时效配置尝试重新下载直至超时。对于自动下载失败的数据支持通过页面进行人工手动下载。整合原CMACast数据补调功能,根据省级CMACast小站接收情况自动生成补调清单,生成补调任务消息,由省级客户端执行数据补调任务,数据流程如图3所示。
图3 数据共享流程
(1)基于消息通知机制的数据到达通知。国省数据共享系统基于RabbitMQ的消息机制进行设计,当国家级下载平台接收到文件后直接将文件属性、资料路径等信息封装到RabbitMQ的Exchange中,Exchange根据各省的订阅情况转发到本省的消息队列;同时省级客户端通过监听本省的消息队列,从消息中获取该资料的路径并下载数据[13-15]。这种方式避免了各省到下载平台服务端的目录轮询,提高了数据流转速率,同时减少了目录轮询对服务端硬盘的I/O压力。
(2)分省数据权限控制。国家级下发的资料分为全国和分省数据,针对不同省份对他省分省资料的订阅需求,设计他省数据授权及订阅流程。比如四川、湖北、新疆的HRCLDAS分省0.01°×0.01°逐小时融合实况分析产品提供新疆订阅,则新疆在订阅HRCLDAS分省0.01°×0.01°逐小时融合实况分析产品时,系统比对订阅请求列表和授权列表,筛选出已授权的省份代码,因此新疆只能成功订阅四川、湖北、新疆的数据,其他省份数据订阅失败。
(3)CMACast补调设计。广播下载客户端的下载日志和国家级的播发日志都发送到省级磁盘阵列,省级将下载日志和播发日志分别进行解析以Key-Value的Map格式存储到省级的缓存中,然后对广播数据Map、下载记录Map和广播应收节目表三者做比对,找出省级已经订阅且国家级已经播发,但没有下载记录的资料,封装成通知消息发给RabbitMQ中间件,由省级的下载客户端再次进行下载,补调流程如图4所示。
图4 CMACast补调流程
国省数据共享系统基于RMQ的架构体系进行业务和数据资源的整合及集成,采用多层体系架构,保证功能自顶向下合理分解[16]。通过分层架构设计,减少子系统间的依赖关系,降低耦合度,从而更易于系统建设、维护和优化;根据业务的需求,通过快速开发或者配置调整系统来适应数据传输升级建设项目的业务需求。
2.2.1 基于消息机制的数据到达通知模块
国省数据共享系统应用Flume监听FTP日志,读取到1条日志后,首先进行传输状态(OK UPLOAD或OK RENAME)、用户名、读取资料落盘路径的匹配,随后进行文件名检查,通过filematch匹配4级编码,并通过4级编码或目录路径判断是否是分省资料,分省资料拼接的RoutingKey为R.MSG.RDS.4级编码.省级编码,不分省资料拼接的RoutingKey为R.MSG.RDS.4级编码,根据解析出来的字段封装消息和RoutingKey发送到配置文件中配置的Exchange中生成数据到达通知消息,发送到国家级消息服务器的国省队列里,省级客户端监听各省自己的国省队列,监听到消息之后根据消息中的路径进行下载。
数据到达通知模块用以采集国家级下载平台要发布的数据,采集后以消息通知的方式给各省RabbitMQ消息队列发通知消息[17],与其他模块交互关系如图5所示。
图5 基于消息机制的数据到达通知模块交互关系
2.2.2 数据下载与补调模块
省级客户端收到国家级发送的数据到达通知后,根据通知消息携带的信息从国家级进行文件下载,下载分批次从队列获取消息,每批次取10个消息,分别交给10个下载线程并行下载。同时监听本省RMQ消息队列,若下载失败,该消息重新放回队列,每条消息最多支持3次下载,3次均失败则将该消息存入下载失败索引中,随后进入补调下载流程。通过扫描缓存中的下载失败索引,获取索引进行下载,直到下载成功或者该索引过期失效。
数据下载与补调模块通过从RabbitMQ消息中间件中读取消息,接收到消息之后给气象综合业务实时监控发送消息到达的DI进行下载,下载结束后拼接下载DI发送到气象综合业务实时监控的ES库[18]。与其他模块交互关系如图6所示。
图6 数据下载与补调模块交互关系
2.2.3 数据共享订阅与授权管理模块
国家级运维人员给各省进行数据授权之后,省级运维人员才能获取到已经授权的数据列表,省级运维人员从已授权数据列表中进行订阅,订阅成功后会在RabbitMQ中通过资料类型建立Exchange交换机和该省队列的绑定关系[19],数据授权管理与共享订阅模块与其他模块的交互关系如图7所示。
图7 数据下载与补调模块交互关系
2.2.4 数据管理模块
配置资料名称、目录名称、上级目录ID和4级编码。每种类型资料都配置目录名称ID和上级目录父节点ID,实现资料管理的树形结构。
数据管理模块是国省数据共享系统的基础模块,为其他模块提供支撑。国家级运维人员负责数据管理,数据管理后实现数据的授权管理和省级的共享订阅等功能,数据管理模块与其他模块的交互关系如图8所示。
图8 数据管理模块交互关系
2.2.5 监视和统计模块
对数据传输、消息通知和订阅与授权管理等业务信息的整个流程,以及系统实时运行状态信息,按照气象综合业务实时监控的要求记录并发送DI和EI信息,包括数据到达后,通知发送成功DI和发送失败的EI;客户端下载之前、下载成功的DI和下载失败的EI[20]。
监视与统计模块对共享数据的全流程发送DI进行统计,监视和统计模块与其他模块的交互关系如图9所示。
图9 监视与统计模块交互关系
为降低数据的冗余,基于消息通知机制的国省数据共享系统在国内气象通信系统的表结构基础上新增了5张表,这5张表和国内气象通信系统的原有业务高内聚,和原有的软件结构低耦合。其中用户信息表(TD_BUDIAO_USER)存储各个省份的用户信息;目录信息表(TD_BUDIAO_DIR)存储国家级要发布的各类资料的基本信息,包含资料编码、分省标志等;用户和资料授权关系表(TD_BUDIAO_USR_DIR)存储各个用户和各类资料的授权关系以及用户对该类资料的订阅状态标志;各省可订阅外省数据的授权表(TD_ORDER_PROV_AUTH)存储国家级对各省可订阅的外省数据的授权情况;各省的省级编码表(TD_PROV_CCCC)存储各省省份名称和省级编码的对应关系。国省数据共享系统的数据库表结构如图10所示。
图10 数据库表结构
新增资料目录配置,如图11所示,登录国省数据共享系统,进入【数据目录配置管理】分页面。分别配置资料大类和下属资料信息,资料大类是1级目录,后续新增同一大类资料不需要重复配置;下属资料位于2级目录,每新增1类资料均需填写配置信息。配置信息包括目录名称、资料名称、上级目录名称、4级编码和是否分省资料。
图11 新增资料配置页面
新增资料授权,如图12所示,进入【数据授权】分页,选择需要授权的省份,勾选授权的资料,保存后完成授权。
图12 新增资料授权页面:(a)省级列表,(b)省级授权
分省数据授权,如图13所示,国省共享的数据分为中国的资料和分省切片的资料,分省资料的文件名中包含省级编码,4级编码一般为R002结尾。以山西的/ANALYSIS/CMPAS分省0.01°×0.01°逐小时降水实时融合实况分析产品为例,经授权配置可以提供四川、广东、甘肃下载。
图13 分省资料授权页面:(a)分省资料配置,(b)分省资料授权
登录省级系统,进入【目录订阅配置】分页面,可看到国家级授权给该省订阅的数据目录清单,各省级根据自己的需要在授权的目录清单中,订阅需要的资料,如图14所示。
图14 省级订阅页面
国省数据共享系统目前承担多源融合实况分析产品、智能网格产品以及2类临时资料的国省数据共享服务,其中实况产品17种,智能网格产品6种。2021年6月下发的数据总量共计6361.61 GB,详见表1。
表1 2021年6月国省数据共享系统下发数据量统计
系统监视,如图15所示,国省数据共享系统的全流程业务监视,实现数据收集、消息到达通知、省级数据下载情况的全流程追踪和时效分析,保障国省数据的快速可靠共享。
图15 国省数据共享系统监视页面
对全国31个省份全部订阅的11种共享数据进行时效统计(图16),统计时间包含数据收集、通知下载和省级传输的全过程,数据下发时间基本在5~35 s 之间,平均时效为17.49 s,满足省级业务需求。
本文基于消息通知机制的国省数据共享系统的设计与实现目前支撑国省智能网格产品和多源融合实况分析产品实时传输,平均时效为17.49 s,满足省级地面宽带的数据下载和卫星广播的数据补调需求,资料下发后通过省级通信系统接入省级数据环境,并由MUSIC接口提供用户使用。
后续我们将统筹全国地面宽带网(CMANet)的资源,加快数据接入,并依托国省数据共享系统实现对国省数据共享的有效管理和控制。根据资料对省级业务的重要性、资料数据量和时效要求,设置高中低优先级进行传输,建设可靠、高效、有序的国省数据共享业务流程。