基于微服务的地质保障系统架构与应用

2022-02-22 10:05程建远
煤田地质与勘探 2022年1期
关键词:架构监测服务

李 鹏 ,程建远

(1.西安科技大学 地质与环境学院,陕西 西安 710054;2.中煤科工集团西安研究院有限公司,陕西 西安 710077)

煤炭地质工作横跨煤田勘探、设计、开拓、生产、关闭等不同阶段,贯穿于煤炭工业的全生命周期,是实现煤炭资源安全高效绿色智能开采的基础和前提,面向煤炭地质工作的地质保障系统对煤矿的安全生产至关重要[1-4]。

国家能源局印发的《煤矿智能化建设指南(2021 版)》提出了建设智能地质保障系统的要求和建议,要求基于“数字采矿”“数据驱动”的理念,将地质数据与采掘数据进行深度融合,采用地质预测、多源异构数据融合等方法,建立基于地质数据与采掘工程数据可动态更新的模型,实现矿井地质信息的透明化。由于不同煤矿有不同的地质工作需求,根据自身的地质情况会配置相关的地质勘探、监测系统,使得集成各地质子系统的地质保障系统虽然主要功能类似,但是需要定制开发,同一软件的不同配置及二次开发使得地质保障系统的开发与维护变得复杂和充满不确定性。

系统架构设计从宏观上解释软件系统的组成和特点,架构的好坏决定着系统的可开发性、鲁棒性、扩展性、可维护性等重要问题。MVC 架构是一种比较常用的传统分层架构,是由Trygve Reenskaug 在1979 年提出的面向对象和设计模式的一种软件架构[5]。架构将软件设计划分为“模型(Model)-视图(View)-控制器(Controller)”,简称MVC 架构。3 层结构,每一层都有明确的功能划分,降低了层与层之间的耦合度,但是这种架构的分层只是对系统进行了逻辑划分,最终系统运行在同一进程中,MVC 架构又可以称为单体架构(图1)。随着系统业务的不断发展,功能的持续增加,单体架构逐渐难以满足业务快速变化的要求,单体架构系统维护部署困难、扩展能力差、技术选型受限的缺点逐渐暴露。

卢新明等[6]等提出了实现地质保障系统的服务架构;马丽等[7]等提出了基于精细勘查的煤矿地质保障信息系统,采用了传统的分层结构;董宪海[8]总结了地质保障系统的关键技术,提出了矿井多元地质信息集成系统。针对煤矿地质保障系统开发面临的数据来源多样、集成地质监测系统开发语言不统一,软件的定制化开发导致的地质保障平台在不同煤矿适应性差的问题,本文提出了微服务的地质保障系统开发3 层架构,将通用的技术业务固化在开发架构,将需要集成的地质类子系统等专业属性强的业务通过微服务方式进行开发和部署运行。本架构集成当前成熟、流行的开发语言,采用前后端分离的开发模式,使用微服务的地质保障系统架构进行软件开发,可降低集成其他地质子系统的技术复杂度,借助架构的跨平台特性提高系统的多平台移植性。

1 系统架构技术

系统架构设计是根据一定原则,从业务、技术、数据等角度对系统各部分进行规划和匹配,形成系统的多重结构,包括各组件的划分、组件间关系、开发技术、实现目的等内容。

1.1 微服务架构技术

1)微服务架构

微服务[9]架构的概念于2012 年开始出现,2014 年开始受到广泛的关注和使用。微服务架构是一种分布式系统架构,采用微服务架构的应用系统按照业务功能、技术实现等拆分成最小组件,组件间彼此独立,通过组件间的合作共同完成一个任务,其中每一个组件或者流程都是一个微服务。这种架构设计方法强调业务的细粒度、通信的轻量化、服务的高内聚、服务间的低耦合,每一个服务单独部署。在业务需要的时候,同一个服务可以在多个业务流程中重用,也可以在不同的业务渠道中使用。这些服务通常拥有自己的技术栈,包括数据库、业务逻辑;服务之间通过消息代理、事件流和REST API[10]的组合相互通信;服务组合通过业务体系驱动。微服务架构相比传统单体架构的优点主要有以下方面:由于微服务之间可使用不同的技术栈、单独部署,因此系统代码的更新和修改更加简便,可以在不涉及整个应用程序的情况下添加新的功能;开发团队可以采用不同的技术栈,例如不同的编程语言开发自己的微服务作为系统的一部分;组成系统的每个功能组件可以独立伸缩,减少了由于单个功能面临太多负载而不得不扩展整个应用程序过程中的成本浪费。在面对业务多、系统庞大时,微服务架构的适应性就越好(图2)。

