基于微服务架构的城市土壤污染物联网监测及可视化系统研发

王汉雨 ,  周永章 ,  许娅婷 ,  王维曦 ,  曹伟 ,  刘永强 ,  贺炬翔 ,  陆可飞

地学前缘 ›› 2024, Vol. 31 ›› Issue (4) : 165 -182.

PDF (5690KB)
地学前缘 ›› 2024, Vol. 31 ›› Issue (4) : 165 -182. DOI: 10.13745/j.esf.sf.2024.5.12
物联网在线监测大数据

基于微服务架构的城市土壤污染物联网监测及可视化系统研发

作者信息 +

IoT monitoring and visualization of urban soil pollution based on microservice architecture

Author information +
文章历史 +
PDF (5825K)

摘要

土壤污染具有累积性、隐蔽性、潜在性和不可逆性,对城市土壤污染进行预防和科学系统的监测至关重要。传统监测方法存在时效性差、数据处理能力有限等问题,无法满足城市土壤污染预防和科学系统监测的需求。本研究旨在开发一套能够实时在线监测、处理和分析城市土壤污染数据的系统,以提高预测和预警的时效性。基于微服务框架Spring Cloud Alibaba,整合开发基于EMQX平台的订阅端,实现土壤数据的采集和入库。同时,开发与Geoserver服务器对接的WebGIS功能模块,利用OpenLayers渲染地图和土壤元素浓度图,实现对土壤状态的监控和可视化分析,进而实现对土壤污染的预测和预警。突破相关监测元素的传感器技术,可以实现城市土壤污染的物联网实时在线监测,处理和分析土壤污染数据,显著提高土壤污染预测和预警的时效性。

关键词

城市土壤污染 / 物联网监测 / 微服务架构 / Spring Cloud Alibaba / Docker / 可视化系统 / 大数据

Key words

urban soil pollution / Internet of Things / microservice architecture / Spring Cloud Alibaba / Docker / visualization system / big data

引用本文

引用格式 ▾
王汉雨,周永章,许娅婷,王维曦,曹伟,刘永强,贺炬翔,陆可飞. 基于微服务架构的城市土壤污染物联网监测及可视化系统研发[J]. 地学前缘, 2024, 31(4): 165-182 DOI:10.13745/j.esf.sf.2024.5.12

登录浏览全文

4963

注册一个新账户 忘记密码

0 引言

如何有效地管理土壤污染问题,提升管理水平,成为经济社会发展的重要需求。土壤污染具有累积性、隐蔽性、潜在性和不可逆性的特点[1],对它进行动态监测的必要性日益凸显。通过实时、连续的监测,能够及时捕捉土壤污染的变化动态,分析污染趋势,为科学决策和早期预警提供有力支持。

在大数据和物联网时代,依托新一代信息技术构建城市土壤污染物联网智能监测和管控平台,是土壤防治与管控发展的重要方向,但仍需更多、更深入的探索和实践[2-3]

本研究在广东省重点研发计划项目的支持下,开发城市土壤污染物联网监测及可视化系统,基于微服务框架,与Geoserver和WebGIS兼容,利用OpenLayers渲染技术,实现对土壤状态的监控和可视化分析。

1 城市土壤污染监测

土壤污染监测传统主要采用土壤成分分析方法,操作执行《土壤环境监测技术规范》(HJ/T 166—2004)[4-5]

地理信息系统广泛用于土壤污染监测。通过硬件设备和计算机软件对一定区域内的数据进行采集、管理和运算,以达到科学分析与动态监测的目的。地理信息系统可以与全球定位系统有效结合,得到更加准确的信息,对土壤污染进行全面监测[6]

对土壤相关信息的实时监测,需要将传感器埋在土壤中,对土壤的酸碱度、湿度和成分等进行实时测量,并即时将数据传输到终端,最终汇总到相关平台,对数据进行分析处理[7]。对大面积的土壤环境监测还需全面布设监测点,对各区域数据进行分析[8]

