基于云计算微服务架构和DevOps理念的水利水电工程安全监测云平台应用研究

2020-06-04 12:55陈亚军李黎徐晓坤张鹏
数字技术与应用 2020年3期
关键词:微服务水利水电工程云计算

陈亚军 李黎 徐晓坤 张鹏

摘要:本文在阐述云计算微服务架构和DevOps理念的基础上,开发了一套水利水电工程安全监测云平台,实践表明:(1)基于云计算微服务框架研发的水利水电工程安全监测云平台功能丰富,满足了监测业务一线的功能需求,且该架构具有扩展性好、兼容性强、部署灵活的特点,具有较强的应用推广价值。(2)基于DevOps理念降低了团队开发、测试、运维的沟通成本以及运维成本,提高了部署效率,同时降低了因运行环境不同而带来各种问题的概率,这一理念在系统开发中展现出极大的优势,值得推广。

关键词:云计算;微服务;DevOps;水利水电工程;安全监测云平台

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2020)03-0160-05

0 引言

自建国以后,国内水利水电工程经历了跨越式发展,国内现有大中小水库8万多座,其中绝大多数为小型水库且修建于上世纪70年代左右,由于当时筑坝技术限制加之年代久远,较多水利水电工程都出现或多或少的问题。加之水利水电工程规模大、事关人民生命安全,失事后果严重。安全监测作为保障水利水电工程安全平稳运行的最直接手段,重要性日益凸显。同时,为了响应国家“互联网+水利”、“水利补短板、强监管”的号召,有必要运用云计算、微服务等技术更新行业信息化应用,提升行业信息化水平。本文将基于现在流行的云计算微服务架构和DevOps理念研发水利水电工程安全监测云平台。

1 云计算微服务架构及DevOps简介

1.1 云计算

云计算(Cloud Computing)是2006年由谷歌首次提出,随后这一技术越发火热,近年已慢慢深入人心,对传统的商业模式和互联网行业发展产生深远影响。依据IBM技术白皮书“Cloud Computing”的定义:“云计算是一种基于虚拟化技术构建的一个系统平台或者一种类型的应用程序。一个云计算的平台按需进行动态地部署(provision)、配置(configuration)、重新配置(reconfigure)以及取消服务(deprovision)等。云计算系统具有以下四个特征:(1)虚拟化;(2)提供服务质量保证(QoS);(3)高可靠性、可用性和高性能;(4)自治性[1]。一般来讲,云计算技术架构通过对基础资源虚拟化行程的资源池进行统一调度和管理,从下到上为用户提供三个层次的服务:基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)。

1.2 微服务架构

微服务是近年较为热门的软件架构[2-3],但目前缺乏统一的定义。根据Martin Fowler的描述:微服务架构(micro service architecture)是一种架构模式,它采用一组服务的方式构建一个应用,服务独立部署在不同进程、不同主机或不同容器中,服务间通过RPC、HTTP、消息、事件等方式通信,服务可以独立部署、弹性伸缩,每个服务定义了明确的边界,完成不同的功能。

对于传统的单体应用(monolith application)来说,整个系统具有多个功能模块,整个系统可分为界面层、业务逻辑层和数据访问层,所有的功能最终由一个独立的系统提供。而对于微服务架构则不同,整个系统按不同的功能和业务域划分为不同的微服务(microservice),各个微服务实现各自的功能,彼此间通过HTTP、消息或RPC等进行数据通信,整个系统内部还存在注册中心、监控中心、配置中心以及网关等微服务,众多的微服务彼此相对独立又彼此联系形成一个整体。

目前业内采用的微服务框架有Spring Cloud、Dubbo、Drop-wizard、Service Fabric等。作为新一代云计算框架,Spring Cloud为开发者提供了分布式系统开发所需的一整套组件,包括服务注册发现Eureka、配置管理Config、服务熔断Hystrix、网关路由管理Zuul、分布式session、JWT令牌、全局锁、分布式事务的组建[4]。

1.3 DevOps理念