图2 微服务架构Fig.2 Schematic diagram of microservice architecture

2)地质保障系统微服务技术选型

主流的微服务开发工具集有Spring Cloud[11-12]、Dubbo、Motan、gRPC 和Thrift 等,其中,Spring Cloud具有完整的微服务框架,Dubbo 专注于RPC 和服务治理,Motan RPC 框架整合了ZK 或Consul,gRPC 和Thrift均为RPC 框架。其主要参数或性能对比见表1。

由表1 可知,Spring Cloud 比其他框架模块较多,是构建微服务架构的更全面工具集,包含了微服务架构的所有核心工具,优于其他框架;Spring Cloud 具有服务注册发现、服务监控、多语言支持等功能,支持以用户为核心、逐步迭代、循序渐进的方法开发、升级新服务,相比其他架构更适合敏捷开发;该框架采用Eureka 维护各微服务的运行,且实现了服务的熔断和服务降级机制,保障服务之间、网关与服务之间调用,保障微服务的高可用和高并发。Dubbo 等其他架构主要包含了微服务架构的网关、链路追踪等服务治理、服务调用工具,缺少很多功能模块。由于地质保障系统整合多种业务,需要支持多语言,所以选择Spring Cloud 作为地质保障系统架构设计主要使用的工具集。

表1 微服务选型对比Table 1 Comparison of the microservice selections

1.2 Docker 技术

为了解决微服务架构下大量应用部署的问题,引入容器[13-14]。容器是将程序运行所需要的依赖环境打包的一个标准化软件单元,可以使应用程序快速、可靠地从一个计算机环境迁移到另一个计算机环境。使用容器技术,用户可以将微服务及其所需的所有配置、依赖关系和环境变量打包成容器镜像,轻松移植到全新的服务器节点上,无需重新配置环境,使得容器成为部署单个微服务最理想的工具。

Docker 是一个开源的容器引擎,可以将程序和操作系统等基础设施进行隔离,Docker 可运行于Windows 和Linux 操作系统。地质保障系统需要集成水文监测、微震监测、视电阻率监测、随采随掘监测等多种地质系统,各子系统的分析方法、模型等采用了不同的开发语言和运行环境,采用微服务架构进行开发可以将各子系统解耦为微服务,打破多开发语言集成的壁垒。使用Docker 打包各子系统微服务和运行依赖环境之后,可快速进行部署,便于程序测试和运行维护。结合使用K8S 容器管理工具,实现微服务的自动部署、弹性伸缩,将微服务按照业务关系组建成大型的地质保障应用程序。

2 微服务地质保障系统架构设计

随着我国煤炭开采技术的发展,煤炭地质保障系统的内涵与外延也不断丰富和完善,其发展可以概括为煤炭资源勘探地质保障、高产高效矿井地质保障、安全高效生产地质保障和智能化开采地质保障4 个阶段[15]。现阶段的地质保障系统是根据“安全、高效、绿色、智能”发展理念的需要,以地质量化预测为先导,以物探、钻探、化探、井巷测量等综合技术为手段,并依托先进的计算机技术、物联网技术、人工智能技术,实现煤矿地质透明化和煤炭开采智能化及隐蔽致灾因素预警[6,16-17]。

2.1 地质保障系统构建及功能

2.1.1 地质透明化

1)地质数据库构建

收集地质调查、钻探、三维地震、物探、化探、抽水试验、采样测试、测量变形、位移、地表沉陷和岩移观测等数据,按数据规范要求对各阶段勘探成果数据统一入库管理,建立地质勘查、观测资料数据库;重新数字化各种与地质、测量、水文、储量有关的柱状图、平面图、剖面图、素描图、物探成果解析图等并配置属性,通过分析、对比、校验、补探、补测等进行入库,得到完善的、准确的、可再利用的包括煤岩层、地质构造、灾害防治、井巷工程、采空区、帷幕等矿井地测历史资料和图库关联的数字化空间信息库系统。