迅猛发展的新一代信息技术,逐步被引入到土壤环境监测研究中。其中,物联网监测平台技术[9-10]可以实时、远程收集土壤环境参数,然后借助无线通信传输技术,把土壤环境参数传到中控平台或云平台处理。土壤环境监测中采集到的数据通常是海量的,因此大数据分析和可视化变得十分必要。

2 基于EMQX架构的物联网平台

本研究选择EMQX来搭建物联网平台,主要是综合考虑其稳定性、可扩展性和集群能力。EMQX是一个受欢迎的百万级开源分布式MQTT消息服务器[11],兼容标准MQTT协议,可以轻松地与各种设备建立连接;支持广泛的设备类型,包括传感器、智能家居设备和工业设备等,从而实现设备端到服务器端的高效消息传输;同时,任何来自服务器端的控制消息也可以通过EMQX转发到相应的设备端[12-13]。EMQX的分布式架构使其能够处理海量的消息流量,并保持高可用性和数据一致性。其具有灵活的可扩展性,可以根据需求无缝地扩展服务器集群,以满足不断增长的物联网规模。

2.1 物联网通信协议MQTT

在物联网应用、机器对机器通信中,MQTT(Message Queuing Telemetry Transport)为可靠且有效的消息传输提供了解决方案[14]。MQTT是一种轻量级、开放、简单和易实现的客户端-服务器发布订阅消息传输协议,在各种情境中表现出色,特别适用于资源受限的环境[15]

MQTT采用发布-订阅消息模式,实现了一对多的消息分发和应用解耦[16]。操作过程如图1所示。

(1)连接建立:客户端连接到服务器。

(2)发布消息:客户端发布消息到特定主题。

(3)订阅主题:其他设备(手机、电脑等)订阅感兴趣的主题,以接收相关消息。

(4)消息质量:协议提供不同质量级别,满足不同场景需求,如“最多一次”“最少一次”“仅一次”。

(5)断开处理:在异常断开时,内置机制通知相关方,确保通信稳定性。

2.2 物联网平台

本研究基于EMQX架构构建物联网技术平台(图2)。监测点设备使用MQTT通信协议,通过有线或无线方式与MQTT消息服务器EMQX建立通信,配合Web应用程序,实现应用程序与设备之间的信息交换[11]

Web应用程序划分为3个主要组成部分:前端、后端和数据库。前端基于“Vue + Element UI + Echarts”框架构建,使用的计算机语言为JavaScript、CSS和HTML,主要职能是与后端进行信息交互,数据可视化。后端采用“SpringBoot + SpringMVC+ MyBatis-Plus”框架,使用Java编程语言,从EMQX消息服务器订阅接收数据,储存在数据库,并将数据库数据推送到前端进行可视化展示。

2.3 物联网平台安全设计

EMQX在保障设备数据的安全传输和访问方面提供了多种机制,主要包括以下两个方面[17]

(1)访问控制方面。EMQX支持多种认证方式,包括密码认证、JWT认证和MQTT 5.0增强认证。这些认证方式有效防止非法连接;EMQX的授权机制确保只有具备适当权限的客户端才能够执行发布和订阅操作,保证数据的安全性;用户可以通过EMQX的黑名单功能将特定客户端列入黑名单,从而阻止其访问。这提供了一种额外的保护层,增强了物联网应用的安全性和可控性。

(2)网络与TLS方面。EMQX采用SSL和TLS协议来保障网络通信的安全性。无论是MQTT客户端与EMQX的连接,还是连接到外部资源,以及集群内不同节点间的通信,都可以通过SSL/TLS建立安全连接;EMQX提供全面的SSL/TLS功能支持,包括身份验证和X.509证书验证等。网络与TLS方面确保了通信的机密性和完整性,并进一步加强了物联网中数据传输的安全保障。

通过这些综合措施,EMQX构建了一个完整的安全性体系,确保设备数据在传输和访问过程中的安全性和可靠性。

3 系统设计

3.1 微服务架构

