APP下载

一种格点预报数据分布式服务系统的设计与实现

2018-08-15孙周军乔文文陈晓庆

计算机应用与软件 2018年8期
关键词:格点数据服务分布式

孙周军 郭 捷 乔文文 侯 灵 黄 伟 陈晓庆

(广东省气象探测数据中心 广东 广州 510080)

0 引 言

随着数值预报的准确度、分辨率等大幅度提升,数值预报在中尺度天气预报中占有越来越重要的地位,业务需求也非常旺盛。数值预报数据量大、种类繁多,实际生产环境中多以集中式存储设备为主,给海量的气象数据提供存储管理和服务工作带来复杂性,同时对于历史资料的应用,也比较困难。如何做好气象数据的管理与服务工作一直是气象信息发展探索解决的问题。李集明等[1]介绍了通过元数据技术对网格数据进行管理的关键技术;王伯民等[2]对气象数据发布策略进行了相关研究;肖华东等[3]介绍了MARS(Meteorological Archival and Retrieval System)气象数据归档和检索系统,它是欧洲中期天气预报中心气象应用部门研发的气象数据管理和服务系统,利用磁带进行海量资料的管理,用于ECMWF的气象存档管理和数据访问;李永生等[4]介绍了基于Hadoop基础利用HBASE对格点数据进行存储管理和接口发布,引入分布式存储和计算技术。本文对气象业务中数值预报的数据特点、应用现状以及气象部门现有硬、软件资源进行研究和分析,提出一种数值预报数据在气象业务应用中的分布式数据服务方法,解决在分布式存储环境下,高时效地对种类繁多、海量的数值预报数据进行写、读和计算的集中处理问题。详细描述海量数值预报数据的组织方式,分布式的数据服务方法,高可用性的实现方式以及各种格点数据的处理方法。业务应用表明,系统在广东区域格点化预报的业务应用中满足高效、稳定和使用便捷的要求。

1 相关技术

1.1 服务总线

企业服务总线ESB(Enterprise Service Bus)是在面向服务体系架构基础上发展而来,ESB是SOA的基础架构。企业将所有的数据、功能、应用和功能都注册于服务总线,通过服务总线将这些细粒度的单元有效连接起来。企业服务总线改变了传统的软件结构,提供比传统中间件产品更为廉价的解决方案,同时消除不同应用间的技术差异,实现不同服务之间的通信与整合[5]。Mule ESB(Mule Enterprise Service Bus)、OSB(Oracle Service Bus)等都是能够实现应用软件间互相交互信息的集成平台。格点预报数据服务的开发亦采用服务总线的设计思路,让各类格点数据能够实现分布式服务。

1.2 SOA架构

面向服务架构SOA(Service-Oriented Architecture)是一种面向服务的企业应用体系结构,由多个标准组件构成的架构模型。它提出资源和应用是可重用的服务,利用标准的协议进行通信,提供了一个具有较高灵活性、效率的信息集成方式[6-7]。

面向服务的体系架构包括服务提供者、服务消费者和服务注册中心3种角色。其中:(1) 服务提供者负责服务逻辑功能的具体实现;(2) 服务消费者则是服务请求的发起者;(3) 服务注册中心负责服务的注册、分类和查找功能。图1描述了SOA的工作原理,即技术开发人员将企业需要提供的软件功能进行合理粒度的划分和实现。并通过注册服务将其提供的服务发布到服务注册中心,服务注册中心对已经注册的服务进行分类管理,并为消费者提供服务查询功能,当消费者发现符合条件的服务时,根据服务信息进行服务绑定/调用,以获得需要的功能[8]。

图1 SOA架构数据流程图