DevOps(Development和Operations)是一個关于组织文化、自动化、持续监控与共享等各元素的集合,是开发部门(Devlopment)、平台运维部门(Operations)和质量管控部门(Quality Control)之间进行沟通、协作的流程、方法和体系[5-6]。由于产品迭代越来愈快,对开发、测试和运维之间配合和响应要求越来越高,传统软件开发模式如瀑布模型、敏捷开发或精益开发等难以满足快速的产品迭代。

专家曾用一个能力环来解释DevOps的概念,如图1所示。从能力环可看出,软件的生命周期里的开发、测试、部署运维等没有明显分界,可以做到无缝连接。通过Maven、Gitblit、JUnit、SonarQube、Docker容器、Kubernetes、Jenkins等各类工具,协同完成开发人员的代码从提交,到代码质量的自动检测,到自动发布自动部署,再到代码运行监控,实现从开发、测试、运维的闭环,填补了团队内部的信息鸿沟,实现了开发运维一体化,改善了团队之间的协作关系。

1.4 DevOps的组成

DevOps的开发由以下几个部分组成:需求及工作计划、编码、自动化构建、自动化测试、自动化发布、自动化部署、自动化运维。

(1)需求及工作计划:根据业务需求讨论产品功能定位、产品功能模块,完成产品原型设计,确定产品开发计划,并对开发计划进行WBS分解,确定项目进度计划。(2)编码:开发人员根据需求分析说明书、产品原型设计稿等产品需求文档PRD以及工作计划和任务安排完成相应工作。(3)自动化构建:利用项目构建工具maven、jenkins等完成项目代码的编码、依赖管理、打包、构建镜像等工作。(4)自动化测试:进行代码的所有测试工程并形成测试报告,包括单元测试、集成测试、接口测试、性能测试、UI测试、压力测试以及安全测试等。(5)自动化发布:将测试通过的软件上传至Docker镜像仓库,供其他人拉取使用。(6)自动化部署:Docker镜像先部署到测试环境,在部署到准生产环境进行用户接受度测试,最后在部署到生产环境。(7)自动化运维:通过自动化监控工具、日志分析工具等对生产环境的Docker进行监控,对软件的潜在BUG、性能瓶颈等进行记录,同时收集用户新增、变更的需求,运维人员将这些问题统一反馈至开发团队,进行下一循环的需求分析、计划等节点,重新迭代本产品。

常用的DevOps工具链体包括以下各类:

(1)计划和项目管理工具:禅道、TeamLab、XPlanner+、Jira、Gantt Project、GitBlit、GitLab等;(2)编码工具:IDEA、MyEclipse、HBuilder、Visual Studio Code等;(3)自动化构建工具:Jenkins、Maven、Gradle、Ant等;(4)自动化测试工具:JUnit、SonarQube、TestNg、Selenium等;(5)自动化发布工具:Docker、DockerHub、Harbor等;(6)自动化部署工具:Kubernetes、Swarm、Fabric8等;(7)自动化运维工具:ELK(Elastic Search+LogStash+Kibana)、CollectD、Nagios。

2 水利水电工程安全监测云平台设计

2.1 系统总体架构

水利水电工程安全监测云平台是利用物联网、云计算、微服务架构等现代信息技术,通过集成大坝安全监测的变形、渗流、温度和应力应变等各类物联传感器,基于工程安全监测日常业务需求,建立的面向多用户多机构的水利水电工程安全监测云平台,实现水利水电工程安全监测感知实时化、业务集成化和预警智能化。

系统总体架构如图2所示。

本系统整体框架包括采集感知层、网络通信层、数据资源层、应用服务层和界面层。

采集感知层是指监控大坝安全状态的各类物联网设备,依监测类型可包括变形、渗流、温度和应力应变等,如应力计、应变计、钢筋计、GNSS等大坝安全监测仪器。

网络通信层是指物联网设备数据传输使用的各类基础通信设施。

数据资源层主要用来存储系统所有数据资源的核心部分,包括基础数据、大坝安全监测数据、巡检数据、预警信息、知识库等。

应用服务层是指实现系统业务功能的,具体包括基础信息管理、数据管理、成果展示等应用服务。