城市土壤污染监测和可视化系统的任务包括采集城市土壤污染数据,以及后续数据处理、分析、预测和决策等许多功能和模块。系统采用微服务架构,确保每个微服务都是独立运行的,具有高度的自治性。它们之间通过清晰的接口进行通信,实现互相配合和协作。这种分散化和解耦的设计,可以使系统更具弹性和可扩展性,能够更快速地适应变化和扩展需求,同时也可以提高开发团队的效率和灵活性。

本研究选择微服务平台RuoYi-Cloud-Plus[18],参见图3。该平台集成了阿里巴巴公司的多个开源项目,如Nacos、Sentinel、Seata和Gateway等,提供了丰富的功能和组件,可帮助开发者快速构建和部署微服务架构的应用。

在储存方面选择开源的Redis(Remote Dictionary Server)和MinIO服务器。其中,Redis[19]是一款开源、基于内存的数据结构储存系统,主要用作键值存储、缓存和消息代理。Redis将数据存储在内存中,使得数据读取和写入速度非常快,查询效率高,亦可减轻系统用户数据库压力。例如在系统登录鉴权中,使用Redis存储和验证Token,可避免频繁访问用户数据库。MinIO是一个开源的轻量化分布式对象存储服务器[20],可以用来存储大规模的非结构化数据,比如用户的照片、视频、日志文件等,私有云和公有云都可部署。

性能测试使用开源软件JMeter[21],它可以模拟多种负载类型并测量目标服务器的性能,也可使用JMeter模拟多种协议,输出实时采集的数据等。本研究使用JMeter模拟MQTT协议的发布端,通过“topic”向EMQX服务器发布消息,订阅端接收消息并将其转换后写入数据库。

3.2 容器化技术

容器是一种独立、可控和可移植的操作环境,允许应用程序在不影响其他容器或主机资源的情况下稳定运行。微服务架构越来越多地采用容器化技术,通过编写构建镜像的文件,可以将微服务模块制作成私有镜像,然后在容器中启动,实现快速部署到本地或云服务器。

Docker是一个开源项目,提供了一种轻量级的虚拟化技术,可以将应用程序及其所需的环境、依赖项等打包在一起,以更快的速度自动部署Linux应用程序[22]。本研究采用Docker容器技术配合微服务架构,统一打包GIS和物联网相关的应用程序及其运行环境依赖项,然后在装有Docker的服务器上以容器方式运行这些应用程序。

采用Docker容器技术配合微服务架构可以提供更高的开发效率和灵活性,还可以充分利用云计算基础设施的资源,并实现快速部署和扩展。通过容器化和容器编排,可以更好地管理和维护微服务,并实现系统的可伸缩性和高可用性。

3.3 WebGIS可视化

本研究系统采用Geoserver服务器和WebGIS前端技术,以实现可视化。WebGIS是一种在Internet环境下的地理信息系统,具有存储、处理、分析和可视化地理信息等功能。它基于OGC国际标准和W3C协议,通过互联网进行地理信息的存储、发布、查询、分析和可视化操作[23]。WebGIS支持多种设备和操作系统,用户能够在不同的平台上访问地理信息数据。它通过实时数据接口获取实时地理信息数据,并能够进行实时分析和展示,使用户能够获取最新的地理信息。

3.3.1 WebGIS架构模式

WebGIS系统采用B/S(Browser/Server)模式开发[24]。如图4[25]所示,系统由客户端和服务端组成。客户端通过Web浏览器展示地理信息,实现用户与系统的交互。服务端作为站点,负责发布和管理地理信息数据[26]

采用B/S模式的WebGIS系统,通过利用互联网技术、跨平台访问和分布式部署,提供更广阔的应用空间和更便捷的用户体验[25]

3.3.2 WebGIS架构设计

