沃卡惠移动端logo

沃卡惠  行业资讯

资讯详情

数据流如何在MQ遥测传输 (MQTT) 中工作

2022-08-31 09:11:534636

在Internet和计算机上发现的由人类创建的数据并不总是准确的。人工打字、扫描、拍照或录音并不总是可靠的。但是,如果机器上有传感器可以收集数据并能够与其他机器通信呢?如果有某种协议可以让医疗和个人小工具、电器和其他电子设备相互发送和接收数据怎么办?

例如,这样的系统意味着人们可以准确地跟踪他们库存中的物品。或者他们店里的哪些零件或物品需要更换、补充或修理。由于设备中的传感器收集数据,这意味着数据更准确、更可靠。

随着第四次工业革命的到来,这个系统成为可能。它带来了物联网(IoT)、机器人技术、人工智能和其他新兴的颠覆性技术。

数据流如何在MQ遥测传输中工作

MQTT概述

可以相互发送和接收消息的智能电视、智能手表和其他“智能”设备和小工具现在与网站上的cookie一样普遍。这些可以通过传感器收集数据并将其发送到其他设备的智能设备统称为物联网(IoT)。

设备如何做到这一点?它们相互通信的能力是通过一种称为消息队列遥测传输(MQTT)的消息传递技术实现的。它是一个基于IP的轻量级消息传递系统,为物联网提供支持。它使控制器、传感器和其他小工具或设备能够相互“对话”。此外,它支持并不总是在线的设备,例如配备微控制器的自动化设备。

MQTT消息传递协议由IBM的Andy Clark和Eurotech的Arlen Nipper于1999年创建。它最初是主要用于石油和天然气行业的专有协议,后来成为开源协议。MQTT设计用于在低带宽网络中工作。此特性非常适合数字足迹较小的机器对机器通信和物联网设备。它不仅适用于低带宽网络,也适用于高延迟环境。

MQTT用于各种行业,如制造、健康、电信、汽车等。它现在被公认为物联网消息传递的标准。该消息系统采用发布者/订阅者原则,使用MQTT服务器进行操作。发送者和接收者都不需要直接相互连接。

来自源的数据由订阅接收此类数据的客户发布和接收。发布者和订阅者的关系是这样的:

  • 发布者(数据源)在主题上传输数据或消息。
  • 客户端订阅一个主题来接收消息。
  • 服务器将发布者与订阅者进行匹配。
  • 如果未找到匹配项,则丢弃该消息。

这种安排类似于广播或电视广播——您只能从您调到的频道查看传输。在MQTT中,数据源“发布”数据,接收者获取数据,因为他们是注册订阅者。

MQTT架构及数据传输协议

MQTT旨在成为轻量级设备的简单发布/订阅协议,由两个主要组件组成:代理/服务器和客户端。

1.MQTT代理/服务器

运行从数据源或发布者接收消息的软件的计算机称为代理或服务器。然后,服务器/代理将数据从源发送到其正确的目的地,即订阅者。该软件可以使用专有或开源软件、现场桌面PC或Raspberry Pi安装在基于云的代理/服务器上。但是,如果您正在处理可以通过Internet控制的IoT项目,则使用基于云的服务器更合适。

服务器可以管理多达数千个同时连接的MQTT客户端,具体取决于实现。因此,在选择MQTT服务器时,可扩展性和集成性是必不可少的考虑因素。除了接收和发送消息之外,服务器还具有其他能力,例如:

  • 安全

需要保护MQTT。它应该要求其客户提供强大的用户名和密码。此外,传输控制协议连接应使用安全套接字层(SSL)和传输层安全性(TLS)进行加密。这些安全措施应确保消息在传输过程中的安全性和隐私性。

  • 服务质量(QoS)级别

服务质量(QoS)级别是消息源和预期接收者之间的协议。该协议定义了特定消息的传递保证。MQ遥测传输中有三个级别的QoS:

  • 最多一次(0)