界面层是指本系统的展示层面,包括浏览器web端、移动端及大屏等。

基于云计算的微服务架构,本系统的软件开发架构如图3所示。

平台的后端各业务功能模块自成一个微服务,相对独立,包括基础信息微服务、安全监测微服务、巡视检查微服务、预警管理微服务等。各微服务后端采用Spring Boot框架开发,前端统一由Vue.js集成。

2.2 系统功能设计

该平台的功能模块包括基础信息管理、数据管理、成果展示、报表整编、计算分析、综合评判、预警管理、巡视检查管理、运维管理、知识库管理。本系统的功能结构图如图4所示。

(1)基础信息管理。本模块主要实现本系统涉及的工程相关基础信息、大坝安全监测基础信息的维护管理,具体包括水利水电工程的工程特性表,大坝安全监测的测点信息、测点考证信息以及其他基础信息等。(2)数据管理。本模块实现安全监测数据的维护,包括数据远程采集管理、数据录入、数据批量导入、数据自定义查询导出、数据粗差分析等。数据采集利用自研的数据采集软件,对接数据采集协议或数据采集http接口实现数据的远程加密观测和采集参数配置。数据录入针对少量数据提供录入界面。批量数据导入实现数据的批量导入,包括文件模板管理、数据导入等。(3)成果展示。本模块实现监测分析成果的可视化展示,如图形曲线、模拟动画以及三维可视化云图等。(4)报表整编。本模块实现对大坝安全监测统计分析报表的模版编制、生成打印及导出分享等功能。(5)计算分析。本模块实现大坝安全监测涉及的专业计算,如统计回归模型、相关性分析等工作。(6)综合评判。本模块基于大坝安全监测的实测数据、检查资料以及人工经验等,運用层次分析法、大坝安全评估模型等实现对大坝安全的实时综合评估。(7)预警管理。本模块基于综合评判模块产生的安全结论实时产生预警消息,并通过web端、App、短信等方式告知相关业务人员。具体包括预警模型配置、消息推送管理及预警日志管理。(8)巡视检查管理。本模块基于水工移动巡检app实现大坝例行巡检的电子化巡查,依据配置好的巡查路线和任务,手持移动端app将巡检中发现的渗水、裂缝、建筑物缺陷等问题拍照并做好记录。(9)运维管理。水工建筑物的日常维护包括裂缝和渗水的修补、坝面混凝土修补、消力塘修补等工作。本模块对这些专项维护涉及的缺陷情况、维护时间、维护措施、实施单位等信息进行管理。(10)知识库管理。本模块将水利水电安全监测日常涉及的法律法规、国家技术规范、标准、案例和经验等进行电子化管理,实现企业内部的知识和经验的沉淀。

3 水利水电工程安全监测云平台应用实践

以下通过水利水电工程安全监测云平台具体实践DevOps理念。

该平台采用前后端分离的B/S架构,后端采用Spring Cloud微服务框架,前端采用Vue.js框架和IView组件,前后端通信基于JSON数据,编码风格采用Restful API。

平台始终贯彻DevOps理念,在开发、测试、运维过程中集成了各类自动化工具,且尽量采用开源工具构建整个DevOps的工具链,不同阶段包含以下工具,详细工具链图如图5所示。

(1)开发阶段:

项目管理工具:禅道PMS;

代码管理工具:Git和GitLab;

项目构建工具:Maven及私有仓库Nexus;

持续集成工具:Jenkins;

(2)测试阶段:

单元测试工具:JUnit;

代码质量检测工具:SonarQube;

容器镜像工具:Docker;

镜像仓库工具:Harbor;

软件性能测试工具:JMeter;

Web功能测试工具:Selenium;

猜你喜欢
微服务水利水电工程云计算
微信公众平台在医院图书馆的应用现状调查
浅谈水利水电工程施工管理
论述基坑排水技术在水利水电工程中的应用
从单一模式系统架构往微服务架构迁移转化技术研究
关于水利水电工程中土石坝施工技术的探讨
实验云:理论教学与实验教学深度融合的助推器