WebGIS系统的架构设计分为客户端层、服务器层和数据库层[27](图5)。客户端层使用OpenLayers库来实现用户界面,包括地图展示和操作功能,并支持多种地图投影方式和数据获取方式。服务器层使用Geoserver来发布地图数据,提供地理信息数据服务,并支持与各种GIS客户端进行交互。数据库层使用PostgreSQL来存储和管理地理信息数据,包括空间数据和属性数据,并提供数据存储和备份功能。

3.3.3 Geoserver服务器

Geoserver是一款由Java语言编写的Web地图服务器。它遵循OGC的开放式标准规范,支持Web地图服务(WMS, Web Map Service)、Web要素服务(WFS, Web Feature Service)和Web栅格服务(WCS, Web Coverage Service)等标准,并支持用户对地图数据进行编辑等操作,适用于WebGIS系统的服务器端开发[28]。Geoserver还集成了OpenLayers作为地图浏览的默认客户端[29],用户可以通过调用API对Geoserver发布的数据进行操作,快速创建地图服务。通过Geoserver,用户可以方便地发布地图数据,并对地理空间数据进行增加、删除、修改和查询等操作[30],为地图创建和数据共享带来了极大的便利。

图6[31]展示了Geoserver的服务器结构。它的功能主要包括将GIS数据发布为Web服务,使用户能够通过网络访问地图和空间数据;动态地将地图数据渲染为图像在Web上显示;支持多种地理数据格式,可以将不同格式的数据转换成标准的GIS数据格式进行共享和使用。

3.3.4 WebGIS前端技术

本研究在WebGIS客户端的开发中,使用OpenLayers库来实现浏览器中地图的交互式操作。OpenLayers是一个免费开源的JavaScript库,它支持谷歌地图、雅虎地图和微软地图等资源,还可以通过WFS调用空间服务[32]。OpenLayers将地图作为核心概念,为渲染地理信息提供了视图,能够包含任意数量、任意数据格式、独立数据源的矢量图层和栅格图层,并提供了基础的地图控件,如鹰眼、比例平移、放缩和要素选择等控件[33-34]

为了设计搭建WebGIS客户端,本研究采用目前流行的前端框架Vue.js。Vue.js是一种JavaScript渐进式框架,它具有组件化、轻量级、简单易学、数据驱动、模块友好和灵活性强的特点。基于MVVM(Model-View-ViewModel)模式(图7[26]),Vue.js将应用程序的业务逻辑和表示逻辑与用户界面(UI)进行了独立封装。在MVVM模式中,View视图用于封装UI和UI逻辑,ViewModel视图模型用于封装表示逻辑和状态,而Model模型则用于封装应用的业务逻辑和数据[26]。采用Vue框架以组件化和模块化的思想进行独立开发,实现前后端分离的效果,具有高度可复用性,并且能够将系统设计解耦[35],可以更加灵活地开发和维护WebGIS客户端,同时使得系统具备高度可扩展性和可维护性。

3.4 系统架构

图8是本研究设计和研发的城市土壤污染物联网监测和可视化系统架构图。

该系统在Linux Cent0S7.9操作系统下运行,利用Docker容器化技术打包组件和开发的业务功能jar包,通过docker-compose进行组件和容器的编排管理。系统采用前后端分离的开发模式,使用Nginx作为反向代理来解决跨域问题。后端基于微服务框架Spring Cloud Alibaba开发基于EMQX平台的订阅端,实现土壤数据的采集和入库。

根据土壤数据的特点,设计了土壤数据的数据库模型,主要包括行政区表(administrative_area)、工区表(work_area)、设备表(device_info)和采样点表(sample_point_info),如图9所示。

工区和行政区通过“administrative_area_id”进行关联,工区和设备通过设备的“topic”和“work_area_id”关联,设备表和采样点表通过“device_code”关联。通过这些表中的关联字段可将采样点信息按树状图形式管理。

开发与Geoserver服务器对接的WebGIS功能模块,用于土壤数据的管理。前端基于Vue框架并嵌入了OpenLayers,实现了土壤数据的可视化功能。系统的Web页面提供了监测区域管理、数据预览和元素浓度的等值线图等功能。通过这套系统,用户可以方便地管理和监测城市土壤的污染情况。

