由IT的OA转向物联网已经两年,回过头来在看看相关的物联网协议,发现自己对这些协议还有这很多很好的功能没有掌握,之前只求能用,现在重新梳理一遍,总结一下基础内容,共读共享。
首先,我们将探讨 MQTT 的基本概念(发布/订阅、客户端/代理)和基本功能(连接、发布、订阅)。然后,我们将看看功能:服务质量,保留的消息,持久会话,最后遗嘱和遗嘱,保持活力等等。
在基础系列中找不到的是安全信息。安全性是 MQTT 中的一个大话题。事实上,这是一个如此重要的主题,以至于我们开发了一个关于 MQTT 和安全性的完全独立的系列来遵循本系列。
“MQTT 是一个客户端服务器发布/订阅消息传递传输协议。它重量轻,开放,简单,设计易于实施。这些特性使其非常适合在许多情况下使用,包括受限环境,例如机器对机器(M2M)和物联网(IoT)环境中的通信,在这些环境中,需要较小的代码占用空间和/或网络带宽非常宝贵。
[引用自官方 MQTT 3.1.1 规范]
MQTT 规范的摘要很好地描述了 MQTT 的全部内容。它是一种非常轻量级的二进制协议,并且由于其最小的数据包开销,与HTTP等协议相比,MQTT在通过网络传输数据时表现出色。该协议的另一个重要方面是MQTT在客户端非常容易实现。易用性是 MQTT 开发中的一个关键问题,使其成为当今资源有限的受限设备的完美选择。
MQTT 协议由 Andy Stanford-Clark (IBM) 和 Arlen Nipper(Arcom,现为 Cirrus Link)于 1999 年发明。他们需要一种将电池损耗降至最低、带宽降至最低的协议,以便通过卫星与石油管道连接。两位发明者为未来的协议指定了几个要求:
简单的实现
服务质量数据交付
轻量级和带宽效率
数据不可知
持续的会话意识
这些目标仍然是 MQTT 的核心。但是,该协议的主要关注点已从专有嵌入式系统转变为开放的物联网 (IoT) 用例。这种焦点的转移让人们对首字母缩写词 MQTT 的含义产生了很多困惑。简短的回答是MQTT 不再被视为首字母缩略词。MQTT 只是协议的名称。
更长的答案是前者的首字母缩写词代表MQ Telemetry Transport。
“MQ”是指 MQ 系列,这是 IBM 为支持 MQ 遥测传输而开发的产品。当 Andy 和 Arlen 在 1999 年创建他们的协议时,他们以 IBM 产品命名。许多来源错误地将 MQTT 标记为消息队列协议。那明显是错的。MQTT 不是传统的消息队列解决方案(尽管在某些情况下可以对消息进行队列,我们将在下一篇文章中详细讨论这一事实)。在接下来的十年里,IBM 在内部使用了该协议,直到 2010 年他们发布了 MQTT 3.1 作为免版税版本。从那时起,欢迎大家实施和使用该协议。
在最初发布大约 3 年后,宣布 MQTT 将在 OASIS 的翅膀下进行标准化,OASIS 是一个旨在推进标准的开放组织。AMQP、SAML 和 DocBook 只是之前发布的 OASIS 标准中的一小部分。标准化过程耗时约 1 年。2014 年 10 月 29 日,MQTT 成为官方批准的 OASIS 标准。从 3.1 到 3.1.1 的次要版本更改表明对先前版本的更改很少。
2019 年 3 月,OASIS 批准了新的 MQTT 5 规范。这个新的 MQTT 版本为 MQTT 引入了部署在云平台上的物联网应用程序所需的新功能,以及那些需要更高可靠性和错误处理以实现关键任务消息传递的功能。