SOA架构的产生主要是实现技术和服务的完全分离,从最大程度上达到业务系统的松散集成和重组。架构的具体实现与计算机应用技术的发展密切相关,其中XML、SOAP、WSDL和UDDI技术的成熟应用为SOA架构的实施奠定了技术基础。(1) 可扩展的标记语言(XML)是一种封装了数据和元数据的结构化文档。这种封装能力为异构环境的信息交换提供了统一的数据格式,包括消息、服务描述以及工作流的描述。(2) 简单对象访问协议(SOAP)是一种轻量的、简单的、基于XML的协议,它被设计成在Web上交换结构化的和固化的信息。(3) Web服务定义语言(WSDL)是一个借助XML来描述Web Service和说明如何与Web服务通信的XML语言,为用户提供详细的服务说明和调用方式。(4) 统一描述、发现和集成协议(UDDI)提供了在Web上描述并发现商业服务的框架,是面向Web服务的信息注册中心的实现标准和规范。

2 系统设计

目前,中国气象局主要运行T639L60模式、GRAPES全球及区域模式、TGEE集合预报等几类业务或准业务天气预报模式[9-11]。各区域中心根据自身气候特点发展的预报模式,以及从欧洲中心、德国和日本等获得的数值预报产品,以上是气象部门的数值预报产品来源,其预报时效长、时间间隔短、分辨率高。同时,中国气象局主导研发的SWAN 2.0、MICAPS 4.0系统,均采用格点数据进行存储,由此形成非常丰富的气象格点数据集。要针对丰富的格点数据提供在线服务,则需要能够对分散存储的格点数据进行归类存储,并研发能够分布式调取格点数据的服务端,利用SOA架构统一对用户提供接口支撑,从而实现格点数据的海量存储管理和服务。

2.1 软件架构

GRIB、NetCDF和HDF都是国际上通用的数据格式,MICPAS和SWAN系统也自定义了格点数据存储格式,要使得格点数据服务同时兼容多种格式,且能对规整分散存储的数据提供统一的服务。如图2所示,软件从架构上分为四层:存储层、服务层、访问接口层和业务应用层。其中存储层和服务层的设计采用微服务概念,形成分布式的格点数据服务,有效分担和承载较大规模的访问请求;访问接口层采用SOA的设计思路,提供统一的服务管理和调用,有利于用户的应用开发和对整套业务系统的调用监控。

图2 格点预报数据服务软件架构

存储层 对原有分散的格点数据进行分类,按照一定的存储规则进行分散存储在不同的主机,以达到由不同存储主机组成海量的存储集群。由于格点数据按照类别、目录和文件名有规则的集中存储,从而让服务软件能够根据请求精确定位到具体要操作的格点文件。

服务层 针对不同的数据格式实现读取、写入和裁剪等所有操作功能,并以独立的服务软件与存储层集成部署,提供对存储层格点数据的操作。

访问接口层 以服务的方式发布给用户调用的接口服务,访问接口保存一份各类资料数据格式和存储IP的配置清单,从而接口根据请求的资料类将请求路由到负责提供该类资料的服务层和存储层完成对格点数据的所有操作,操作结果返回给用户。

业务应用层 主要是基于访问接口的调用开发的业务系统软件。

2.2 实现原理

分布式数据访问服务系统以提高访问效率、提升系统并发能力、屏蔽数据结构的异构性设计为原则,考虑到系统提供规范化调用方式、规范化输出结果和接口易维护与易扩展的需求,将系统从实现上划分为调用层、业务层和数据服务层3个层次,逻辑划分为5个模块:解析单元、身份认证、规则管理、参数校对、分发执行。各模块之间的数据流程如图3所示。

图3 图格点预报数据服务软件数据流程

调用层即是用户调用数据访问服务的边界。逻辑层即是核心,负责对用户请求进行分析处理和响应,包括解析单元、身份认证、业务规则管理、参数校对、分发执行逻辑模块。数据服务层即是利用数据服务访问系统对外提供数据读、写操作,以及对格点数据的存储,利用分布式存储的业务拆分技术实现大容量格点数据的统一管理与应用。其中涉及到的核心逻辑模块功能详细描述如下:

1) 解析单元 参数分为系统参数和业务参数两类:(1) 系统参数,即服务系统业务逻辑完整运行必要的非空参数,包括接口ID、用户ID、密码、数据格式、业务程式和数据源名称(参数标识分别为:interfaceId、userId、pwd、dataFormat);(2) 业务参数,即系统参数接口ID所对应业务规则正常执行所需的非空参数。用户按照调用方式的参数规范要求传参,解析单元负责分解,形成Map对象。

2) 身份认证 系统的角色分为两类:(1) 系统管理员,可通过接口获取数据,同时具备登录本系统控台进行权限管理、接口定义、格点元数据定义、日志查询;(2) 对外用户,仅能够查阅和调用系统发布的数据接口。

3) 业务规则 根据接口ID,在业务规则库中检索对应的业务规则程式,利用业务参数填充规则程式中对应的位置,形成完整的、可执行的程式。

4) 参数校对 根据接口ID,在业务规则库中检索对应的业务规则程式,检查用户提交的请求参数是否符合接口要求,并将用户参数值与规则程式中的参数进行绑定。

5) 分发执行 根据用户提供的业务参数(模式ID)确定提供数据的格点服务器,并与其进行通信,将用户参数请求按照预定规则发送给服务器,并将服务器返回数据进行封装返回给用户。

2.3 功能设计

数据访问服务系统以简约化、人性化设计为原则,考虑到管理用户的良好体验效果和便捷管理维护需求,服务系统的管理平台划分为:格点预报管理、接口管理、日志管理、用户管理等主要功能。

1) 格点预报管理 将格点数据服务接口能够提供的格点数据元数据信息进行发布与管理,包括每类数值预报包括的气象要素、层次、预报时效、数据单位以及格点数据的经纬度间隔和每天发布的时次等信息。

2) 接口管理 将格点接口数据支持的方法通过配置方式设定具体参数名称、是否为必填参数等信息。

3) 日志管理 日志管理分别记录接口调用的起始时间、耗时和用户参数,同时计算接口调用的平均、最大和最小耗时,方便管理人员进行故障排除和业务程式性能调优。

4) 用户管理 主要是确保服务系统访问平台的安全,定义接口的使用用户和管理维护用户,及用户能够访问的功能模块。

2.4 调用方式

本系统的设计针对两类业务系统:一类只是单纯的读取格点数据,对时效性有一定容忍度的;另一类具有人机交互的业务系统,对数据读取和写入时效性要求高的。考虑以上场景,将对格点数据的访问发布为RestFull服务,针对前者提供Http和SOAP协议访问服务;同时,提供基于Socket套接字的SDK包,针对后者场景提供服务,主要用于精细化格点预报平台的数据快速交互。以上提供的调用方式满足绝大多数语言的调用。

3 关键技术

本系统的设计旨在提供数值预报平面场数据检索、任意经纬度插值、平面场裁剪和非规则地区格点数据写入等功能[12],支撑全省格点数据服务有关的业务系统,在可靠性、并发性、扩展性和响应速度上都提出较高的要求。基于此需求,利用Rose Mirror HA解决可靠性,利用分布式部署服务解决并发与扩展性,利用缓存技术解决响应速度问题。

3.1 缓存技术

Redis技术[13]是一种Key-Value类型的内存数据库产品,与Memcache相类似,但其支持较多的数据类型,为保证数据的访问效率,数据都缓存在内存中,可以直接用于数据存储服务。在本系统中,根据格点数据服务实际业务使用情况,对于规则平面写入与读取、定点插值函数进行缓存处理,提高数据服务响应能力,同时降低因读取格点文件而造成的系统IO压力。主要处理逻辑实现如下:

String Key=JSON_KEY(paramMap);

String Ret=null;

Map dataInfo=null;

if (Redis.containKey(Key)){

dataInfo=getGridData(paramMap);

if(null!=dataInfo)

Redis.setEx(Key,cacheTimerange,dataInfo);

}else{

dataInfo=Redis.get(Key);

}

Ret=formatRet(dataInfo,paramMap.get(“dataFormat”));

