当前物联网背景之下,国内出现了许多物联网开发平台,比如百度天工智能物联网平台,阿里Link物联网平台,腾讯QQ物联智能硬件开放平台等等。
这些平台应用到MQTT协议,那么MQTT协议是什么呢?
MQTT,英语全称:Message Queuing Telemetry Transport Protocol,即消息队列遥感传输协议的缩写。
MQTT是一种基于轻量级代理发布/订阅模式的消息传输协议,运行在TCP协议栈之上。
该协议提供有序、可靠、双向连接的网络连接保证,特别适合于带宽低、网络延迟高、网络通信不稳定等受限环境的消息分发,属于物联网消息传输当中一个标准传输协议。
在工作方式上该协议采用代理发布/订阅模式,实现了发布和订阅解耦,因此在该协议中存在三种角色:
代理服务器;
发布者客户端;
订阅者客户端。
发布者和订阅者互不干扰,也就是说发布者和订阅者互不知道对方的存在,它们只知道代理服务器。
代理服务器负责接收来自发布者的消息进行存储同时将消息再发送给订阅者,成为了发送者和订阅者之间的中介,同一个客户端可以即是发布者也可以是订阅者。
在消息传递上是通过“主题”方式实现:
“主题”附加在消息上的一个标签;
发布者客户端将“主题”和“消息”发送至代理服务器;
代理服务器将该消息转发至每一个订阅了该“主题”的订阅者客户端。
为确保消息能够完整送达,MQTT协议提供了三种服务质量等级。
等级为0,指发布者消息不要求应答回馈,也没有重发机制,这类消息可能会发生消息丢失或重复,取决于TCP协议提供的尽最大努力交互的数据包服务。
等级为1,指最少一次能确保消息送达,但消息重复可能会发生,发布者如果在指定时间内没有收到应答控制报文,发布者会重新发送消息。
等级为2,指仅一次,属于最高级别的服务质量,消息丢失和重复都是不可接受,确保仅一次发送或接收消息。
另外,MQTT协议利用保活机制在客户端设置LWT信息发送到代理服务器。
当客户端异常断开例如:电量耗尽、系统崩溃或者网络断开时,代理服务器检测到客户端离线后,就会发送保存在特定主题上的 LWT 信息,让其它订阅该主题的客户端知道该节点已经意外离线。
(文章来源:头条科技)