基于RabbitMQ消息中间件的巡检系统研发与实践
2021-12-05毛南赵贾嘉辉任中兴
毛南赵 贾嘉辉 任中兴
1.中煤航测遥感集团有限公司 陕西西安 710199;2.西安西北石油管道有限公司 陕西西安 710021
截至2 0 19年年底,天然气国家基干管网总里程近8.1×104km,年输气能力超过3500×108m3。“十四五”规划对管道安全管理工作提出了更高的要求,高质量管道巡检对保障管道安全意义重大,高效可靠的巡检系统是管道巡检安全信息化的第一驱动力。当前企业的巡检系统存在高并发导致数据上传慢,数据丢失等问题。消息队列(Message Queue,简称MQ)作为一种应用程序之间的通信方法,不仅能有效地实现系统间的解耦,同时,它还将业务异步化,从而提高系统性能、有效缓解系统压力。本系统利用Rabbit MQ消息中间件技术,提高了数据在移动端和服务器之间的传输效率,为高并发时数据传输提供了一套良好的策略,同时,为企业高效率地应用巡检系统提供了参考。
1 研究内容
该巡检系统,遵守天然气管道安全管理体系规范,结合用户PC终端和巡线APP终端,基于RabbitMQ消息中间件技术,实现了巡检管理、事件管理、档案管理、通知管理及系统管理等功能,提升了天然气管道安全监管能力。具体内容如下:
①实现了巡检工作计划及巡检任务的制定及下发,为巡线管理提供便捷化管理;②结合PC端和APP端,实现了管线隐患事件上报全流程处置功能,提高了系统的准确性、及时性;③实现了巡检轨迹高并发下的实时传输通信,为巡线管理提供可视化监管;④实现了巡检基础档案信息的规范化管理;⑤实现了通知下发、未完成任务及待办事项提醒,以及报警功能,为巡线工作人员绩效考评提供了公平性和客观性。⑥实现了RabbitMQ消息中间件在系统框架中的应用,为高并发时数据传输提供了一套良好的策略。
2 系统设计
基于RabbitMQ消息中间件的巡检系统是以管道安全管理体系规范为基础,以保障天然气管道安全运行为目的,集成了巡检数据采集设备,结合了Rabbit MQ、GIS等技术建立的天然气管道巡检系统,保障了天然气管道安全运行。
2.1 总体框架设计
为确保实施与推广,系统整体上采用B/S架构。系统构建了四层体系架构:界面展示层、业务逻辑层、数据访问层和数据存储层。
2.2 功能设计
该巡检系统主要包括以下几个功能模块:系统管理模块、GIS基础模块、计划任务模块、事件管理模块、实时监控模块、档案管理模块、绩效管理模块、通知提醒等功能模块。
2.3 数据库设计
本系统基于关系型数据库和空间要素存储引擎,采用APDM管线数据模型,用于存储、收集和管线有关的信息。
3 RabbitMQ应用
3.1 消息队列
消息队列MQ(Message Quene,MQ),是消息中间件通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。即一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有Active MQ,Rabbit MQ,Rocket MQ,Kafka等。其主要性能对比分析如表1所示。
表1 消息队列中间件性能对比表
综上所知,消息队列ActiveMQ、RabbitMQ、RocketMQ和kafka都有其适用场景,相较于其他消息中间件而言,RabbitMQ消息中间件具有高可用高并发的特点,适用于对数据一致性、稳定性和可靠安全性要求都很高的场景。结合天然气管道巡检系统的建设要求,本文将RabbitMQ应用于巡检系统,为高并发时巡检轨迹数据传输提供了一套良好的策略。
3.2 RabbitMQ工作原理
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现,采用信道通信,拥有消息确认机制和持久化机制,具有健壮性好、易于使用、高性能、高并发、集群易扩展等优点。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ的消息模型图(发送订阅模式)如图1所示。其中,P是消息发送者,可将消息发送到X;X是交换机,可根据路由将消息发送给指定队列;Q是队列,存放消息;C是消息接受者,从队列中获取消息。该模式中,消费者的消息队列绑定到该交换机并匹配到Routing Key实现消息订阅,订阅后便可接收消息。只有消费者将队列绑定到该交换机且指定的Routing Key符合正则校验,才能收到消息,从而保证消息的可靠性。
图1 RabbitMQ消息模型图
3.3 RabbitMQ优化策略
在巡检系统中应用RabbitMQ进行消息队列管理,采用发布订阅模式,保证不同任务间独立运行。在巡检过程中,巡检APP会根据业务需要定时发送位置数据,RabbitMQ则定时从巡检移动端APP获取数据后,消息数据会保存入MQ消息队列,进行缓存,然后服务端定期扫描MQ队列,进行异步处理。以备巡检服务端进行消息句柄的内容的解析,高效的计算,持久化操作。其次,Rabbit MQ消息确认机制可以解决数据丢失问题,即成功消费MQ中的消息才会被消息确认——Ack。Rabbit MQ的引用改进了移动端消息传递方式,为巡检提供高强度的后端算力提供了缓存消息基础,从而保证巡检数据安全可靠的传递,从而解决高并发、系统数据丢失等问题。
4 系统实现
系统按照软件开发标准进行开发,充分考虑系统的后续推广,确保系统的简单易用和高可扩展性。
4.1 系统管理模块
主要对系统中的阈值、用户、单位、角色、功能、登录日志、操作日志以及在线时长等信息进行统一管理。不仅可以对用户权限进行限制管理,同时可以对用户在系统中的操作进行痕迹管理。
4.2 GIS基础模块
实现了地图放大、缩小和查看等基本功能;实现了底图切换,专题地图,图层管理,地图量测,打印输出,视图书签等扩展功能。
4.3 计划任务模块
可分为计划管理和任务管理。其中,计划管理可根据不同的员工角色制定不同人员的巡检计划,选择计划生成任务的规则,制定完成后会在计划周期内自动生成一个任务推送给巡线人员。任务管理实现了临时任务的制订及下发,以及具体巡线任务的查询等管理。
4.4 事件管理模块
实现了巡检过程中隐患事件的上报、查看、流程处置,及结果统计分析功能,达到事件信息的上报、审核、监护、跟踪、办结的闭环管理。并支持在地图上定位事件的位置,便于事件处理,提高事件管理响应效率。
4.5 实时监控模块
实现了巡检人员的实时位置、历史轨迹及人员在线信息的实时查看。管理员能够在地图上实时监控巡检人员信息,从而清晰地掌握巡检人员的出勤情况。该模块重点应用了RabbitMQ消息中间件,极大提高了消息订阅与消费的高效性、实时性。
4.6 档案管理模块
实现了对巡检员、巡检仪、SIM以及巡检关键点信息的归档管理,可支持档案信息批量导出功能。
4.7 绩效管理模块
通过查看单日或者多日的巡检个人报表及单位报表。主要指标包括巡检员名称、人员类型、所属单位、员工编号、巡检状况、任务质量信息等。合理客观地对巡检人员进行绩效考核。
4.8 通知提醒模块
实现了各类通知公告信息的下发,以及巡检过程中三超(超时、超距、超速)信息的提醒;提高巡线人员的巡护质量。
5 结语
本文将Rabbit MQ消息中间件应用于天然气管道巡检系统。探讨了Rabbit MQ消息中间件的工作原理、策略及在巡检系统中的应用和价值。实现了RabbitMQ消息中间件在系统框架中的应用,高效解决了巡检高并发时消息堆积、巡检轨迹数据丢失等问题,提高了巡检系统的稳定性和高效性,不仅为高并发时数据传输提供了一套良好的策略,还为企业高效率地应用巡检系统提供了参考,从而进一步提高了管道安全监管能力。