其中,JSON_KEY函数主要利用用户请求参数形成缓存数据的Key值。如果用户请求命中缓存,则将缓存中的数据返回给用户格式化的数据;否则,与格点数据服务进行通信获取数据,并根据预先设定缓存失效时间,将数据存储到缓存中,同时返回给用户格式化的数据。

3.2 裁剪技术

气象数值预报常常输出的模式数据包括全球范围预报,然而在实际的业务应用中,往往只需某局部范围的格点数据,从而倒逼格点数据服务需要具备裁剪功能。由于裁剪范围具备随意性,所以用户设定的左上、右下坐标范围未必恰巧落在格点上,所以此时需要采取一定策略进行处理。内缩裁剪算法是建立在与用户的协商基础之上的处理规则,即经度向正方向收敛,纬度向低纬收敛,直到遇到具体的格点为止。具体的几种情况如图4所示。

图4 内缩算法效果

3.3 插值算法

对于格点预报数据而言,用户经常希望对任意地理位置求其预报值,而此时该点并未恰巧落在格点数据上,所以需要经过插值方法求得。因格点数据的网格间距疏密不同,则采用不同的插值算法。以广东应用为例,其中部分格点数据最密为1 km,最粗要到25 km,因此在本系统中分别采用最近距离法[14]NN(Neareast Neighbor)和反距离加权[15]IDW(Inverse Distance Weighted)进行插值。格点密度高的,采用NN,否则采用IDW。主要处理逻辑实现如下:

(1) IDW格点数据插值算法具体实现如下:

Float grid_idw(float anyLon,float anyLat){

Float ret=0.0f;

Float[] xPoints=getXPointsFromGridFile();

Float[] yPoints=getXPointsFromGridFile();

//判断是否落在格网格点上

Boolean IsInThePoint=isInThePoint(xPoints,yPoints,lon,lat);

If(isInThePoint) {

ret=findVal(findP(lon,lat));

}else{

Int LeftTopP=findLeftTopP(lon,lat);

//查找左上格点

Float LeftTopV=findVal(LeftTopP);

//查找左上格点值

Int RightTopP=findRightTopP(lon,lat);

//查找右上角格点

Float RightTopV=findVal(RightTopP);

//查找右上格点值

Int LeftButtonP=findLeftButtonP(lon,lat);

//查找左下角格点

Float LeftButtonV=findVal(LeftButtonP);

//查找左下格点值

Int RightButtonP=findRightButtonP(lon,lat);

//查找右下角格点

Float RightButtonV=findVal(RightButtonP);

//查找右下格点值

//如果4个点的值全部为缺测,则直接返回缺测值

If(LeftTopV==RightTopV==LeftButtonV==RightButtonV==UNDEFINE_VALUE) {

ret=UNDEFINE_VALUE

}else{

ret=IDW(左上{经度,纬度,值},右上{经度,纬度,值},左下{经度,纬度,值},右下{经度,纬度,值},插值点{经度,纬度});

//IDW算法的具体实现

}

}

}

(2) NN格点数据插值算法具体实现如下:

Float grid_nn(float anyLon,float anyLat){

int p=findNeareastPoint(lon,lat);

ret=findVal(p);

}

3.4 分布式设计

格点数据从时间纬度、空间纬度都较广且预报要素较多,要保持较长时间的格点数据则需要根据实际情况分开存储,从而导致在每个存储数据的服务器上部署相同的格点数据服务。当用户发起数据访问请求时,则根据具体的请求模式名称,由分发策略将客户端连接到准确的格点数据服务进行数据服务操作。

分布式的部署方法,优势较为明显:(1) 支持高并发方法。与单机部署相比,可将所有请求根据转为由多个服务器进行服务,从而提升并发服务能力。(2) 数据分布式存储。因格点服务可部署多台服务器,通过业务请求分发策略模块进行响应,从而可以将不同的格点数据进行分布式存储,但不影响客户端的应用。部署架构如图5所示。

