张丽+胡常胜+李海峰
摘 要:文章通过利用消息列队的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