APP下载

一种微服务框架的暴雨强度服务平台设计与实现

2019-07-30刘樱杨明徐集云王锐曾悠高婷

现代计算机 2019年18期
关键词:应用服务历时服务平台

刘樱,杨明,徐集云,王锐,曾悠,高婷

(1.浙江省气候中心,杭州310017;2.浙江省气象信息网络中心,杭州310017;3.浙江省交通规划设计研究院有限公司,杭州310017)

0 引言

暴雨强度公式是反映降雨规律、指导城市排水防涝工程设计和相关设施建设的重要基础。传统的暴雨强度统计是根据当地降水数据进行拟合后给出经验公式,根据经验公式代入需要计算的重现期及降水历时后,得出暴雨强度值,这样的查询方式复杂、繁琐且较为费时,已经不能满足现在气象业务中大数据量、高并发、高效查询的需求。为了提高暴雨强度计算与查询的性能和低耦合性的要求,本文尝试采用Spring Cloud微服务框架重构传统的暴雨强度公式计算与查询方式,并对其采用的技术方法进行研究。

由于暴雨强度公式编制的特殊性,传统的暴雨强度计算查询是通过人工计算,没有一个简单全面的操作平台。浙江省气候中心自2015 年开始,为期4 年时间编制完成了浙江省站70 多个站点的暴雨强度公式,这为本系统提供了基础支撑,也是本系统的亮点所在。鉴于此,本文以需求为牵引,结合业务应用的特点,基于微服务框架研发了一套能充分发挥分层服务和高并发的优势,为用户提供扁平化服务体验的暴雨强度服务平台。为了解暴雨强度情况提供了翔实的数据基础,且操作简单,大大节约了计算与查询时间,为暴雨强度在气象业务和气候评估中的应用起到一定的作用。

1 微服务架构

随着云计算、虚拟化等技术和理念的发展,2014 年由Martin Fowler 和James Lewis 共同提出微服务(Micro Service)[1]。微服务是一个具有高并发、高扩展、独立部署等特性的应用,它将复杂的应用系统以独立业务模块的形式拆解成多个应用服务[2],根据业务场景的需要,选择相应的服务构建业务场景,每个应用服务都是自治单元,可以采用不同的实现技术,各个应用服务都运行在各自的进程中,并使用轻量级的通信机制(如RESTful 或RPC),相互配合实现完整应用[3]。有利于开发者专注于某个模块的快速实现,并提供应用服务。

相对于传统的单一的服务架构,微服务将各个功能分解到各个独立自治的应用服务,实现了对整个应用系统的解耦,具有以下的优势[4-5]:

(1)实现技术选型灵活:开发人员可以针对不同的业务场景和服务需求,选择不同的开发技术或平台,从而有针对性地解决具体业务问题。

(2)复杂度可控:各个应用服务都专注于单一的功能实现,将整体的服务需求,分散到各个应用服务,复杂度减低,较传统架构更加可控。

(3)功能边界清晰:各个应用服务之间通过轻量级的接口通信,服务边界更加清晰。

(4)具有高扩展性:每个应用服务可以根据业务需求独立进行扩展。

(5)独立部署:每个微服务都运行在独立的进程中,当某个应用服务发生变更时,可独立进行部署,无需部署整个应用系统。

(6)高容错:在微服务架构下,故障被隔离在微服务内部。可通过超时重试、多副本策略等机制实现应用层面的容错,避免全局不可用[6]。

2 微服务架构的暴雨强度服务平台

从逻辑上,暴雨强度服务平台分为暴雨数据采集、暴雨数据处理与强度计算和暴雨信息发布三个主要模块,在微服务架构下,三个主要模块为分解为多个不同的微服务,对于功能相近的微服务归并为一个微服务集,制定相关服务标准规范,微服务间通过服务接口通信调用。暴雨强度服务平台的服务框架如图1 所示。

图1 暴雨强度服务平台的服务框架图

通过将暴雨强度服务平台的暴雨数据采集、暴雨数据处理与强度计算和暴雨信息发布三个主要微服务集,统一注册到注册中心,用户通过API 网关和安全管理微服务,根据需求组合不同的微服务,通过统一的数据标准规范,经过采集、加工等流程,在用户端展示。

2.1 Spring Cloud微服务框架的系统架构设计

微服务应用需要统一管理,因此,需要引入一套微服务治理框架,本文采用比较流行的Spring Cloud 微服务治理框架,它主要利用Spring Boot 能够简化应用服务的复杂性,以简单快速的方式实现各个服务和部署应用,并且具有跨平台的互操作性、数据重用性等优势,可以有效解决快速开发部署、跨平台、网络异构和数据重用等问题,简化了分布式系统的基础开发,如配置中心、负载均衡、断路器、服务注册发现、数据监控和消息总线等。

本文利用Spring Cloud 微服务框架定义了一套标准的数据调用方式和接口,为各个服务之间的数据交换和查询等提供标准化的数据支撑。利用Spring Cloud 框架在暴雨强度服务平台中主要具有以下功能:①利用Config 公共配置组件,为微服务集群的参数提供统一的配置;②利用Eureka 服务注册中心组件,在微服务启动时,向Eureka 注册中心注册微服务,利用心跳连接,监控各个微服务的运行状况;③利用Zuul的API 网关服务组件,实现微服务的路由,通过配置映射指定服务分发请求,发现调用其他的微服务,并执行相关的业务逻辑;④利用Hystrix 服务断路器,实现服务的调用熔断控制、降级处理,保障服务故障快速处理,提供可视化监控;⑤利用Ribbon 软负载均衡组件,提供的负载均衡算清,结合服务注册中心实现服务间调用的软负载、动态部署和横向扩容等。在微服务框架中,面向用户的是暴雨信息发布服务,其他服务在微服务框架的内部进行调用。因此,权限管理统一放在网关,所有外部服务请求经过网关时,判断是否合法。