2)地层及构造地质模型

综合利用钻探、物探、井巷揭露、采掘揭露等数据,采用数据分级、空间配准、交叉验证等手段实现多源异构数据融合,构建高精度的三维地质几何模型,实现地层、构造的三维可视化,地质模型任意剖切及剖面图件输出。

3)水文地质模型

利用地质、水文地质及水文探测数据,建立水文地质模型,实现各含/隔水层、富水区的空间关系、产状、赋存状态(潜水、承压)、水位水压的可视化,实现充水水源、导水通道的动态可视化和预警[18]。对地面定向分支孔、井下定向分支孔轨迹建模,实现水害超前区域治理数字化工程评价、出水点信息、注浆量统计信息的三维展示,注浆工程的管理、水文监测系统的实时数据更新和动态成图显示。

4)瓦斯地质模型

利用瓦斯放散初速度、释放量、吸附性实验数据,结合煤层瓦斯赋存状态(连续分布型、构造依附型等),预测煤层中瓦斯压力和瓦斯含量分布,在地质模型基础上结合采掘破坏规律,构建瓦斯地质模型,实时输入瓦斯监测数据,实现瓦斯动态演变的三维可视化。

5)火区地质建模

综合分析地层、煤层自然发火特性、漏风供氧、采空区气成分及温度、围岩温度等基础数据,对煤层火区煤氧复合化学场、放热温度场、煤岩变形应力场进行耦合分析,根据火区燃烧特性、燃烧反应速率,构建火区地质模型,输入束管监测、光纤温度监测等数据,实现火区动态演变的可视化及预测。

6)扰动地质及力学模型

根据煤、岩的力学性质和测试结果,结合矿压、地应力等监测数据,求出煤层各分区的损伤变量,预测采掘对煤岩层的破坏深度,通过对煤层受载过程中的裂隙演化规律,分析构建煤层的扰动地质及力学模型,可作为分析采掘扰动下煤岩变形引发地质灾害的基础判据。

7)综合地质模型

融合上述各模型,实现包括地质体的各种物理、化学属性的可视化,建立完整、全息的透明地质体,并可进行各种剖切、透视等可视化操作,为精准地质灾害预警提供基础信息。

2.1.2 地质灾害监测预警

1)地质灾害综合预警

将水文监测数据(含水层及采空区水位、水温、水压、管道流量监测、水质监测、电阻率监测等)、瓦斯监测数据(瓦斯浓度、分布规律)、火区监测数据等数据信息接入系统,与三维模型进行同步映射显示,以图和表的形式对数据进行融合分析和展示,从而构建动态多属性地质模型,并通过设置综合预警阈值组合,实现多系统的联动预警。

2)掘进工作面地质透明化及灾害预警

构建掘进工作面透明地质模型[19-20],实现掘进巷道动态更新、自动规划、掘进断面自动下发的地质导航功能;集成煤矿长距离定向钻、孔中物探显示掘进前方地质异常,提高掘进安全和速度;实时显示随掘随探信息,不断提高掘进前方探测精度,为快速掘进保驾护航。

3)回采工作面地质透明及灾害预警

构建回采工作面透明模型[16,21],基于采前槽波勘探、音频电透视、孔中瞬变成果,采中微震监测、随采地震监测[22]、孔中电阻率监测的在线分析,实现回采前方地质信息的同步映射;微震监测实时预警底板破坏深度和顶板裂隙发育高度,与电阻率实时监测的富水异常区叠加分析,实现地质灾害初步预警;随采地震实时采集采煤机振动信号,分析工作面内部地质异常和应力变化,提高采煤工作面安全性。

2.1.3 地质保障工作台

地质保障工作台需要实现地质、测量、水文、储量管理。地质管理包括地质图件、钻孔基础数据、地质台账、地质预报、地质卡片、地质三书、地质类报告等内容;测量管理包括测量图件、测量数据、测量文档、巷道贯通管理等内容;水文管理包括水文台账、水文报告、防治水计划、防治水工程、水文地质预报、水文地质探测、水文图件、水质分析等内容;储量管理包括储量更新上报、储量图件和储量报告等内容。