4 系统展示

在系统管理中设置了用户、角色、菜单和部门等常见的权限管理功能,如图10所示。管理员通过用户角色、角色部门和角色菜单等关联关系来赋予角色不同的部门和菜单管理权限。通过为用户分配相应的角色,即可给角色授予相应的部门和菜单权限。

系统的主页面是基于WebGIS的可视化界面。系统可展示土壤中As、Cr、Cu、Ni、Pb和Zn等元素的含量和pH值。图11图12展示了中山市区内不同时刻土壤的pH监测值。通过插值渲染图,可直观展示监测区域的变化趋势。此外,通过对比背景值或者风险筛选值,可快速发现异常区域,及时预警。

5 结论

本研究设计和开发了一套基于微服务框架的城市土壤污染物联网监测和可视化系统。

(1)搭建微服务平台,采用前后端分离的方式开发相关功能,验证微服务架构在复杂系统开发中的有效性。

(2)完成了基于EMQX的物联网平台搭建,并使用JMeter模拟物联网设备的发布端。开发订阅端微服务模块,实现了模拟土壤数据的实时采集和入库。

(3)开发与Geoserver服务器对接的WebGIS功能模块,实现了对监测区域内土壤数据的管理及可视化等功能。

参考文献

[1]

张甘霖, 朱永官, 傅伯杰. 城市土壤质量演变及其生态环境效应[J]. 生态学报, 2003, 23(3): 539-546.

[2]

邓飞, 郁斯贻, 朱梦杰. 土壤污染现状与监测方法概述[J]. 绿色科技, 2019(16): 181-183.

[3]

嵇华. 土壤环境污染监测技术的应用发展现状[J]. 化工管理, 2021(15): 165-166.

[4]

方銮燕. 城市表层土壤重金属污染监测[J]. 环境与发展, 2018, 30(4): 152-153.

[5]

国家环境保护总局. 土壤环境监测技术规范: HJ/T 166—2004[S]. 北京: 中国环境出版社, 2004.

[6]

姜德民. 土壤环境污染监测技术及方法[J]. 黑龙江环境通报, 2022, 46(4): 79-81.

[7]

肖宇. 土壤环境污染监测及治理措施[J]. 资源节约与环保, 2023(1): 55-58.

[8]

林娟, 张乐, 胡海锋, 商洛市土壤污染防治现状及对策[J]. 现代农业科技, 2022(9): 147-149.

[9]

孙其博, 刘杰, 黎羴, 物联网: 概念、架构与关键技术研究综述[J]. 北京邮电大学学报, 2010, 33(3): 1-9.

[10]

AL-FUQAHA A, GUIZANI M, MOHAMMADI M, et al. Internet of Things: a survey on enabling technologies, protocols, and applications[J]. IEEE Communications Surveysand Tutorials, 2015, 17(4): 2347-2376.

[11]

GAO S Z, SHI Z S. Industrial Internet cloud platform system based on EMQX[M]// Lecture notes in electrical engineering. Singapore: Springer, 2021: 183-192.

[12]

LING F, QING J, TIAN L. Design of data acquisition and control system based on MQTT[J]. International Journal of Frontiers in Sociology, 2020, 2(6): 24-31.

[13]

HOSKE M T. MQTT eases software development for Industrial Internet of Things: serving as a universal message transport for Industrial Internet of things (IIoT) application development, MQTT can be used to decouple devices from applications, thereby freeing infrastructures from any single operating system, application, or hardware platform[J]. Control Engineering, 2016, 63(11): 22-23.

[14]

QUINCOZES S, EMILIO T, KAZIENKO J. MQTT protocol: fundamentals, tools and future directions[J]. IEEE Latin America Transactions, 2019, 17(9): 1439-1448.

[15]

SANJUAN E B, ABAD CARDIEL I, CERRADA J A, et al. Message queuing telemetry transport (MQTT) security: a cryptographic smart card approach[J]. IEEE Access, 2020, 8: 115051-115062.

