APP下载

基于微服务的太阳活动指数预报系统的设计与实现

2021-07-15李浩涌

电视技术 2021年5期
关键词:太阳活动架构界面

李浩涌

(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)

关键字:太阳活动指数;预报系统;Spring Boot;微服务

0 引 言

太阳活动是指发生在太阳大气层中的各种太阳活动现象,其具体表现形式包括太阳黑子浮现和太阳耀斑爆发等现象。太阳活动发生时,会影响地球的通信设备以及基础设施,同时还会增强空间环境中的太阳辐射,从而影响人类的航海和天气等国防和国民经济的众多领域[1]。太阳活动指数是对太阳活动的一种量化描述,常用的太阳活动指数包括太阳黑子数和F10.7射电流量等。太阳活动指数的预报是一种重要的预报类型,同时也是一种复杂的综合系统。建立一个性能稳定、可扩展的预报系统,对于太阳活动的预报尤为重要。

目前对于太阳活动的预报系统大多采用传统的单体服务[2-3]。传统的单体架构可以在小型系统中运行良好,但是系统的复杂度会随着业务功能的增多而急剧上升。业务代码之间的耦合度会增多,从而对系统的稳定性造成影响。另外,系统无法灵活地对业务功能进行扩展。针对这一问题,提出使用微服务架构的思想来构建太阳活动指数预报系统。从预报系统的实际业务功能出发,将预报系统中不同的功能划分为不同的服务,服务之间互不影响,且各个微服务可以同步开发[4],提高了系统的可用性与可扩展性。

1 关键技术

1.1 微服务架构

微服务是一种基于面向服务架构(Service-Oriented Architecture,SOA)的软件开发思想与技术。传统的单体软件架构习惯将所有的功能集合在一个系统中,之后将其打包为jar包或者war包部署在服务器中。系统中各功能的耦合度较高,而且不方便测试与部署。在系统出现故障时,单体架构的系统需要将整个项目进行调试分析后重新部署。微服务架构将不同的业务功能分解为不同的服务,每个服务独立运行,服务之间使用远程过程调用(Remote Procedure Call,RPC)进行相互调用。相对于传统的单体架构,微服务架构具有以下优点[5]。

(1)降低了系统耦合性与复杂性。微服务通过对单体架构系统的细粒度拆分,降低了服务之间的耦合性;每个服务只关注特定业务的功能,降低了系统的复杂性。

(2)灵活性更高。不同的服务可以使用不同的开发语言来实现,可以结合具体的业务功能来选择最优的技术路线。

(3)独立部署。在微服务架构中,每个服务都是一个独立的系统,可以独立部署在服务器中。当某个服务需要迭代更新时,只需对当前服务进行重新部署即可。

(4)容错性更强。每个服务可以部署多个备用服务,当一个服务出现故障时,可以利用注册中心的健康监控机制将其下线,将服务请求发送到备用服务中。

1.2 相关组件

微服务架构包含Spring Boot、Nacos及Spring Cloud Gateway这3个主要组件。

(1)Spring Boot。Spring Boot是Spring Cloud微服务架构体系的基石。Spring Boot继承了Spring框架的控制反转(Inversion of Control,IoC)与面向切面编程(Aspect Oriented Programming,AOP)的思想,同时提出“约定优于配置”的思想,优化了Spring应用复杂的配置。

(2)Nacos。在微服务系统中,一个服务会被拆分为多个微服务。服务可以分为服务消费者和服务提供者,当服务消费者请求服务提供者的功能时,为了防止服务消费者将请求发送到出现故障的消费提供者节点,需要服务注册中心来判断节点是否正常。Alibaba Nacos可以解决此类问题。Nacos可以统一管理系统的服务消费者与提供者,对服务进行统一配置管理,同时实时检查服务的健康情况,阻止服务消费者向出现故障的节点发送请求。

(3)Spring Cloud Gateway。在服务进行请求操作时,存在权限以及请求协议的区别。不同的请求拥有不同的权限,在每次的请求调用中,服务提供者都需要对该请求进行判断,增加了通信的成本。为了解决这一问题,采用Spring Cloud Gateway对请求进行统一的认证鉴权。

2 系统分析设计

2.1 系统需求分析

太阳活动指数预报系统功能需求包括用户管理模块、可视化模块、太阳活动预报模块、数据预处理模块以及模型管理模块。每个功能模块在系统中作为一个单独的微服务应用进行开发设计。系统功能模块如图1所示。

图1 系统功能模块图

用户管理模块包括用户管理、角色管理以及菜单管理等功能,可以为不同的用户分配不同的角色,不同角色拥有不同的菜单权限。可视化模块支持对历史数据进行查询,包括对太阳黑子、耀斑指数以及F10.7射电流量等太阳活动指数的历史数据查询,同时支持根据不同的时间查询不同的太阳活动指数,并基于Echarts框架将其可视化。预报模块是系统的核心功能,用户在界面选择要显示的太阳活动指数预报值后,系统通过调用数据库保存好的预测模型,在界面中显示对太阳黑子和耀斑指数等太阳活动指数的预报值。数据预处理模块可以对太阳黑子等序列数据进行平滑和去噪等预处理操作。模型管理模块的主要功能是负责管理系统的预报模型。预报模型是指经过神经网络训练得到的后缀为h5的模型文件。当预报模型是传统的差分整合移动平均自回归模型(Autoregressive Integrated Moving Average model,ARIMA)等模型时,则使用Java中的Runtime类来调用python接口,得到预测值后将其保存到MySQL数据库。系统管理员可以在模型管理模块更换不同的预测模型。