2.2 微服务地质保障系统架构的构建

微服务的地质保障系统架构主要分为3 层,分别是应用层、平台层和基础设施层(图3)。

图3 微服务地质保障系统架构Fig.3 Architecture of the geological guarantee system based on microservices

1)应用层

采用VUE 用户界面渐进式前端框架进行开发,形成以透明地质、地质灾害监测预警、地质工作台为主要功能的用户交互界面。每一个前端的业务都配有后台配置界面,实现数据、图片、报告的修改、更新等管理,配置历史及数据存储于基础设施层数据库。

2)平台层

平台层包含网关层和服务层。网关层采用Spring Cloud Gateway 实现负载均衡,地质保障平台后端部署多台云服务器,可实现通过流量分发的负载均衡服务扩展系统对外服务能力,多服务器负载均衡可以消除单点故障,提升地质保障系统的可靠性。用户使用浏览器打开地质保障系统,向Spring Cloud Gateway 发出请求,请求发送给负责路由的Gateway Handler Mapping,找到相匹配的路由后发送到Gateway Web Mapping,实现执行前端请求的业务逻辑(图4)。

图4 Spring Cloud Gateway 的处理流程Fig.4 Processing flow of Spring Cloud Gateway

服务层以微服务的形式实现支持前端UI 显示及业务交互的分析预警服务、三维模型构建服务、地质工作报表服务、数据解析传输服务和基础服务;集成了Spring Cloud Config 组件和Apollo 配置管理中心实现对微服务的治理和配置;采用熔断保护、安全控制、调用链追踪、日志记录、监控报警组件实现对微服务状态的控制,保障微服务的有效、可靠运行。

分析预警模型服务模块构建掘进地质预警模型、回采地质预警模型,水害分析模型支持前端地质预测预报;三维模型构建服务集成地层模型、构造模型、水文地质模型、瓦斯地质模型等构建方法,支撑前端透明地质相关内容;地质工作报表服务实现地测基本信息、超前探测信息、排水系统、地质台账等报表服务,用于前端地质保障工作台的报表数据录入、报表生成、报表上报、打印功能;数据解析传输服务提供水文监测、微震监测、随采监测、随掘监测等地质数据的传输、解释、分析微服务,为模型构建、地质预警、工作报表提供基础数据和分析模型。

采用这种微服务的方式整合地质保障系统的各种业务(图5),每一种监测系统的接入、数据处理、预警都可以采用独立微服务,复杂度可控制;可灵活水平扩展和集成,不会受到开发语言的限制;可独立部署运维;开发针对性强、支持小团队敏捷开发;提高系统的可组合性和可替代性。

图5 微服务业务逻辑调用关系Fig.5 Logic calling relationship of microservice business

3)基础设施层

采用MySQL 等数据库实现数据存储,Redis 实现数据的缓存和前端高速调用,RabbitMQ 消息队列实现微服务之间的异步消息沟通,Search 搜索服务实现分布式搜索,OSS 对象实现分布式云存储,LCN 实现多个微服务之间的分布式事务控制。基础设施层主要保障整个微服务地质保障系统的有序、高效、可靠运转。

3 微服务地质保障系统架构应用

3.1 微震监测中的微服务提取

以地质保障系统中的微震监测数据传输、展示为例来说明地质保障各微服务的提取。微震监测系统的功能模块包含数据采集、传输以及各种图形和报表,且有二维、三维多种展示形式。根据微服务的地质保障架构,将煤矿微震监测中的业务划分为公共业务和微服务专有业务(图6)。日志管理、用户权限、推送通知等作为与其他业务系统相同或者类似的通用功能,将其解耦抽离成为通用的公共业务,整合到服务层(图3)的基础设施层。将微震数据提取、实时数据展示、历史数据展示解耦为微服务进行开发和加载。

图6 微震监测微服务实现Fig.6 Implementation of the microseismic monitoring microservice

微服务地质保障系统架构性能相比传统单体架构的提升,可以通过微震数据的查询速度对比来进行说明。将微震监测数据查询服务部署于相同的硬件、网络条件下进行了测试,查询数据量为10 000 条的情况下,单体架构需要时间15 200 ms,微服务架构只需要1 250 ms。采用微服务架构的微震监测数据查询,相比采用单体架构的微震监测数据查询速度提升非常快,本文设计在微服务架构中将微震监测数据区分为热数据和冷数据,将访问频繁的数据加载入高速缓存中,由专门的缓存数据微服务来进行管理,速度相比于单体架构有了质的提升。

