彭浩宇 周军海 张峻宇 张舜宇 徐静茹
摘 要:针对现有水资源管理方式存在的数据孤岛、数据质量低、利用率不高等问题和互联网+的时代要求,基于大数据、云计算等技术,设计和实现了一个水资源管理系统。通过从异构的数据源采集各类水资源数据,在大数据中心进行数据的清洗、转换、整合、分析和统计,然后利用柱状图、折线图等多种图形从不同的维度对水资源数据进行可视化展示,并通过五大系统模块实现了对水资源的精细化管理,有助于构建资源节约型和环境友好型社会,具有良好的推广价值和意义。
关键词:大数据;云计算;水资源;可视化
中图分类号:TP311 文献标识码:A
Design and Research of Water Resources Management System based on Big Data
PENG Haoyu, ZHOU Junhai, ZHANG Junyu, ZHANG Shunyu, XU Jingru
(College of Computer Science and Electronic Engineering, Hunan University, Changsha 410082, China)
724944417@qq.com; 44741951@qq.com; 924227629@qq.com; 914152807@qq.com; 3302945724@qq.com
Abstract: In view of the problems of data isolation, low data quality and low utilization rate in existing water resource management methods, and the requirements of Internet+ era, this paper proposes to design and implement a water resources management system based on technologies of big data and cloud computing. Firstly, various water resources data are collected from heterogeneous data sources, and they are cleaned, conversed, integrated, analyzed and counted in the big data center. Then, histogram, line charts and other graphs are used to visualize water resources data from different dimensions.Delicacy management of water resources through five system modules are finally realized. The proposed system is helpful for building a resource-saving and environment-friendly society, and has good promotion value and significance.
Keywords: big data; cloud computing; water resources; visualization
1 引言(Introduction)
我国一直是水利工程建设大国,在近年的高速发展过程中我国的水资源用水量一直处于高位,截至2020 年,我国的总用水量总体维持在6,100亿立方米左右。随着时代的进步和技术的发展,传统的水资源管理模式已严重滞后,不利于我国水资源领域的可持续发展。当今社会互联网+、大数据技术正影响着各行各业的管理与建设[1-2],水资源领域急需使用大数据、云计算等新兴技术,提高我国水资源管理的能力,借助便利的互联网技术与云计算技术,提高水资源的利用率和各项管理业务操作的效率。
2 水资源管理中存在的问题(Problems in water resources management)
在水資源管理领域,水资源相关的数据非常繁杂,数据管理长时间滞后,往往不能及时、直观地反映当前水资源的实际情况[3],具体表现在:
(1)水资源数据地理位置的差异性。水资源监测站点往往设置在不同位置,取样位置的不同使得数据也会有较大差异性,用传统人工方式处理较为繁重,难以整合[4]。
(2)水资源数据的时效性。使用传统的人工方式一般需要若干个星期才能完成数据的统计分析,往往错过利用数据及时发现问题的最佳时间[5]。
(3)水资源数据烦琐且不直观。水资源数据量庞大且数据格式比较灵活多样[6],传统的数据表格统计方式难以直观地反映水资源的使用情况,不利于管理者在处理突发事件时的决策与判断。
3 水资源管理解决方案(Water resources management solutions)
基于以上问题,针对水资源数据烦琐且不直观的问题,本文使用水资源大数据可视化方案,将各个水资源监控设备的采样数据进行整合,即基于大数据分析,将诸如历史用水量、计划用水量、设备状态等各项信息加以整合,利用地图、饼状图、折线图等多种图表在应用层设计简洁的界面,实现了水资源数据的可视化展示,通过合理的精度显示以实现对水资源管理系统复杂数据的实时展示。该方法的优点具体表现在:
(1)直观展现水资源监测点的空间与时间分布。能够在地图中直观实时地展现对应监测点的具体位置,并且及时反映监测点当前的监控状态。
(2)展现变化趋势。利用折线图展现对应的数据变化,能够直观反映数据变化趋势,利于管理者对当前用水形势做出及时的判断。
(3)高效管理数据。利用大数据分析,将各个水资源监测设备收集的数据进行合理高效的增删改查,方便从业者管理存储的大量数据。
(4)界面简洁,用户使用体验良好。简洁的UI设计与便捷的操作能够大幅提升用户的使用体验感,提升操作对应功能的流畅性。
4 水资源管理系統架构设计与应用(Architecture design and application of water resource management system)
水资源管理系统架构设计分为四个方面:用于存放和管理数据的数据层、进行数据收发的后端架构、用户进行操作的前端架构、进行数据库管理的管理软件。其中,前端架构是用户操作与显示的核心,后端架构是数据处理与大数据管理的关键。为便于模块化开发,系统使用Spring Boot+Vue的前后端分离开发模式。
4.1 数据层
水资源系统的数据源具有异构多样性,系统能够利用互联网技术远程获取水资源监测设备收集到的信息,也可以采用手工导入方式,如手动输入相应水资源信息,利用Excel表格导入表格信息等,还能够利用其他设备诸如手机APP、小程序等提供信息,通过温度检测、水平面变化检测等方式,收集对应地区的用水量、用水设备的温度、该区域的水平面、设备运行状态等各项数据。
获取的大量数据经过后端的清洗、整理、计算、分析归纳,利用开源的Mybatis plus,通过数据持久层的操作,根据数据之间的关系将所需数据整理保存到传统的关系型数据库(如MySQL、Windows Server等)中。若要处理的数据量大于单个系统的处理极限时,可通过开源工具Sqoop,将传统关系型数据库中的内容提取、转换、加载,并将数据进行相应格式的封装,转储至MongoDB等对应的NoSQL数据库中,并且根据系统实际使用的需要进行分布式系统的开发,以减轻主服务器的负担[7]。数据层与后端架构的关系如图1所示。
由于水资源系统用户多种多样,需有效快捷地利用用户登录状态获取符合其角色的数据,因此需要运用比传统关系型数据库查询速度更快地获取用户登录钥匙token的工具。利用NoSQL数据库Redis对用户登录token进行key与value的键值比对查询可实现高效的跨域校验,利用基于Redis的矢量时空查询算法,相比传统的Oracle,查询效率提高近4.5 倍,使用户在获取数据时获得良好的交互体验[8]。
4.2 后端架构
后端架构基于Spring框架,如图2所示,根据功能设计分为实体层、服务层、映射层、控制层、拦截层与针对前端的HTTP接口。
各层的作用与关系如下:
(1)实体层通过创建对应的水资源设备主体,如机井、计量设备、统计数据设备等模块,将其作为容器用于保存对应实体的相关信息,并在实体层保留访问接口,用于访问实体内部对应的内容。具体实现可以借助Spring框架与Mybatis plus,在Spring中定义相对应的水资源设备实体,然后利用Mybatis plus对数据库进行访问存储至数据持久层中,再通过定义好的主体进行Bean注入,即可完成实体的构建。当需要获取对应数据时,调用实体层对应接口即可。通过实体层既能够保证数据的安全性,又能够在后续的开发中保证容器之间的独立性,互不干扰。
(2)服务层利用实体层已有的实体信息,调用实体层已有的接口,对实体进行操作后将修改反映到数据库当中,以实现对应的功能服务。具体实现为利用Mybatis plus将需要对数据库进行修改的对应SQL语句封装在Mapper对象中,以执行对象中SQL语句的方式完成对数据库的CRUD和事务提交,进而实现数据不外泄和安全保障。
(3)映射层将对应实体的业务操作进行一一映射。根据业务需要调用服务层接口提供的相应功能服务,实现对应的业务操作,保证业务的直接关联性。
(4)控制层将每个功能模块所需的业务操作集成到一起,根据需要调用对应业务操作,并作为定时任务关联相应模块,在设定的时刻调用水资源业务需要的功能。
(5)水资源数据十分重要且需要保证其访问安全,因访问用户众多也需满足用户查询时的便利性,因此拦截层需要实现跨域校检、登录态校检与权限校检三大模块。用户在登录后要获取数据,需服务端分配登录态凭证返回给客户端。本文的实现方式为生成token返回给客户端,并将生成的token存储至内存中的Redis数据库中。用户后续需要访问服务端时,仅仅需要将每次请求头中附带上此token,即可通过登录态校检。权限校检模块根据用户名与密码获取对应用户的访问权限,并且将其能够访问的菜单页面路由返回给客户端,按照用户的权限显示对应的功能模块。
(6)与前端交互前必须设置针对前端的HTTP接口,保留开发接口接收前端页面的请求,完成请求的功能业务。可使用Spring框架中的控制层进行接口实现,将后端运行环境构建成统一的自动化协调的运行环境,以服务的形式提供给用户,简化应用的部署和运行等。
4.3 前端架构
前端架构使用项目化开发,可以使用面向数据的前端开发框架。本文采用Vue 3.0作为前端框架进行开发,利用Vuex进行全局状态管理,采用Vue-Router进行路由管理,进而构建整体的框架设计,具体如图3所示。系统利用Vite的冷启动进行快速的状态开发,并将其打包成项目部署文件部署到前端项目服务器中。
水资源管理系统由用于管理水资源设备和水资源使用等的下层业务和管理用户、地址、使用权限等的上层业务构成,结合利用大数据与云计算提高管理效率这一目标,开发了五大模块。
(1)全局模块。全局模块包括用户信息、控制信息、清洗控件等功能。由于系统用户登录人数众多,用户类别各不相同,系统需记录当前用户的登录状态与用户权限,因此需要开发对应的用户模块,将用户登录获得的登录状态信息存放在全局模块中,并且将其放入以后的请求头中以获取服务端的信息,并根据获取的权限来展示用户可操作的模块。具体实现为利用Vuex的全局状态管理,将用户登录获得的token存入当前用户module的state中,并将其放入请求文件的header中用于获取后端数据,然后将获取的用户权限与Vue-Router中的路由文件相匹配,若存在对应模块则显示。
(2)上层业务模块。上层业务模块包括用戶管理、权限管理、菜单管理、地址管理、接口管理、数据清洗等功能。将登录系统的用户信息、权限管理、系统显示的菜单、水资源检测设备的地址、与服务端对接的接口等会影响到下层用户使用的功能整合为上层业务模块,一般由管理员或开发人员管理该模块。地址模块用于定义全局的一级、二级和三级地址,用于下层业务模块的地址选择;接口模块用于开发人员了解新增接口的样式、相关细节,便于后续开发人员进行系统的维护工作;用户模块用于管理对应用户的账号权限,并能根据客户需求改变菜单显示优先级,以保证最佳的用户体验。
(3)下层业务模块。下层业务模块包括水资源监测设备的基本信息与详细内容、用户用水配额的设置、用户用水统计、所有业务的统计报表和水资源监测设备的报警情况等功能,用于实现用户对水资源监测设备的直接管理,并且根据用户的用水情况分配用水配额,将所有业务的统计报表进行总结显示,方便使用者有效快速地管理业务。其中水资源报警能够通过深度学习,通过水资源监测设备的相关数值自动判断该设备是否处于报警状态,并将报警情况反映到可视化模块中。
(4)可视化模块。可视化模块通过柱状图、折线图等对数据进行可视化,直观显示数据的真实变化情况。系统获得服务端的数据,调用图像接口,显示水资源的用水量和水资源设备的情况等数据,直观反映数据变化。可利用Vue与element-plus相结合,将获得的数据导入element接口中,定义显示DOM的weight与height,采用Echarts将数据以柱状图和折线图等形式显示到对应业务模块,可从区县、乡镇、路段和年、月、星期、日及单位实体等多种不同维度对水资源数据进行可视化展示。用户用水情况的部分图例如图4所示。
(5)页面模块。系统需要有显示全局功能和系统图标等的顶栏模块,显示用户能够操作模块功能的菜单模块,还需要有显示功能页面的内容模块。顶栏模块借助全局模块提供的功能,能够选择登入、登出和用户信息修改等全局变量改变的功能;菜单模块根据用户具有的权限,显示对应的上层业务模块(若为管理员)与下层业务模块;内容模块则调用选择的业务模块页面,将其按照给定的页面比例进行显示。
水资源数据经过大数据后端处理后,针对水资源管理系统五个模块进行水资源大数据分析、数据挖掘,完成大数据的可视化。由于所开发的水资源系统部署在云端,所有用户都能基于互联网在任何时间、任何地点方便快捷地使用此系统,大幅提高了管理效率。
5 系统实现(System implementation)
系统前端部分采用Vite构建工具搭建,配合Yarn对使用的软件包进行管理。后端部分采用Maven管理工具包,采用MVC结构。其中,后端系统在每天晚上对各类水资源数据进行自动统计,存入每日数据表;在每个月底再自动更新一次月度用水统计情况,其自动执行部分代码如下:
private TsWellInfoMapperwellInfoMapper;
/每天23点55分执行一次
@Async("taskScheduler")
@Scheduled(cron ="0 55 23** ?")
public void dayTask({...}
//每个月最后一天23点59分执行一次
@Async("taskScheduLer")
@ScheduLed(cron="0 0 1 1* ?")
public void mouth(){...}
6 结论(Conclusion)
利用信息化、大数据的手段,对水资源进行精细化管理是促进我国水利事业发展的重要手段。本文针对当前水资源管理中存在的问题,基于大数据、云计算等技术,充分整合各类信息资源,初步搭建了自动、智能、综合、高效的水资源大数据监管平台。系统以国家水资源智慧监控的需求为牵引,开发了基于水资源大数据的典型应用,能够有效节约水资源,助力构建资源节约型和环境友好型社会,具有较好的推广价值和意义。
参考文献(References)
[1] 杜小勇,卢卫,张峰.大数据管理系统的历史、现状与未来[J].软件学报.2019,30(1):127-141.
[2] 袁喆,文继荣,魏哲巍,等.大数据实时交互式分析[J].软件学报,2020,31(1):162-192.
[3] ERFANI T, HAROU J J. Adaptive water resource planning using decision-rules[J]. Advances in Water Resources, 2021, 154(103961):1-6.
[4] GOLMOHAMMADI M H, SAFAVIH R, SANDOVALSOLIS S, et al. Improving performance criteria in the water resource systems based on fuzzy approach[J]. Water Resources Management, 2021, 35(4):593-611.
[5] OLMSTEAD S M. Climate change adaptation and water resource management: A review of the literature[J]. Energy Economics, 2014, 46(11):500-509.
[6] ARAUJO R S, ALVES M, MELO M, et al. Water resource management: A comparative evaluation of Brazil, Rio de Janeiro, the European Union, and Portugal[J]. Science of the Total Environment, 2015, 511(4):815-828.
[7] 李强,赵晨杰,罗先录.基于大数据应用技术的学情分析系统架构分析与设计[J].软件工程,2018,21(5):34-37.
[8] 候海耀,钱育蓉,杜娇.基于Redis的矢量时空查询算法[J].计算机工程与设计,2018,39(9):2770-2775.
作者简介:
彭浩宇(1999-),男,本科生.研究领域:软件工程.
周军海(1974-),男,博士,助理教授.研究领域:传感器网络,大数据.本文通讯作者.
张峻宇(2000-),男,本科生.研究领域:软件工程.
张舜宇(1998-),男,本科生.研究领域:软件工程.
徐静茹(2001-),女,本科生.研究领域:软件工程.