图5 分布式格点服务部署架构

在本系统的实际应用过程中,广东省将精细化格点预报与全国下发的数值预报数据分别进行存储,提供分布式格点数据服务,取得较好的应用效果。

3.5 高可用设计

格点预报数据服务作为整个业务的数据交互核心,需要提供7×24小时数据服务,则必须拥有备份系统自动接管的功能,且保证数据的一致性。本系统利用Rose Mirror HA[16]方案(见图6),进行格点数据实时弱同步,且当主服务节点宕机或应用异常之后,虚拟IP、应用则会自动漂移到备机继续提供数据服务。此方案为一种较为廉价的软件高可用方案,亦有多种其他高可用方案。

图6 Rose Mirror HA架构

在本架构中主要涉及到以下角色:

1) 主服务器 当前提供格点数据服务的服务器为主服务器,安装有格点数据服务程序,并在网卡中绑定VIP地址。

2) 备份服务器 当前处于备份状态的服务器,安装有格点数据风物程序。

3) 私有网络 在主、备服务器之间建立的直连网络,用于心跳通信和格点数据的同步传输。

4) VIP 虚拟IP地址,提供对客户端的服务访问,绑定在当前提供数据服务的服务器上。

高可用服务的保障过程:在主、备主机上分别部署相同的格点服务软件,同时对格点数据目录设置为互相同步,并设定VIP。当主节点的数据目录发生变化时,基于增量策略和流技术将数据同步到备份主机,实现主、备间的数据同步;当主机点监视模块监测到格点数据服务软件掉线等异常时,主节点则通过自动将自身服务下线,同时通知备机接管服务;当主节点服务器宕机时,备份节点通过私有网络检查不到心跳信号,此时备份节点亦会主动接管数据服务。接管后的服务器会重新绑定VIP地址,同时启动格点数据服务应用,提供正常的服务。

在实际的业务应用当中,Rose Mirror HA高可用格点数据服务解决方案一般会在1~3分钟内实现数据的接管,不会给用户带来明显的服务中断体验。

4 应用实例

1) 广东省精细化格点预报订正平台(见图7) 作为广东精细化格点预报平台,主要进行主观格点预报业务支撑平台,该平台的主观格点预报的写入、读取、插值序列都基于本系统分布式格点数据服务完成。广东省21地级市通过该平台每日制作格点预报,格点数据集中存储,数据统一服务,验证分布式格点数据服务系统的可靠性、稳定性与并发性,该设计亦符合气象信息化建设发展思路。

图7 广东省精细化格点预报订正平台

2) 广东省SWIFT系统平台(见图8) 省气象台主要展示各类气象数据,其中数值预报模块将格点数据服务中的各类数据进行图形动态绘制,提供数据展示服务。全省业务人员均基于此系统查看Grapes中各地的格点预报,同样验证分布式格点数据服务系统的可靠性、稳定性与并发性能够满足业务需求。

图8 SWIFT主界面-2米温度场

5 结 语

分布式格点预报数据服务系统支持分布式部署,逻辑结构松散耦合,分布式特性使得系统能提供高并发的访问量,同时能够在业务中将格点数据进行业务拆分存储,正常提供数据服务。基于本系统支撑的广东精细化格点预报订正平台与SWIFT平台业务化运行以来,其正确性、可靠性、高可用性和可扩展性,满足业务中对数值预报的业务需求。同时,其扩展性能够快速地将新的数值预报方便地集成到格点服务系统中,充分验证了系统可行性。

猜你喜欢

格点数据服务分布式
大数据时代高校图书馆数据服务的困境及优化路径
地理空间大数据服务自然资源调查监测的方向分析
网格中相似三角形的判定
基于数据中台的数据服务建设规范研究
格点计算器
浅析分布式发电对电力系统的影响
一道格点角度问题的解悟
数据服务依赖图模型及自动组合方法研究
基于预处理MUSIC算法的分布式阵列DOA估计
格点和面积