欢迎大家来到IT世界,在知识的湖畔探索吧!
2017年最热门的技术莫过于:人工智能,区块链和物联网。笔者今天就花三分钟给大家介绍一个物联网中非常的基础一个常用的流行协议,MQTT。
MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。
为什么使用MQTT 协议?
MQTT(英语全称,Message Queue Telemetry Transport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(Internet of Thing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:
-
特别适合于网络代价昂贵,带宽低、不可靠的环境。
-
能在处理器和内存资源有限的嵌入式设备中运行。
-
使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。
-
使用 TCP/IP 提供网络连接。
-
提供Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
对消息中间件,估计大家不得不关心的就是消息的可靠性,也就是消息的发布服务质量,可喜的是,MQTT支持三种消息发布服务质量(QoS):
-
“至多一次”(QoS==0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
-
“至少一次”(QoS==1),确保消息到达,但消息重复可能会发生。
-
“只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
协议规范的版本
MQTT的协议最新的三个版本是:3.1.1,3.1.0和5.0的协议。
-
3.1.0的规范如下
http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
-
3.1.1的规范如下
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718029
-
5.0 的规范如下
http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
其中5.0还只是一个提案(2017年7月13日发布的一个草稿版的提案),所以本篇文章暂时不涉及MQTT 5.0的协议,考虑到目前主流和成熟的MQTT协议的应用都是MQTT 3.1.1的协议,所以笔者还是以MQTT 3.1.1的协议为基准,给大家分享,只要这个会了,其他的自然不在话下。需要注意的是,MQTT 3.1.0和3.1.1 规范,还是有小部分的区别的。比如可变头部中,在3.1.0的规范中,其关键字是,“MQISdP”。
支持MQTT协议消息中间件产品?
目前有很多的MQTT消息中间件服务器,如下,都是MQTT协议的服务器端的实现。
-
IBM Websphere
-
MQ Telemetry
-
IBM MessageSight
-
Mosquitto
-
Eclipse Paho
-
emqttd Xively
-
m2m.io
-
webMethods
-
Nirvana Messaging
-
RabbitMQ
-
Apache ActiveMQ
-
Apache Apollo
-
Moquette
-
HiveMQ
-
Mosca
-
Litmus Automation Loop
-
JoramMQ
-
ThingMQ
-
VerneMQ
支持一对多的消息订阅
MQTT协议,支持一对多的基于消息主题(Topic)的消息订阅,也就是一个MQTT的客户端,发送一条特定主题的消息,
能同时支持多个订阅者同时订阅。
如下图所示意,笔记本和手机都订阅了消息主题为temperature的消息,当温度传感器发布了temperature的消息(当前温度为21 C), 笔记本和手机都会受到温度传感器发布的温度。
MQTT客户端的语言支持
目前市面上的主流语言都支持。
-
Java
-
Javascript
-
C/C++
-
Python
-
Ruby
-
Objective-C
…
如果您对MQTT协议感兴趣,请关注我的CSDN博客,chancein007。
如果您对MQTT有任何的疑问,请关注我的今日头条自媒体号,并在文章后面留言,我将尽可能第一时间回复。
【部分图片来源于网络,如果侵权,请与我联系删除】
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34681.html