2.2 微服务业务架构

暴雨数据查询系统面临着大量的历史数据、查询计算等高效服务问题,随着各类数据的广泛使用,暴雨相关的数据呈现出了大数据的特征。从数据角度来看,传统的单台服务器的存储和处理能力性能,越来越难得满足数据集增长和计算的需求,这些需要把传统的微服务进行再分解和架构。根据暴雨强度服务平台的暴雨数据采集、暴雨数据处理与强度计算和暴雨信息发布三个主要模块,分解微服务,形成微服务集群。

(1)暴雨数据采集

暴雨强度计算数据的来源主要包括历史降水量、历时各地区暴雨强度计算参数和其他数据等,这些数据一方面通过历年气象自动站采集,整理质控后的气象数据;另一文献是根据各个地区不同重现期整理的计算参数等。后期还包括空间数据等,数据的来源具有全面性、异构性和多元性,通过分析本文将暴雨采集微服务群,对数据进行分类与归纳,拆分为不同的微服务,对接不同的数据类型和存储。数据存储主要分为关系型结构化数据库和非结构化数据库两种数据库,同时针对大数据量的数据,采用分布式文件系统来存储。拆分的微服务包括历史气象数据采集、参数采集和其他数据采集三个服务。

图2 暴雨数据采集示意图

(2)暴雨数据处理与强度计算

根据业务分析,按照业务场景和种类拆分为不同的微服务,实现不同的微服务之间的通信。计算任务采用Spark 框架进行流式计算。微服务集为分短历时暴雨强度计算微服务、历时最大降水量计算微服务和降水分布特征查询策服务。

①短历时暴雨强度计算

根据各历时不同重现期下的降水量和暴雨强度公式,计算不同地区的短历时暴雨强度。

式中:q 为暴雨强度(单位:L/(S·hm2)),P 为重现期(单位:a),t 为降雨历时(单位:min)。重现期越长、历时越短,暴雨强度就越大,而A1、b、c、n 是与地方暴雨特性有关的参数,A1雨力参数,即重现期为1a 时的1min 设计降雨量(单位:mm);c 为雨力变动参数;b 为降雨历时修正参数,即对暴雨强度公式两边求对数后能使曲线化成直线所加的一个时间参数(单位:min);n为暴雨衰减指数,与重现期有关。

②历时最大降水量计算

以滑动求和的方法,计算各地区常规历时下的最大降水量。以分钟数据库为基础,计算5、10、15、20、30、45、60、90、120、150、180、1440 分钟下的常规站及自动站的年最大降水量值,实现降水分布制图功能。

③降水分布特征查询

通过历时数据,实现常年降水分布特征统计值及空间分布计算(时段分为1971-2000 年及1981-2010年两个时段,共计30 年),计算常年同期的降水值计算及空间分布计算。

(3)暴雨信息发布

暴雨信息发布是面向用户或应用的环节,用户通过客户端或应用对服务端API 的资源进行请求,经过网关合法性验证后,根据业务逻辑,调用不同的微服务进行统计计算,向用户或应用返回请求计算或查询结果。提供的功能如下:①统计与查询任意时段,任意重现期(年)下的各地区降水量;②全省多年一遇降水分布,提供各地区降水量的空间分布特征分析;③各地区暴雨强度公式,提供计算公式参数的查询。

3 应用实现

利用本文介绍的技术及方案,实现了基于Spring Cloud 微服务框架的暴雨强度计算与查询系统,简称暴雨强度服务平台。应用结果显示,该设计方案具有较好的效果和良好的应用价值。暴雨强度服务平台效果如图3 所示。

图3 暴雨强度服务平台效果图

4 结语

气象信息化是解决未来气象集约化、一体化的发展方向。本文针对传统的暴雨强度单体结构应用存在的可扩展性、并发性、维护性等方面的问题,介绍了一种微服务框架下的暴雨强度服务平台的设计与实现。介绍了微服务框架的特征及优势、微服务架构的暴雨强度服务平台微服务化关键问题的总体结构、解决治理方案、接口方案等,设计了暴雨数据采集、暴雨数据处理与强度计算和暴雨信息发布三个主要微服务集的各个子功能服务,最后介绍了其应用实现。Spring Cloud 框架的实践为暴雨强度公式计算在研究降雨规律、评估指导城市排水防涝工程设计和相关设施建设的重要基础,也为气象业务系统提供了一种新的建设思路和手段,提高了气象信息化能力。

猜你喜欢

应用服务历时服务平台
这才叫创业!90后水产追梦人打造一条龙式技术产品服务平台
基于“云计算+大数据”的工业互联网大数据云服务平台
加快推进航天强国建设 提升卫星应用服务能力——两会代表委员为航天发展建言献策
全球卫星互联网应用服务及我国的发展策略
量词“只”的形成及其历时演变
常用词“怠”“惰”“懒”的历时演变
高校财务“一站式服务平台”建设探讨
福州首家“奶爸版”母婴服务平台上线
对《红楼梦》中“不好死了”与“……好的”的历时考察
“云水谣”推广平台的设计与实现