MQTT: The Standard for IoT Messaging
开场白
大概是这么个背景
比如小米智能家居目前是这么个流程:
-
物联网设备通过家里的wifi连接到外网服务器
-
在外网通过米家app控制就可以家里的物联网设备
其中服务器,app,物联网设备是通过MQTT协议进行消息传递的:
设备 | MQTT角色 |
---|---|
外网服务器 | MQTT Broker |
物联网设备 | MQTT Client/Publisher |
米家app | MQTT Client/Subscriber |
MQTT协议基础篇 将介绍MQTT 的基本概念(发布/订阅、客户端/代理)和基本功能(连接、发布、订阅),然后介绍MQTT协议的一些特征,包括:Quality of Service, Retained Messages, Persistent Session, Last Will and Testament, Keep Alive
安全性是 MQTT协议中的比较重要的部分,内容也比较多,将在后续的MQTT协议安全篇中介绍。
MQTT介绍
MQTT协议的官方介绍如下:
“MQTT is a Client Server publish/subscribe messaging transport protocol. It is light weight, open, simple, and designed so as to be easy to implement. These characteristics make it ideal for use in many situations, including constrained environments such as for communication in Machine to Machine (M2M) and Internet of Things (IoT) contexts where a small code footprint is required and/or network bandwidth is at a premium.“
Citation from the official MQTT 3.1.1 specification
MQTT 是客户端服务器发布/订阅消息传输协议。 具有轻量、开放、简单、易于实现等特性。这些特性使其非常适合在许多情况下使用,包括受限环境,例如在机器对机器 (M2M) 和物联网 (IoT) 环境中需要少量代码占用空间或网络带宽非常宝贵的环境中的通信。
值得一提的是,与 HTTP 等协议相比,MQTT是一种二进制协议,因此它在传输数据方面表现得更加出色。
历史
MQTT 协议由 Andy Stanford-Clark (IBM) 和 Arlen Nipper (Arcom/Cirrus Link) 于1999 年发明。他们需要一种通过卫星连接石油管道的协议,以最大限度地减少电池损耗和带宽。两位发明者为未来的协议规定了以下几个要求:
- 实现简单 - Simple implementation
- 保证数据的服务质量 - Quality of Service data delivery
- 轻量级/高效利用带宽 - Lightweight and bandwidth efficient
- 数据未知 - Data agnostic
- 持续的会话意识 - Continuous session awareness
目前这些目标仍然是 MQTT 的核心。 但是,该协议的主要重点已从专有嵌入式系统转变为开放物联网 (IoT) 应用。这种关注点的转变对首字母缩略词 MQTT 所代表的含义造成了很多混淆。简单讲 MQTT 不再被视为首字母缩略词,MQTT 只是作为协议的名称。
MQTT的全称是 MQ Telemetry Transport (MQ 遥测传输)
MQ是指 MQ 系列,IBM 为支持 MQ 遥测传输而开发的产品。当Andy和Arlen在 1999 年创建他们的协议时,他们以 IBM 产品命名。许多文章错误地将 MQTT 认为是一种消息队列(Message Queue)协议。显然,并不是。MQTT 不是传统的消息排队解决方案(尽管在某些情况下可以对消息进行排队)。
在接下来的十年里,IBM 在内部使用了该协议,直到 2010 年他们发布了 MQTT 3.1 作为免版税版本。从那时起,所有人可以实现并使用该协议。
OASIS 标准和当前版本
OASIS 是一个旨在推进标准的开放组织。在MQTT协议发布大约 3 年后, OASIS 宣布将对其进行标准化。标准化过程耗时约1年。2014 年 10 月 29 日,MQTT 成为正式批准的 OASIS 标准。 从 3.1 到 3.1.1 的次要版本更改表明对以前的版本所做的更改很少。
2019 年 3 月,OASIS 批准了新的 MQTT 5 规范。这个新的 MQTT 版本为 MQTT 引入了新功能,这些功能是部署在云平台上的 IoT 应用程序所需的。(部署在云平台上的 IoT 应用程序需要更高的可靠性和错误处理,以实现关键任务消息传递功能。)
TaQini’s Blog
欢迎关注我的博客,第一时间发布后续文章
TaQini’s Blog