2.2 系统设计

本文提出的太阳活动预报系统设计架构如图2所示。系统依次分为访问层、展示层、网关层、微服务层以及持久层。预报系统主体框架采用Java语言开发;预报模型的构建则使用python语言编写,通过前台界面显示;选择MySQL作为系统数据库,IDEA作为开发编辑器;选用Nacos作为系统的注册中心,Spring Cloud Gateway作为系统的网关服务。

图2 系统架构图

访问层代表系统所支持的访问设备,包括个人电脑、移动设备以及其他终端设备。展示层负责系统与用户之间的交互。本系统使用网页界面进行系统展示,使用Bootstrap框架对页面进行优化,利用Echarts开源库对系统中的图表进行前端渲染展现,展示层与后台交互使用JQuery和Ajax技术。网关层选用Spring Cloud Gateway框架,负责对系统的请求进行统一的权限校验。微服务层是系统的业务功能层,根据系统的业务功能将其拆分为不同的微服务,服务之间通过RESTful风格的请求来进行相互调用。使用Nacos注册中心对系统中所有的微服务进行统一配置,统一管理服务之间的相互访问请求。持久层代表对数据的持久化,具体包括使用MySQL数据库对系统用户的相关信息、太阳活动指数数据以及系统预报模型等进行存储。采用redis数据库作为系统的缓存数据库,提高系统的访问速度。同时,系统支持将太阳活动指数数据保存为csv格式,方便用户下载使用。

3 系统实现

3.1 系统环境

本系统的整体框架选用Spring Cloud微服务架构体系,其中,注册中心选用Nacos,网关选用Spring Cloud Gateway。预测模型使用python 3.0进行训练,前台显示界面选用Bootstrap框架优化,使用Echarts框架对数据进行可视化展示。数据库存储使用MySQL数据库,缓存使用redis数据库。系统整体软硬件如表1所示。

表1 系统环境清单

3.2 注册中心实现

选用Nacos注册中心作为预报系统的注册中心,将不同的预测服务注册到同一个服务中心。具体实现如图3所示。其中,forecast-history代表数据可视化服务,forecast-user代表用户管理服务,forecast-prediction代表太阳活动预报服务,forecsatpretreatment代表数据预处理服务,forecast-model代表预报模型管理服务。通过Nacos服务台中的实例数与健康实例数,可以实时监测服务是否健康。

图3 Nacos注册中心

3.3 网关实现

网关选用Spring Cloud Gateway框架实现。具体实现需要在服务项目的pom.xml文件中添加对Spring Cloud Gateway的依赖项,依赖代码如下所示:

将Spring Cloud Gateway依赖加入到项目中后,需要在项目的配置文件中对Gateway的网关路由规则进行配置。配置文件规范遵循yml语法规范,具体配置规则如图4所示。

图4 Gateway配置文件

3.4 界面展示

系统界面左侧为预报系统的菜单栏,右侧区域为系统页面区域。注册用户登录系统后,系统根据用户角色所拥有的权限来展示不同的菜单。历史数据可视化界面如图5所示,用户选择展示时间和太阳活动指数类型后,系统基于Echarts框架将数据库中的太阳活动指数以折线图的形式动态显示到页面中。图6为预报系统的模型管理界面,在这个界面可以增加和删除预测模型、选择启用的预测模型。图7为系统预报界面,用户需要首先选择查看的预报类型,选择完预报的太阳活动指数后,系统可以根据训练好的模型,对未来一段时间的太阳活动指数进行预报并显示在页面中,同时标记出预报的最大值和最小值。

图5 历史数据可视化界面

图6 模型管理界面

图7 系统预报界面

4 结 语

太阳活动的预测是一种复杂的业务功能。本文针对传统单体架构的太阳活动预报系统的不足,提出了一种基于微服务的太阳活动指数预报系统。利用微服务的思想,将系统的各个功能分成不同的服务。各服务之间耦合度低,从而降低了预报系统的复杂性,提高了系统的稳定性与灵活性,方便后续对系统功能进行扩展和升级改进。后续考虑支持对太阳活动图像的处理、预报以及使用爬虫技术来获取最新的太阳活动指数数据并加入到数据库中,提高系统的自动化程度。

猜你喜欢

太阳活动架构界面
基于FPGA的RNN硬件加速架构
第24太阳活动周中国地区电离层闪烁统计特性研究
第23和24太阳活动周高纬地磁感应电流分布特性
功能架构在电子电气架构开发中的应用和实践
国企党委前置研究的“四个界面”
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
WebGIS架构下的地理信息系统构建研究
人机交互界面发展趋势研究
手机界面中图形符号的发展趋向
一种基于FPGA+ARM架构的μPMU实现