陳清
(中煤科工集團(tuán)重慶研究院有限公司, 重慶 400039)
煤礦大型機(jī)電設(shè)備是各級(jí)監(jiān)管機(jī)構(gòu)的重點(diǎn)管控對(duì)象[1],對(duì)煤礦大型機(jī)電設(shè)備進(jìn)行有效監(jiān)管既是應(yīng)急管理部信息化發(fā)展總體戰(zhàn)略規(guī)劃的重要組成部分,也是大型煤礦集團(tuán)公司信息化建設(shè)重要內(nèi)容[2]。因此亟需利用信息化手段實(shí)現(xiàn)煤礦大型機(jī)電設(shè)備在線、快速、有效管控[3-6]。
現(xiàn)有煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)主要是在煤礦企業(yè)部署前置數(shù)據(jù)采集服務(wù)器,通過安裝在數(shù)據(jù)采集服務(wù)器上的數(shù)據(jù)采集程序從數(shù)據(jù)源獲取數(shù)據(jù),以文本文件的方式緩存于前置數(shù)據(jù)采集服務(wù)器的指定文件目錄,然后利用數(shù)據(jù)上傳工具通過文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)將文本文件傳輸至省級(jí)煤礦安全監(jiān)察局等上級(jí)監(jiān)管部門數(shù)據(jù)中心的FTP服務(wù)器,并利用安裝在數(shù)據(jù)分析服務(wù)器上的數(shù)據(jù)解析程序?qū)⑽谋疚募?shù)據(jù)進(jìn)行逆向解析并保存到目標(biāo)庫中[7]。但基于FTP的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)在實(shí)際使用過程中存在以下問題:① 在面向?qū)ο鬄橹髁骶幊谭绞降那闆r下,數(shù)據(jù)在文本文件、內(nèi)存對(duì)象、數(shù)據(jù)庫文件之間流轉(zhuǎn),數(shù)據(jù)交換協(xié)議制定復(fù)雜[8]。② 實(shí)時(shí)數(shù)據(jù)生成頻率較快,數(shù)據(jù)解析程序?qū)?shí)時(shí)數(shù)據(jù)寫入關(guān)系數(shù)據(jù)庫實(shí)時(shí)數(shù)據(jù)表,為避免數(shù)據(jù)沖突,通常會(huì)對(duì)實(shí)時(shí)數(shù)據(jù)表進(jìn)行加鎖,并且數(shù)據(jù)應(yīng)用系統(tǒng)高頻訪問關(guān)系數(shù)據(jù)庫實(shí)時(shí)數(shù)據(jù)表,會(huì)大大增加數(shù)據(jù)庫讀寫壓力。③ 數(shù)據(jù)采集程序和數(shù)據(jù)解析程序不斷新建、刪除文本文件,會(huì)產(chǎn)生大量磁盤碎片,對(duì)數(shù)據(jù)采集服務(wù)器和數(shù)據(jù)分析服務(wù)器磁盤造成物理損壞。④ 網(wǎng)絡(luò)阻塞一段時(shí)間后,數(shù)據(jù)采集服務(wù)器會(huì)堆積大量文本文件;網(wǎng)絡(luò)恢復(fù)時(shí)需要按照時(shí)間順序上傳文本文件,可能造成查找文件超時(shí),導(dǎo)致讀取文本文件失敗。
Redis(Remote Dictionary Server,遠(yuǎn)程字典服務(wù))具備高效數(shù)據(jù)緩存、分布式部署和支持多種交互模式等特點(diǎn)[9],因此,本文提出了基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu),具有高效、實(shí)時(shí)的數(shù)據(jù)采集、傳輸與解析能力。
Redis作為一款開源的高性能非關(guān)系型內(nèi)存數(shù)據(jù)庫[10],支持豐富的數(shù)據(jù)結(jié)構(gòu)(包括字符串、集合、列表、字典等),可實(shí)現(xiàn)快速增刪改查。Redis客戶端和服務(wù)端之間的通信協(xié)議RESP(Redis Serialization Protocol,Redis序列化協(xié)議)是在TCP之上構(gòu)建的[11],Redis客戶端和服務(wù)端保持雙工連接。Redis具有以下特點(diǎn):① 數(shù)據(jù)讀寫性能極高。由于Redis是基于內(nèi)存(緩存)的數(shù)據(jù)存儲(chǔ)方式,對(duì)數(shù)據(jù)讀操作速度達(dá)11萬次/s,寫操作速度達(dá)8.1萬次/s,數(shù)據(jù)查詢效率高。② 支持持久化。Redis將更新的數(shù)據(jù)異步持久化到硬盤中,或者將執(zhí)行過的修改操作寫入日志文件中,能夠在網(wǎng)絡(luò)中斷等異常情況下,緩存網(wǎng)絡(luò)異常期間的數(shù)據(jù),在網(wǎng)絡(luò)恢復(fù)時(shí)根據(jù)數(shù)據(jù)優(yōu)先級(jí)重傳數(shù)據(jù)。③ 客戶端和服務(wù)端可實(shí)現(xiàn)多種類型的交互模式,包括串行請(qǐng)求/響應(yīng)模式、雙工請(qǐng)求/響應(yīng)模式、原子化的批量請(qǐng)求/響應(yīng)模式(事務(wù))、發(fā)布/訂閱模式。
煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)數(shù)據(jù)主要包括實(shí)時(shí)數(shù)據(jù)和參數(shù)定義數(shù)據(jù)。參數(shù)定義數(shù)據(jù)在初始化之后基本保持不變。實(shí)時(shí)數(shù)據(jù)具備以下特征:① 時(shí)序性。煤礦大型機(jī)電設(shè)備監(jiān)測(cè)數(shù)據(jù)實(shí)時(shí)采集并聯(lián)網(wǎng)上傳,從數(shù)據(jù)產(chǎn)生角度來看,數(shù)據(jù)具有時(shí)間先后順序。② 分布均衡。由于煤礦大型機(jī)電設(shè)備監(jiān)測(cè)數(shù)據(jù)的采集頻率固定,在時(shí)間維度上,數(shù)據(jù)是連續(xù)的,每個(gè)時(shí)段的數(shù)據(jù)量相對(duì)均衡。③ 結(jié)構(gòu)簡(jiǎn)單。每條設(shè)備實(shí)時(shí)數(shù)據(jù)只包含設(shè)備監(jiān)測(cè)參數(shù)編碼、監(jiān)測(cè)值和采集時(shí)間。
基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)分為采集層、傳輸層、服務(wù)層和應(yīng)用層,如圖1所示。
采集層利用數(shù)據(jù)采集服務(wù)器從數(shù)據(jù)源采集數(shù)據(jù)并轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)格式[12];傳輸層通過Redis數(shù)據(jù)管道進(jìn)行數(shù)據(jù)實(shí)時(shí)、高效傳輸,對(duì)采集的數(shù)據(jù)進(jìn)行有效整合,統(tǒng)一存入數(shù)據(jù)中心;服務(wù)層綜合利用基礎(chǔ)設(shè)備、計(jì)算機(jī)網(wǎng)絡(luò)、安全設(shè)備、服務(wù)器、基礎(chǔ)軟件和應(yīng)用軟件等,為應(yīng)用層提供基礎(chǔ)支撐服務(wù);應(yīng)用層主要利用服務(wù)層提供的各類服務(wù),為用戶提供業(yè)務(wù)應(yīng)用,包括實(shí)時(shí)數(shù)據(jù)查詢、報(bào)警記錄查詢、設(shè)備運(yùn)行記錄查詢、設(shè)備狀態(tài)變動(dòng)查詢、參數(shù)曲線/柱圖查詢、分鐘統(tǒng)計(jì)數(shù)據(jù)查詢、參數(shù)定義數(shù)據(jù)查詢等。
從業(yè)務(wù)角度看,整個(gè)聯(lián)網(wǎng)架構(gòu)分為煤礦端和上級(jí)監(jiān)管端兩部分,煤礦端通過Redis數(shù)據(jù)管道向上級(jí)監(jiān)管端傳輸數(shù)據(jù)。
圖1 基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)Fig.1 Networking architecture of large-scale electromechanical equipment in coal mine based on Redis
煤礦端由數(shù)據(jù)源和數(shù)據(jù)采集服務(wù)器組成,如圖2所示。數(shù)據(jù)源主要包括OPC Server、文本文件、數(shù)據(jù)庫、Web Service等;數(shù)據(jù)采集服務(wù)器上部署數(shù)據(jù)采集程序和中斷緩存數(shù)據(jù)庫。在網(wǎng)絡(luò)通暢情況下,各聯(lián)網(wǎng)煤礦的大型機(jī)電設(shè)備實(shí)時(shí)數(shù)據(jù)通過數(shù)據(jù)采集程序自動(dòng)采集上傳。當(dāng)出現(xiàn)網(wǎng)絡(luò)阻塞等異常情況,數(shù)據(jù)會(huì)堆積在煤礦端數(shù)據(jù)采集服務(wù)器中,數(shù)據(jù)采集程序的數(shù)據(jù)緩存模塊一旦監(jiān)測(cè)到數(shù)據(jù)堆積,自動(dòng)啟動(dòng)數(shù)據(jù)緩存服務(wù),將堆積的數(shù)據(jù)緩存到中斷緩存數(shù)據(jù)庫中,并在網(wǎng)絡(luò)恢復(fù)后按數(shù)據(jù)采集時(shí)間的優(yōu)先級(jí)上傳緩存數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)中斷續(xù)傳。
圖2 煤礦端組成Fig.2 Composition of coal mine end
數(shù)據(jù)傳輸方式采用Redis發(fā)布/訂閱模式[11],如圖3所示。Redis發(fā)布/訂閱機(jī)制包括發(fā)布者、訂閱者和Redis數(shù)據(jù)管道,發(fā)布者和訂閱者通過Redis數(shù)據(jù)管道關(guān)聯(lián),發(fā)布者和訂閱者為Redis客戶端,Redis數(shù)據(jù)管道為Redis服務(wù)端,包括實(shí)時(shí)數(shù)據(jù)管道和參數(shù)定義數(shù)據(jù)管道。各聯(lián)網(wǎng)煤礦的數(shù)據(jù)采集程序作為發(fā)布者,將采集的煤礦大型機(jī)電設(shè)備數(shù)據(jù)發(fā)布到Redis服務(wù)端的實(shí)時(shí)數(shù)據(jù)管道和參數(shù)定義數(shù)據(jù)管道。Redis服務(wù)端接收到發(fā)布的數(shù)據(jù)后,向各數(shù)據(jù)解析程序(訂閱者)即時(shí)推送數(shù)據(jù)。
圖3 Redis發(fā)布/訂閱模式Fig.3 Redis publish/subscribe mode
上級(jí)監(jiān)管端由數(shù)據(jù)解析程序、存儲(chǔ)系統(tǒng)和數(shù)據(jù)應(yīng)用系統(tǒng)組成,如圖4所示,其中存儲(chǔ)系統(tǒng)包括關(guān)系數(shù)據(jù)庫、HBase和Redis內(nèi)存數(shù)據(jù)庫。Redis服務(wù)端將接收到的數(shù)據(jù)推送給數(shù)據(jù)解析程序,由數(shù)據(jù)解析程序完成數(shù)據(jù)逆向解析,將解析的實(shí)時(shí)數(shù)據(jù)直接寫入Redis內(nèi)存數(shù)據(jù)庫和HBase實(shí)時(shí)數(shù)據(jù)快照表,并將在實(shí)時(shí)數(shù)據(jù)基礎(chǔ)上通過統(tǒng)計(jì)分析得到的設(shè)備運(yùn)行記錄數(shù)據(jù)、設(shè)備狀態(tài)變動(dòng)數(shù)據(jù)、分鐘統(tǒng)計(jì)數(shù)據(jù)和報(bào)警數(shù)據(jù)等寫入關(guān)系數(shù)據(jù)庫。數(shù)據(jù)應(yīng)用系統(tǒng)通過數(shù)據(jù)接口直接訪問Redis內(nèi)存數(shù)據(jù)庫中的實(shí)時(shí)數(shù)據(jù)和關(guān)系數(shù)據(jù)庫中的歷史數(shù)據(jù),由于Redis內(nèi)存數(shù)據(jù)庫讀寫速度遠(yuǎn)遠(yuǎn)高于關(guān)系數(shù)據(jù)庫讀寫速度,提高了數(shù)據(jù)讀寫效率,減輕了關(guān)系數(shù)據(jù)庫讀寫壓力[13]。
圖4 上級(jí)監(jiān)管端組成Fig.4 Composition of superior supervision end
Redis服務(wù)端和數(shù)據(jù)解析程序可單機(jī)部署或分布式部署[14]。當(dāng)聯(lián)網(wǎng)煤礦數(shù)量較少時(shí),可采用單機(jī)部署,即將Redis服務(wù)端和數(shù)據(jù)解析程序部署到1臺(tái)數(shù)據(jù)分析服務(wù)器上,為不同類型的設(shè)備規(guī)劃不同的Redis數(shù)據(jù)管道,以提高數(shù)據(jù)傳輸和解析效率;當(dāng)聯(lián)網(wǎng)煤礦數(shù)量較多時(shí),可采用分布式部署,即將Redis服務(wù)端和數(shù)據(jù)解析程序部署到多臺(tái)數(shù)據(jù)分析服務(wù)器上,并利用Redis集群[15]功能組建分布式集群,將數(shù)據(jù)解析任務(wù)分解到各臺(tái)數(shù)據(jù)分析服務(wù)器,實(shí)現(xiàn)負(fù)載均衡。
目前,基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)已在重慶煤礦安全監(jiān)察局礦用設(shè)備監(jiān)察管理系統(tǒng)中應(yīng)用,實(shí)現(xiàn)了重慶能投渝新能源有限公司松藻煤礦、逢春煤礦、打通一礦、渝陽煤礦、石壕煤礦、紅巖煤礦等6座試點(diǎn)煤礦的提升機(jī)、主要通風(fēng)機(jī)、空氣壓縮機(jī)、主要排水泵、主運(yùn)帶式輸送機(jī)、供電設(shè)備等煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng),實(shí)時(shí)監(jiān)測(cè)參數(shù)超過3萬個(gè)。與前期應(yīng)用的基于FTP的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)相比,基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)在實(shí)時(shí)數(shù)據(jù)延時(shí)和實(shí)時(shí)數(shù)據(jù)查詢速度方面顯著提高。
(1) 實(shí)時(shí)數(shù)據(jù)延時(shí)。在基于FTP的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)中,數(shù)據(jù)采集程序每隔10 s對(duì)FTP目錄進(jìn)行輪詢,數(shù)據(jù)解析程序每隔0.5 s對(duì)FTP服務(wù)端文件目錄進(jìn)行掃描,再加上數(shù)據(jù)讀取和解析等時(shí)間開銷,實(shí)時(shí)數(shù)據(jù)延時(shí)至少在10 s以上;在基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)中,Redis服務(wù)端收到實(shí)時(shí)數(shù)據(jù)后立即推送給數(shù)據(jù)解析程序,省略了對(duì)FTP客戶端和服務(wù)端的輪詢環(huán)節(jié),減少了讀取FTP文件的時(shí)間開銷,實(shí)時(shí)數(shù)據(jù)延時(shí)一般在3 s以內(nèi)。
(2) 實(shí)時(shí)數(shù)據(jù)查詢速度。在相同的軟硬件測(cè)試環(huán)境下,分別在基于FTP和Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)中查詢主運(yùn)帶式輸送機(jī)實(shí)時(shí)數(shù)據(jù)50次,每次查詢間隔1 s,數(shù)據(jù)查詢耗時(shí)如圖5所示。可看出在基于FTP的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)中,查詢?cè)O(shè)備實(shí)時(shí)數(shù)據(jù)耗時(shí)為240~5 100 ms,波動(dòng)較大,平均耗時(shí)為2 773 ms;在基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)中,查詢?cè)O(shè)備實(shí)時(shí)數(shù)據(jù)耗時(shí)基本保持在240~300 ms,整體穩(wěn)定,平均耗時(shí)為266 ms。
圖5 設(shè)備實(shí)時(shí)數(shù)據(jù)查詢耗時(shí)Fig.5 Query time consumption of real-time equipment data
基于Redis的煤礦大型機(jī)電設(shè)備聯(lián)網(wǎng)架構(gòu)采用Redis發(fā)布/訂閱模式進(jìn)行數(shù)據(jù)采集和傳輸,減少了數(shù)據(jù)流轉(zhuǎn)環(huán)節(jié),提高了數(shù)據(jù)傳輸效率;利用數(shù)據(jù)傳輸中斷緩存機(jī)制,實(shí)現(xiàn)數(shù)據(jù)中斷續(xù)傳,避免了數(shù)據(jù)丟失;利用Redis內(nèi)存數(shù)據(jù)庫存儲(chǔ)實(shí)時(shí)數(shù)據(jù),提高了實(shí)時(shí)數(shù)據(jù)訪問速度,減輕了關(guān)系數(shù)據(jù)庫讀寫壓力;利用Redis集群功能實(shí)現(xiàn)Redis服務(wù)端和數(shù)據(jù)解析程序分布式部署,提高了數(shù)據(jù)解析效率。該架構(gòu)在數(shù)據(jù)采集、傳輸、解析和存儲(chǔ)等環(huán)節(jié)具有較高的實(shí)時(shí)性和高效性,有助于煤礦上級(jí)監(jiān)管部門實(shí)現(xiàn)對(duì)煤礦大型機(jī)電設(shè)備的在線、快速、有效管控。
參考文獻(xiàn)(References):
[1] 楊競(jìng)巍.煤礦機(jī)電設(shè)備安全管理維護(hù)措施研究[J].價(jià)值工程,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] 肖雅丹,王占山.基于物聯(lián)網(wǎng)的煤礦綜合自動(dòng)化控制系統(tǒng)研究[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í)區(qū)域多層級(jí)一體化國(guó)有地方煤礦監(jiān)管模式優(yōu)化研究[J].能源與環(huán)保,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] 姚昊辰.加強(qiáng)煤礦機(jī)電設(shè)備管理的策略研究[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ī)電及運(yùn)輸事故防治的緊迫性研究[J].工礦自動(dòng)化,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ī)電設(shè)備協(xié)同控制[J].工礦自動(dòng)化,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] 張翼.煤礦安全監(jiān)控系統(tǒng)聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)[J].能源與環(huán)保,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] 陳運(yùn)啟,李勇.基于微軟消息隊(duì)列的煤礦安全監(jiān)控聯(lián)網(wǎng)系統(tǒng)[J].現(xiàn)代礦業(yè),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在訂閱推送系統(tǒng)中的應(yīng)用[J].電腦知識(shí)與技術(shù),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存儲(chǔ)架構(gòu)應(yīng)用[J].微型機(jī)與應(yīng)用,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在高速緩存系統(tǒng)中的序列化算法研究[J].現(xiàn)代電子技術(shù),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] 洪玉玲.煤礦安全監(jiān)控三級(jí)聯(lián)網(wǎng)系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:煤炭科學(xué)研究總院,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空間信息可視化數(shù)據(jù)庫[J].小型微型計(jì)算機(jī)系統(tǒng),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] 姚經(jīng)緯,楊福軍.Redis分布式緩存技術(shù)在Hadoop平臺(tái)上的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,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集群可靠性的研究與優(yōu)化[J].計(jì)算機(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.