張麗+胡常勝+李海峰
摘 要:文章通過利用消息列隊的MQTT技術解決了傳統通信協議的兩個應用弊端,即通信邏輯與業務邏輯綁定與C/S模型中通信都是針對一類特定的應用,因此極大程度地提高了綜合監控系統的兼容性,可適應不同供應商提供的監控設備。
關鍵詞:消息隊列;電力隧道;監控
中圖分類號:TM714 文獻標志碼:A 文章編號:2095-2945(2017)31-0149-02
引言
隨著國家的迅速發展,電力需求不斷增加,電力電纜數量也隨之增多。近幾年為了滿足城市化建設的要求,許多地區都使用電力隧道來鋪設電力電纜[1]。電力隧道鋪設于地下,在日常運行中很難了解隧道和電纜的運行情況。因此需要對隧道內各設備的運行狀況進行綜合全方位的實時監控,確保電力隧道安全可靠的運行[2]。
電力隧道綜合監控主要包括電纜本體檢測,視頻監控,隧道環境監控,安全監測和應急通訊[3]。隨著管理和應用需求的變化,監控系統還可能增加新的需求或者是子系統。為實現綜合全面的智能監控工作,監控系統的各個子系統間需要進行可靠高效的數據交流。現有傳統的通信方式(一般采用104協議)為用戶(Client,C)調用服務器(Server,S)信息時需等待服務器響應,因此其效率較低。當多個子系統間需要大量的實時信息交換時,傳統通信方式存在諸多弊端,很難滿足多元化信息的通訊需求,而且協議本身的實現過程比較繁瑣[7-8]。
為此,本文采用了一種可實現多個子系統間大量實時信息交換的通信技術,即消息隊列技術(MessageQueuing)[4],來建立電力隧道中的綜合監控系統。
1 MQTT技術
MQTT是基于二進制消息的發布/訂閱編程模式的消息協議,最早由IBM提出的,如今已經成為OASIS規范。由于規范很簡單,非常適合需要低功耗和網絡帶寬有限的IoT場景。
MQTT作為一個通用的消息隊列框架由眾多客戶端組成,對形成一個由各子系統集成的復雜系統非常方便。目前支持的開發語言有:C、C++、Java、.Net、Javascript、PHP、Python等,便于不同廠家、不同語言的二次開發的實現。
基于MQTT技術的消息模型分為以下四個部分:
1.1 消息分發模型
MQTT是一種基于代理的發布/訂閱的消息協議。提供一對多的消息分發,解除應用程序耦合。一個發布者可以對應多個訂閱者,當發布者發生變化的時候,他可以將消息一一通知給所有的訂閱者。這種模式提供了更大的網絡擴展性和更動態的網絡拓撲,如圖1所示。
1.2 消息質量
MQTT提供三種質量的服務:(1)至多一次,可能會出現丟包的現象,應用于對實時性要求不高的情況。例如,應用于環境傳感器時,數據丟失一次讀記錄并無太大影響,因為很快下一次讀記錄就會產生。(2)至少一次,保證包會到達目的地,但是可能出現重包。(3)正好一次,保證包會到達目的地,且不會出現重包的現象。這一級別可用于如計費系統等場景,因為在計費系統中消息丟失或重復可能會導致生成錯誤的費用。
1.3 主題名稱
主題名稱(Topicname)用來標識已發布消息信息的渠道。訂閱者用它來確定接收到所關心的信息。主題名稱是一個分層的結構,用斜線“/”作為分隔符。有兩種通配符可以在主題發布或訂閱時使用,即“#”和“+”。前者可以通配多層結構,而后者只能通配一層結構。例如一個topic:“a/b/c”,則“a/+/c”和“a/#”都可以和它相等。發布不支持模糊匹配,必須是確定的主題。
1.4 遺屬
當一個客戶端斷開連接,但卻仍希望客戶端可以發送它指定的消息,且該消息和普通消息的結構相同,可以通過設置該位置并填入和信息相關的內容即可。
2 MQTT技術在隧道綜合監控系統中的應用
2.1 確定信息交換格式
MQTT保證信息傳輸過程中的可用性和可靠性,但是并不涉及信息本身的內容解析。因此子系統間在進行信息交互時,首要任務是確定信息交互的格式。目前,有大量的信息交互格式可供選擇,比較常見的是二進制數據、簡單文本格式化數據、XML和JSON等數據格式。可根據不同的應用環境選擇數據交換的格式。
為滿足嵌入式的應用需求,可以選擇二進制的消息格式,如C語言中對應的結構體。但是二進制交換格式在擴展性上比較差,如果需要增加消息內容來滿足新的應用要求,需要較多的編程和實現。相較而言,XML和JSON是比較好的信息交換格式,可以實用于C/S到B/S的眾多應用環境。特別是JSON,在越來越流行的B/S環境中有著先天的優勢。
2.2 規劃消息分類
MQTT采用訂閱、發布的方式。發布者并不關心消息的接收者。另外,MQTT還可以方便地進行一對多的消息廣播。在一個復雜的系統中,需要對消息的分類進行良好的規劃和組織來滿足靈活的應用要求。
消息訂閱的主題是一個通過“/”符號分割所形成的樹形結構。發布方向固定的一個或者是多個主題發布消息,接收方通過通配符或訂閱列表可一次性地訂閱一個或者是多個主題。良好的分類可以使得不同信息間的關系清晰,便于管理與控制。
2.3 安全規劃
MQTT提供了多個層次的安全特性:(1)網絡層:可以通過拉專線或者使用VPN來連接設備與MQTT代理,以提高網絡傳輸的安全性。(2)傳輸層:傳輸層使用TLS加密是確保安全的一個好手段,可以防止中間人攻擊(Man-In-The-MiddleAttack)。客戶端證書不但可以作為設備的身份憑證,還可以用來驗證設備。(3)應用層:MQTT還提供客戶標識(ClientIdentifier)以及用戶名密碼,在應用層驗證設備。
雖然MQTT提供了多重安全設計,不過也不能絕對保障數據的安全。所以在設計階段就應把安全放在最高優先等級。
3 結束語
本文提出的電力隧道綜合監控系統利用MQTT技術解決了傳統通信協議的兩個應用弊端,即通信邏輯與業務邏輯綁定與C/S模型中通信都是針對一類特定的應用。因此本文提出的基于消息隊列技術的電力隧道綜合監控系統可行有效,有助于電力系統安全、穩定地運行。
參考文獻:
[1]馬巍,武欣嶸,鄭翔,等.RabbotMQ實時監控系統中的應用[J].軍事通信技術,2017,38(1):82-85.
[2]鐘良驥,桂學勤,廖海斌,等.基于MQTT的物聯網平臺設計與分析[J].鄖陽師范高等專科學校學報,2014(06):52-55.
[3]姚丹,謝雪松,楊建軍,等.基于MQTT協議的物聯網通信系統的研究與實現[J].信息通信,2016(03):33-35.
[4]消息隊列MQ技術的介紹和原理[EB/OL].2010-03-14.endprint