[16]

PHAM L M, LE N T T, NGUYEN X T. Multi-level just-enough elasticity for MQTT brokers of Internet of Things applications[J]. Cluster Computing, 2022, 25(6): 3961-3976.

[17]

EMQX. EMQX文档: 安全指南[EB/OL].(2023-07-14)[2023-08-21]. https://www.emqx.io/docs/zh/v5.1/access-control/security-guide.html.

[18]

LI L. dromara/RuoYi-Cloud-Plus[EB/OL]. (2023-03-14)[2023-08-23]. https://gitee.com/dromara/RuoYi-Cloud-Plus.

[19]

CHOPADE R, PACHGHARE V. A data recovery technique for Redis using internal dictionary structure[J]. Forensic Science International: Digital Investigation, 2021, 38: 301218.

[20]

邱宇. 基于MinI0分布式存储的微服务模块开发应用[J]. 互联网周刊, 2023(22): 38-40.

[21]

鲍珊珊, 侯伟, 赵辉, 基于Web应用的全流程自动化性能测试方法分析[J]. 信息技术与标准化, 2023(10): 42-47.

[22]

BERNSTEIN D. Containers and cloud: from LXC to docker to Kubernetes[J]. IEEE Cloud Computing, 2014, 1(3): 81-84.

[23]

刘光, 曾敬文, 曾庆丰. Web GlS原理与应用开发[M]. 北京: 清华大学出版社, 2016.

[24]

YONG S. Abrowser/server product data management system[C]// 2010 Asia-Pacific Conference on Power Electronics and Design. Wuhan, China, IEEE, 2010: 43-46.

[25]

刘伯涛. 基于WebGIS的森林资源监管系统关键技术研究与实现[D]. 西安: 西安科技大学, 2021.

[26]

尤其浩. 基于WebGIS的土壤污染评价与三维可视化系统研究[D]. 杭州: 浙江大学, 2020.

[27]

蒋前凯, 李永树, 李何超, 基于Web GIS的城镇近郊区空心化村庄信息系统的开发与设计[J]. 测绘与空间地理信息, 2018, 41(2): 68-71.

[28]

高文逸, 龚晓峰, 雒瑞森. 基于数据分析技术的无线电监测与管理系统设计[J]. 现代电子技术, 2021, 44(20): 12-16.

[29]

张大鹏, 张锦, 郭敏泰, 开源WebGIS软件应用开发技术和方法研究[J]. 测绘科学, 2011, 36(5): 193-196.

[30]

郭鹏程, 李广宇. 基于GeoServer的地学数据共享系统设计与实现[J]. 工程建设与设计, 2017(15): 142-145.

[31]

张振伟. 基于Cesium的智慧场馆三维可视化系统设计实现与研究[D]. 西安: 长安大学, 2022.

[32]

胡观强, 向峰城, 欧阳绳武, 基于高德地图的城市POI数据系统[C]// 第七届中国(国际)商业航天高峰论坛论文集. 武汉: 中国航天科工集团有限公司, 2021: 185-197.

[33]

邹永勋, 吴绍华, 胡伟, 基于OpenLayers的贵州电网输电线路可视化系统研究[J]. 机电信息, 2020(33): 41-42.

[34]

戴瑶, 段增强, 艾东. 基于GeoServer的国土空间规划野外调查辅助平台搭建与应用[J]. 测绘通报, 2021(1): 121-123, 147.

[35]

朱二华. 基于Vue.js的Web前端应用研究[J]. 科技与创新, 2017(20): 119-121.

基金资助

广东省重点研发计划项目(2020B1111370001)

国家重点研发计划项目(2022YFF0801201)

国家自然科学基金联合基金项目(U1911202)

广东省科学技术厅科技特派员项目(GDKTP2020053500)

AI Summary AI Mindmap
PDF (5690KB)

256

访问

0

被引

详细

导航
相关文章

AI思维导图

/