陈清
(中煤科工集团重庆研究院有限公司, 重庆 400039)
煤矿大型机电设备是各级监管机构的重点管控对象[1],对煤矿大型机电设备进行有效监管既是应急管理部信息化发展总体战略规划的重要组成部分,也是大型煤矿集团公司信息化建设重要内容[2]。因此亟需利用信息化手段实现煤矿大型机电设备在线、快速、有效管控[3-6]。
现有煤矿大型机电设备联网主要是在煤矿企业部署前置数据采集服务器,通过安装在数据采集服务器上的数据采集程序从数据源获取数据,以文本文件的方式缓存于前置数据采集服务器的指定文件目录,然后利用数据上传工具通过文件传输协议(File Transfer Protocol,FTP)将文本文件传输至省级煤矿安全监察局等上级监管部门数据中心的FTP服务器,并利用安装在数据分析服务器上的数据解析程序将文本文件数据进行逆向解析并保存到目标库中[7]。但基于FTP的煤矿大型机电设备联网架构在实际使用过程中存在以下问题:① 在面向对象为主流编程方式的情况下,数据在文本文件、内存对象、数据库文件之间流转,数据交换协议制定复杂[8]。② 实时数据生成频率较快,数据解析程序将实时数据写入关系数据库实时数据表,为避免数据冲突,通常会对实时数据表进行加锁,并且数据应用系统高频访问关系数据库实时数据表,会大大增加数据库读写压力。③ 数据采集程序和数据解析程序不断新建、删除文本文件,会产生大量磁盘碎片,对数据采集服务器和数据分析服务器磁盘造成物理损坏。④ 网络阻塞一段时间后,数据采集服务器会堆积大量文本文件;网络恢复时需要按照时间顺序上传文本文件,可能造成查找文件超时,导致读取文本文件失败。
Redis(Remote Dictionary Server,远程字典服务)具备高效数据缓存、分布式部署和支持多种交互模式等特点[9],因此,本文提出了基于Redis的煤矿大型机电设备联网架构,具有高效、实时的数据采集、传输与解析能力。
Redis作为一款开源的高性能非关系型内存数据库[10],支持丰富的数据结构(包括字符串、集合、列表、字典等),可实现快速增删改查。Redis客户端和服务端之间的通信协议RESP(Redis Serialization Protocol,Redis序列化协议)是在TCP之上构建的[11],Redis客户端和服务端保持双工连接。Redis具有以下特点:① 数据读写性能极高。由于Redis是基于内存(缓存)的数据存储方式,对数据读操作速度达11万次/s,写操作速度达8.1万次/s,数据查询效率高。② 支持持久化。Redis将更新的数据异步持久化到硬盘中,或者将执行过的修改操作写入日志文件中,能够在网络中断等异常情况下,缓存网络异常期间的数据,在网络恢复时根据数据优先级重传数据。③ 客户端和服务端可实现多种类型的交互模式,包括串行请求/响应模式、双工请求/响应模式、原子化的批量请求/响应模式(事务)、发布/订阅模式。
煤矿大型机电设备联网数据主要包括实时数据和参数定义数据。参数定义数据在初始化之后基本保持不变。实时数据具备以下特征:① 时序性。煤矿大型机电设备监测数据实时采集并联网上传,从数据产生角度来看,数据具有时间先后顺序。② 分布均衡。由于煤矿大型机电设备监测数据的采集频率固定,在时间维度上,数据是连续的,每个时段的数据量相对均衡。③ 结构简单。每条设备实时数据只包含设备监测参数编码、监测值和采集时间。
基于Redis的煤矿大型机电设备联网架构分为采集层、传输层、服务层和应用层,如图1所示。
采集层利用数据采集服务器从数据源采集数据并转换为统一的数据格式[12];传输层通过Redis数据管道进行数据实时、高效传输,对采集的数据进行有效整合,统一存入数据中心;服务层综合利用基础设备、计算机网络、安全设备、服务器、基础软件和应用软件等,为应用层提供基础支撑服务;应用层主要利用服务层提供的各类服务,为用户提供业务应用,包括实时数据查询、报警记录查询、设备运行记录查询、设备状态变动查询、参数曲线/柱图查询、分钟统计数据查询、参数定义数据查询等。
从业务角度看,整个联网架构分为煤矿端和上级监管端两部分,煤矿端通过Redis数据管道向上级监管端传输数据。
图1 基于Redis的煤矿大型机电设备联网架构Fig.1 Networking architecture of large-scale electromechanical equipment in coal mine based on Redis
煤矿端由数据源和数据采集服务器组成,如图2所示。数据源主要包括OPC Server、文本文件、数据库、Web Service等;数据采集服务器上部署数据采集程序和中断缓存数据库。在网络通畅情况下,各联网煤矿的大型机电设备实时数据通过数据采集程序自动采集上传。当出现网络阻塞等异常情况,数据会堆积在煤矿端数据采集服务器中,数据采集程序的数据缓存模块一旦监测到数据堆积,自动启动数据缓存服务,将堆积的数据缓存到中断缓存数据库中,并在网络恢复后按数据采集时间的优先级上传缓存数据,实现数据中断续传。
图2 煤矿端组成Fig.2 Composition of coal mine end
数据传输方式采用Redis发布/订阅模式[11],如图3所示。Redis发布/订阅机制包括发布者、订阅者和Redis数据管道,发布者和订阅者通过Redis数据管道关联,发布者和订阅者为Redis客户端,Redis数据管道为Redis服务端,包括实时数据管道和参数定义数据管道。各联网煤矿的数据采集程序作为发布者,将采集的煤矿大型机电设备数据发布到Redis服务端的实时数据管道和参数定义数据管道。Redis服务端接收到发布的数据后,向各数据解析程序(订阅者)即时推送数据。
图3 Redis发布/订阅模式Fig.3 Redis publish/subscribe mode
上级监管端由数据解析程序、存储系统和数据应用系统组成,如图4所示,其中存储系统包括关系数据库、HBase和Redis内存数据库。Redis服务端将接收到的数据推送给数据解析程序,由数据解析程序完成数据逆向解析,将解析的实时数据直接写入Redis内存数据库和HBase实时数据快照表,并将在实时数据基础上通过统计分析得到的设备运行记录数据、设备状态变动数据、分钟统计数据和报警数据等写入关系数据库。数据应用系统通过数据接口直接访问Redis内存数据库中的实时数据和关系数据库中的历史数据,由于Redis内存数据库读写速度远远高于关系数据库读写速度,提高了数据读写效率,减轻了关系数据库读写压力[13]。
图4 上级监管端组成Fig.4 Composition of superior supervision end
Redis服务端和数据解析程序可单机部署或分布式部署[14]。当联网煤矿数量较少时,可采用单机部署,即将Redis服务端和数据解析程序部署到1台数据分析服务器上,为不同类型的设备规划不同的Redis数据管道,以提高数据传输和解析效率;当联网煤矿数量较多时,可采用分布式部署,即将Redis服务端和数据解析程序部署到多台数据分析服务器上,并利用Redis集群[15]功能组建分布式集群,将数据解析任务分解到各台数据分析服务器,实现负载均衡。
目前,基于Redis的煤矿大型机电设备联网架构已在重庆煤矿安全监察局矿用设备监察管理系统中应用,实现了重庆能投渝新能源有限公司松藻煤矿、逢春煤矿、打通一矿、渝阳煤矿、石壕煤矿、红岩煤矿等6座试点煤矿的提升机、主要通风机、空气压缩机、主要排水泵、主运带式输送机、供电设备等煤矿大型机电设备联网,实时监测参数超过3万个。与前期应用的基于FTP的煤矿大型机电设备联网架构相比,基于Redis的煤矿大型机电设备联网架构在实时数据延时和实时数据查询速度方面显著提高。
(1) 实时数据延时。在基于FTP的煤矿大型机电设备联网架构中,数据采集程序每隔10 s对FTP目录进行轮询,数据解析程序每隔0.5 s对FTP服务端文件目录进行扫描,再加上数据读取和解析等时间开销,实时数据延时至少在10 s以上;在基于Redis的煤矿大型机电设备联网架构中,Redis服务端收到实时数据后立即推送给数据解析程序,省略了对FTP客户端和服务端的轮询环节,减少了读取FTP文件的时间开销,实时数据延时一般在3 s以内。
(2) 实时数据查询速度。在相同的软硬件测试环境下,分别在基于FTP和Redis的煤矿大型机电设备联网架构中查询主运带式输送机实时数据50次,每次查询间隔1 s,数据查询耗时如图5所示。可看出在基于FTP的煤矿大型机电设备联网架构中,查询设备实时数据耗时为240~5 100 ms,波动较大,平均耗时为2 773 ms;在基于Redis的煤矿大型机电设备联网架构中,查询设备实时数据耗时基本保持在240~300 ms,整体稳定,平均耗时为266 ms。
图5 设备实时数据查询耗时Fig.5 Query time consumption of real-time equipment data
基于Redis的煤矿大型机电设备联网架构采用Redis发布/订阅模式进行数据采集和传输,减少了数据流转环节,提高了数据传输效率;利用数据传输中断缓存机制,实现数据中断续传,避免了数据丢失;利用Redis内存数据库存储实时数据,提高了实时数据访问速度,减轻了关系数据库读写压力;利用Redis集群功能实现Redis服务端和数据解析程序分布式部署,提高了数据解析效率。该架构在数据采集、传输、解析和存储等环节具有较高的实时性和高效性,有助于煤矿上级监管部门实现对煤矿大型机电设备的在线、快速、有效管控。
参考文献(References):
[1] 杨竞巍.煤矿机电设备安全管理维护措施研究[J].价值工程,2020,39(5):39-40.
YANG Jingwei.Research on safety management and maintenance measures of mechanical and electrical equipment used in the coal mine[J].Value Engineering,2020,39(5):39-40.
[2] 肖雅丹,王占山.基于物联网的煤矿综合自动化控制系统研究[J].控制工程,2018,25(5):816-822.
XIAO Yadan,WANG Zhanshan.Design of a synthetical automatic control system in coal mining based on Internet of things[J].Control Engineering of China,2018,25(5):816-822.
[3] 郑万波,袁湘涛,许多康,等.省级区域多层级一体化国有地方煤矿监管模式优化研究[J].能源与环保,2019,41(3):11-18.
ZHENG Wanbo,YUAN Xiangtao,XU Duokang,et al.Research on optimization of state-owned local coal mine supervision models in provincial level multi-level integration[J].China Energy and Environmental Protection,2019,41(3):11-18.
[4] 姚昊辰.加强煤矿机电设备管理的策略研究[J].西部探矿工程,2019,31(4):188-190.
YAO Haochen.Strategies for strengthening the management of coal mine mechanical and electrical equipment[J].West-China Exploration Engineering,2019,31(4):188-190.
[5] 孙继平.煤矿机电及运输事故防治的紧迫性研究[J].工矿自动化,2011,37(4):48-51.
SUN Jiping.Research of urgency of prevention and treatment of electromechanical and transport accidents of coal mine[J].Industry and Mine Automation,2011,37(4):48-51.
[6] 李敬兆,高之翔,杨大禹,等.矿山大型机电设备协同控制[J].工矿自动化,2017,43(3):15-19.
LI Jingzhao,GAO Zhixiang,YANG Dayu,et al.Coordinative control of large-scale electromechanical equipment in mine[J].Industry and Mine Automation,2017,43(3):15-19.
[7] 张翼.煤矿安全监控系统联网平台设计[J].能源与环保,2019,41(12):33-37.
ZHANG Yi.Design of networking platform for coal mine safety monitoring system[J].China Energy and Environmental Protection,2019,41(12):33-37.
[8] 陈运启,李勇.基于微软消息队列的煤矿安全监控联网系统[J].现代矿业,2014,30(10):102-104.
CHEN Yunqi,LI Yong.Coal mine safety monitoring system based on MSMQ[J].Modern Mining,2014,30(10):102-104.
[9] 吴霖,刘振宇,李佳.Redis在订阅推送系统中的应用[J].电脑知识与技术,2015,11(7):292-294.
WU Lin,LIU Zhenyu,LI Jia.Redis application in subscription and push system[J].Computer Knowledge and Technology,2015,11(7):292-294.
[10] 朱亚兴,余爱民,王夷.基于Redis+MySQL+MongoDB存储架构应用[J].微型机与应用,2014,33(13):3-5.
ZHU Yaxing,YU Aimin,WANG Yi.Storage architecture applications based on Redis+MySQL+MongoDB[J].Microcomputer & Its Applications,2014,33(13):3-5.
[11] 彭灿华.Redis在高速缓存系统中的序列化算法研究[J].现代电子技术,2017,40(22):122-124.
PENG Canhua.Research on serialization algorithm of Redis in cache systems[J].Modern Electronics Technique,2017,40(22):122-124.
[12] 洪玉玲.煤矿安全监控三级联网系统软件的设计与实现[D].北京:煤炭科学研究总院,2014.
HONG Yuling.Designing and implementation of coal mine safety monitoring level three network system[D].Beijing:China Coal Research Institute,2014.
[13] 焦健,李岩.基于Redis的SVG空间信息可视化数据库[J].小型微型计算机系统,2015,36(6):1193-1198.
JIAO Jian,LI Yan.SVG spatial visualization database based on Redis[J].Journal of Chinese Computer Systems,2015,36(6):1193-1198.
[14] 姚经纬,杨福军.Redis分布式缓存技术在Hadoop平台上的应用[J].计算机技术与发展,2017,27(6):146-155.
YAO Jingwei,YANG Fujun.Application of Redis distributed caching technology in Hadoop framework[J].Computer Technology and Development,2017,27(6):146-155.
[15] 李燚,顾乃杰,黄增士,等.Redis集群可靠性的研究与优化[J].计算机工程,2018,44(5):40-46.
LI Yi,GU Naijie,HUANG Zengshi,et al.Research and optimization of Redis cluster reliability[J].Computer Engineering,2018,44(5):40-46.