MQTT

学习 / 2023-04-06

MQTT

MQTT协议中文版

1、MQTT是什么?

2、MQTT有什么特点?

3、MQTT应该怎么使用?

以下摘自百度百科

1、什么是MQTT

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件

IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿兰·尼普于1999年撰写了该协议的第一个版本。

该协议的可用性取决于该协议的使用环境。IBM公司在2013年就向结构化资讯标准促进组织提交了 MQTT 3.1 版规范,并附有相关章程,以确保只能对规范进行少量更改。MQTT-SN是针对非 TCP/IP 网络上的嵌入式设备主要协议的变种,与此类似的还有ZigBee协议。

纵观行业的发展历程,“MQTT”中的“MQ” 是来自于IBM的MQ系列消息队列产品线。然而通常队列本身不需要作为标准功能来支持。

可选协议包含了高级消息队列协议,面向文本的消息传递协议,互联网工程任务组约束应用协议,可扩展消息与存在协议,数据分发服务,OPC UA以及web 应用程序消息传递协议。

2、MQTT有什么特点

MQTT协议主要是在一些大型计算能力有限,工作在地宽带、网络传输不可靠的设备与设备间的通讯而设计的协议,主要有一下特点:

轻量、高效的:MQTT 实施需要最少的代码,在操作中消耗的功率非常少。该协议还具有支持与大量物联网设备通信的内置功能。因此, MQTT 协议可以来连接数百万台此类设备。

可靠:许多IoT设备都是使用低带宽、高延迟的不可靠的蜂窝网络连接。MQTT使用TCP/IP协议提供网络链接的。MQTT具有内置功能,可减少IoT设备重新链接到服务器所需的时间。还可以根据不同的场景使用它所定义的三中不同的服务质量级别(最多一次:0、至少一次:1、恰好一次:2 )。

支持性广:MQTT协议的实施可以用PHP,JAVA,Python,C,C#等系统语言去实现链接,因此开发人员可以使用自己熟悉的语言去实现它的功能。

3、MQTT应该怎么使用

以下摘自百度百科

一、MQTT的原理是什么

MQTT是基于发布/订阅模型工作的。传统的网络通信中,客户端和服务端是直接相互通信的。客户端想服务器发送请求资源或数据,然后,服务器将处理并响应。但是,MQTT使用发布/订阅模式将消息发送者与消息接受者解藕。

所以,在客户端和服务端之间还有第三个组件称为消息代理,是将处理发布者和订阅者之间的通信。代理的工作是筛选所有来自发布者传入的信息,并将他们正确的分发给订阅者。代理将发布者和订阅者进行解藕:

空间解耦

发布者和订阅者不知道彼此的网络位置,也不交换IP地址或端口号等信息。

时间解藕

发布者和订阅者不会同时运行或具有网络连接。

同步解藕

发布者和订阅者都可以发送或接受信息。而不会互相打扰。例如,订阅者不必等待发布者发送消息。

二、MQTT的组成部分

MQTT客户端

MQTT客户端是从服务器到运行MQTT库的任何设备。客户端正在发送消息,他就是发布者;如果它正在接受消息,它就是接收者。基本上任何通过网络使用MQTT进行通信的设备都是MQTT客户端设备。

MQTT代理

MQTT代理是协调不同客户端之间消息的后端系统。代理的职责包括接受和筛选消息、识别订阅每条消息的客户端,以及向他们发送消息。它还负责其他任务,例如:

  • 授权 MQTT 客户端以及对其进行身份验证

  • 将消息传递给其他系统以进行进一步分析

  • 处理错过的消息和客户端会话

MQTT 连接

客户端和代理开始使用 MQTT 连接进行通信。客户端通过向 MQTT 代理发送 CONNECT 消息来启动连接。代理通过响应 CONNACK 消息来确认已建立连接。MQTT 客户端和代理都需要 TCP/IP 堆栈进行通信。客户端从不相互联系,它们只与代理联系。

三、MQTT的工作原理;

简述MQTT的工作原理。
  1. MQTT客户端与MQTT代理建立连接。
  2. 链接后,客户端可以发布消息、订阅特定消息或者同时执行这两项操作。
  3. MQTT代理受到一条消息后,会将其转发给对此感兴趣的订阅者(推送主题)

MQTT的详情:

MQTT主题

“主题”一词是指MQTT代理用于为MQTT客户端筛选消息的关键字。采用分层组织,类似文件或者文件夹目录。例如,考虑在多层房屋中运行的智能家居系统,每层都有不同的智能设备。在这种情况下,MQTT 代理可以将主题组织为:

ourhome/groundfloor/livingroom/light

ourhome/firstfloor/kitchen/temperature

MQTT publish

MQTT 客户端以字节格式发布包含主题和数据的消息。客户端确定数据格式,例如文本数据、二进制数据、XML 或 JSON 文件。例如,智能家居系统中的灯可能会针对主题 livingroom/light 发布消息 on

MQTT subscribe

MQTT 客户端向 MQTT 代理发送 SUBSCRIBE 消息,以接收有关感兴趣主题的消息。此消息包含唯一标识符和订阅列表。例如,您手机上的智能家居应用程序想要显示您家中有多少灯亮着。它将订阅主题 light 并增加所有 on 消息的计数器。