在此级别,无法保证交付。这个级别最多保证的是“尽力而为”的交付。该消息既不存储也不重新发送,并且收件人不发送接收确认。当Internet可靠且需要快速传送数据时,使用此服务质量级别。

  • 至少一次(1)

保证消息至少传递给订阅者一次。发布者存储消息,直到接收者发送接收确认。服务器还确认发布者发送的消息,让客户端知道消息已收到。如果客户端没有收到确认,该消息将再次发送。

确认告诉订阅者客户端所有与客户端订阅的主题有关的消息都已发布。虽然在此级别可以保证接收到的消息,但如果未按时收到接收确认,则可能会发生重复消息。

如果客户端需要接收订阅主题的所有消息,则使用级别2。但是,许多商业服务器不支持2级,因为它相对较慢且占用资源。

  • 正好一次(2)

级别2是MQ遥测传输中的最高服务质量级别。每条消息都保证被订阅者接收一次。它也是三个QoS级别中最安全但最慢的一个。虽然级别1可能导致消息重复,但级别2保证只接收一次数据。

此保证由发布者和订阅者之间的两个(至少)“请求和响应”流提供,这表明消息已被接收。一旦订阅者确认收到消息,发布者就可以丢弃数据包。如果发布者没有收到来自订阅者的“收到消息”信号,则消息将继续发送,直到消息被确认。

高QoS级别更可靠,但涉及高带宽要求和更高延迟,这会减慢数据传输速度。当不需要快速消息传递并且重复消息可能导致问题时,使用此级别。

就QoS而言,消息传递有两个方面:从发布者到服务器以及从服务器到订阅者。每次将数据发送到服务器时,数据或消息的来源/发布者都会设置数据的QoS级别。然后,服务器根据客户端的QoS级别(在订阅过程开始时设置)将数据发送到订阅者客户端。如果客户端的QoS设置低于发布客户端,则服务器将发送QoS较低的数据。

此特性允许MQTT提供附加的消息传递服务质量,确保根据客户端的要求发送数据。

  • 存储和转发

即使订阅者客户端无法接收消息,某些MQTT消息也可以存储并转发给订阅者。这些消息称为客户端可以订阅的“存储和转发主题”。当订阅者可以接收消息时,订阅了存储和转发功能的客户端可以接收存储的数据。

要使此功能有效运行,MQTT服务器需要执行以下操作:

  • 跟踪每个订阅者的客户ID
  • 跟踪成功发送到每个客户端的最后一条消息的标识符。

MQTT代理会自动删除过期消息,除非配置为保留它们。代理存储配置的主题,以防将来的客户订阅它们。然后,这些消息将按照最初接收消息的顺序传递给订阅者。

2.MQTT客户端

MQTT客户端可以是发布者和订阅者。标签“发布者”和“订阅者”指的是发布消息或订阅接收消息的客户端。在MQTT中,发布/订阅功能可以在同一个客户端中实现。客户端可以在通信阶段执行不同的功能,如订阅、取消订阅、发布、连接和断开连接。

此外,这些客户端可以是任何设备或应用程序,从微型计算机到配备各种花里胡哨的完全承诺的基于云的代理/服务器。客户端可以是具有最小库和有限资源的紧凑型设备,并使用无线网络连接。

可以这么说,任何能够通过TCP/IP堆栈运行MQTT的设备都可以成为客户端。MQTT的实现是流线型和直接的,这些特性使MQTT非常适合使用最少资源的小型设备。

结论

消息队列遥测传输(MQTT)是一种使智能家电、智能小工具和其他物联网(IoT)设备“对话”并与其他机器或系统共享信息的技术。这种消息传递技术使您的智能手机、冰箱、可穿戴设备、恒温器、远程传感器和其他智能小工具相互交换数据。

MQTT中的数据流在服务器/代理的帮助下通过简单的发布者/订阅者系统工作。发布者通过服务器传输有关主题的数据;然后服务器将数据传输到订阅该主题的客户端。