3.2 微震监测微服务开发

与传统单体架构的开发相比,微服务开发更侧重于单服务拆分后每个服务的快速迭代。在传统单体架构模式下,每个功能的改造都会引起所有代码的重新发布,耗时耗力,改造微服务后,每个微服务实现相对较单一独立的功能。以微震监测为例说明微服务系统的开发流程。

①使用maven 构建代码,使用yml 文件指定微服务端口

② 生成启动类,用于启动服务

④ 对程序进行测试,验证微服务程序的可用性,构建微震监测服务的镜像(图7)

图7 微服务测试界面Fig.7 Microseismic microservice test interface

3.3 微震监测微服务部署和使用

在微服务地质保障系统架构下,采用容器技术封装微服务,提高部署的速度,降低部署的困难度。微震监测的每个具体业务可以单独形成并且界面和数据库可以分开部署,部署完成后通过Docker 对外映射的地址即可正常访问。地质保障Docker 镜像库保存了所有已经开发完成的微服务,可以通过FTP 访问拷贝、Docker 相关命令拉取所需的镜像(图8)。

图8 微服务部署流程Fig.8 Microservice deployment process

以微震监测数据显示分析微服务项目为例说明部署的过程,只要将镜像拷贝至服务器,将访问该服务的映射端口为8003,通过浏览器访问该服务器的8003端口可显示图9 所示微震界面。通过使用微服务的Docker 镜像技术可快速实现微震监测微服务快速部署、运行、上线,各微服务之间通过消息队列技术可以共享交互数据,从而实现地质保障系统的多系统集成功能。

图9 微震监测数据展示Fig.9 Microseismic monitoring data display

3.4 微服务地质保障系统运维

基于微服务的地质保障系统开发集成了众多地质类微服务,采用Spring Cloud Config 进行微服务的分布式配置和维护。微服务部署在Dokcer 容器中,采用K8S 管理工具对Docker 进行自动管理。通过远程访问部署在矿端超融合系统之上的K8S 管理Docker,实现微服务地质保障系统的远程运维。

3.5 微服务地质保障系统架构应用效果

使用微服务地质保障系统架构开发了唐家会煤矿智能地质保障系统(图10)。系统基于钻探、物探、监测等数据,采用微服务形式集成多种地质监测子系统和地质管理子功能,实现了一体化模型、防治水工程、掘进地质透明、回采地质透明、地质预测预报、工作面数字孪生、地质透明化高精度数据采集等多项应用功能,为唐家会煤矿安全、高效生产提供了地质保障基础。

图10 智能地质保障系统Fig.10 Intelligent geological guarantee system

4 结 论

a.微服务地质保障架构规范了开发过程,简化了使用的技术栈,优化了系统集成开发流程;将通用的技术业务固化在开发架构,将需要集成的地质类子系统等专业属性强的业务通过微服务方式进行开发和部署运行,降低了开发、集成难度;使用Docker 技术封装微服务镜像,让微服务的部署运行不再受到运行环境的影响,提高跨平台移植性,降低了系统的部署难度,缩短了部署时间。

b.微服务地质保障系统架构在唐家会煤矿地质保障系统中的开发实践证明:架构的应用改变了现有地质保障类软件的开发模式,通用业务与专有业务分离,以微服务的形式实现多专业应用集成,便于多团队并行开发,提高工作效率;微服务实现了系统内部各功能之间的高内聚低耦合,不同方法的钻探、物探等专业功能开发可独立完成,使后期运维、修改的可控性大大提高。

猜你喜欢
架构监测服务
聚焦“五个一” 打通为侨服务渠道
陆地生态系统碳监测卫星发射成功
信号分析在无线电监测工作中的应用
基于云控平台雾计算架构的网联汽车路径控制
基于 WSN 的隧道健康监测研究
构建富有活力和效率的社会治理架构
学习监测手环
采掘服务个股表现
VIE:从何而来,去向何方
企业架构的最佳实践