当前位置: 首页 > 科技观察

消息队列遥测传输(MQTT)中的数据流是如何工作的

时间:2023-03-18 01:10:23 科技观察

译者|录音也不总是可靠的。但是,如果机器有传感器收集数据并能够与其他机器通信呢?如果有某种协议允许医疗和个人设备、电器和其他电子设备相互发送和接收数据会怎样?这样的系统意味着,例如,人们可以准确地跟踪他们库存中的物品。或者他们商店中需要更换、补充或修理的零件或物品。这意味着随着设备中的传感器收集数据,数据更加准确可靠。随着第四次工业革命的到来,这个系统成为可能。它带来了物联网、机器人技术、人工智能和其他新兴的颠覆性技术。1.MQTT概述智能电视、智能手表和其他可以相互发送和接收信息的“智能”设备和小工具现在与网站上的cookie一样普遍。这些可以通过传感器收集数据并将其发送到其他设备的智能设备称为物联网设备。物联网设备如何做到这一点?它们相互通信的能力是通过称为消息队列遥测传输(MQTT)的消息传递技术实现的。它是一种基于IP的轻量级消息传递系统,可为物联网提供支持。它使控制器、传感器和其他小工具或设备能够相互“交谈”。此外,它还支持不总是在线的设备,例如配备微控制器的自动化设备。MQTT消息传递协议由IBM公司的AndyClark和Eurotech公司的ArlenNipper于1999年创建。它最初是一种主要用于石油和天然气行业的专有协议,后来成为一种开源协议。MQTT设计用于低带宽网络。此功能非常适合机器对机器通信和数字足迹较小的物联网设备。它不仅适用于低带宽网络,也适用于高延迟环境。MQTT用于制造、医疗保健、电信、汽车和其他行业。它现在被公认为物联网消息传递的标准。消息传递系统使用MQTT服务器按照发布者/订阅者原则运行。发送方和接收方都不需要直接相互连接。源数据由订阅接收此类数据的客户端发布和接收。发布者和订阅者之间的关系是这样的:发布者(数据源)传输关于主题的数据或消息。客户端订阅主题以接收消息。服务器将发布者与订阅者进行匹配。如果未找到匹配项,则丢弃该消息。这种安排类似于收音机或电视广播——您只能在您调谐到的频道上观看传输。在MQTT中,数据源“发布”数据,接收者获取数据,因为它们是注册订阅者。2.MQTT架构和数据传输协议MQTT旨在成为一种简单的轻量级设备发布/订阅协议,由两个主要组件组成:代理/服务器和客户端。1.MQTTBroker/Server一台运行着从数据源或发布者接收消息的软件的计算机被称为broker或server。服务器/代理然后将数据从源发送到其正确的目的地,订阅者。该软件可以使用专有或开源软件、现场台式计算机或RaspberryPi安装在基于云的代理/服务器上。但是,如果您正在从事可以通过互联网控制的物联网项目,那么使用基于云的服务器更为合适。一个服务器可以管理多达数千个同时连接的MQTT客户端,具体取决于实施方式。因此,在选择MQTT服务器时,可扩展性和集成性是必不可少的考虑因素。服务器除了接收和发送消息外,还有其他能力,例如:安全需要保护MQTT。它应该要求其客户提供强大的用户名和密码。此外,应使用安全套接字层(SSL)和传输层安全性(TLS)对传输控制协议连接进行加密。这些安全措施应确保消息在传输过程中的安全和隐私。服务质量(QoS)级别服务质量(QoS)级别是消息源和预期接收者之间的协议。该协议定义了某些消息的传递保证。MQ遥测传输中存在三个级别的服务质量(QoS):(1)最多一次(0)在该级别,无法保证交付。此级别最多保证是“尽力而为”交付。该消息既不存储也不重新发送,并且收件人不发送接收确认。当Internet可靠并且需要快速传送数据时,使用此服务质量级别。(2)至少一次(1)保证消息至少被传递给订阅者一次。发布者存储消息,直到接收者发送接收确认。服务器还确认发布者发送的消息,让客户端知道消息已收到。如果客户端没有收到确认,消息将被再次发送。确认告诉订阅者,与客户端订阅的主题相关的所有消息都已发布。虽然可以保证在此级别收到消息,但如果未按时收到回执,则可能会出现重复消息。如果客户端需要接收订阅主题的所有消息,则使用级别2。但是,许多商业服务器不支持级别2,因为它相对较慢且资源密集。(3)ExactlyOnce(2)级别2是消息队列遥测传输(MQTT)中最高的服务质量级别。每条消息保证被订阅者接收一次。它也是三个服务质量(QoS)级别中最安全但最慢的。级别1可能导致消息重复,级别2保证数据只被接收一次。这种保证由发布者和订阅者之间的两个(至少两个)“请求和响应”流提供,这表明已收到消息。一旦订阅者确认收到消息,发布者就可以丢弃数据包。如果发布者没有收到订阅者的“消息收到”信号,消息将继续发送,直到消息被确认。高QoS级别更可靠,但涉及高带宽要求和更高的延迟,这会减慢数据传输速度。当不需要快速传递消息并且重复的消息会导致问题时使用此级别。在QoS方面,消息传递有两个方面:从发布者到服务器和从服务器到订阅者。每次将数据发送到服务器时,数据或消息的来源/发布者都会设置数据的QoS级别。服务器然后根据客户端的QoS级别(在订阅过程开始时设置)将数据发送给订阅者客户端。如果客户端的QoS设置低于发布客户端,则服务器将以较低的QoS发送数据。此功能允许MQTT提供额外的消息服务质量,确保根据客户端的请求发送数据。存储和转发某些MQTT消息可以存储并转发给订阅者,即使订阅者客户端无法接收消息。这些消息称为客户可以订阅的“存储和转发主题”。订阅存储转发功能的客户端可以接收存储的数据,而订阅者可以接收消息。为了使其有效工作,MQTT服务器需要执行以下操作:(1)跟踪每个订阅者的客户端ID。(2)跟踪成功发送给每个客户端的最后一条消息的标识符。MQTT代理会自动删除过期消息,除非配置为保留它们。代理存储配置的主题,以防将来的客户订阅它们。然后,这些消息将按照最初收到消息的顺序发送给订阅者。2.MQTT客户端MQTT客户端可以是发布者和订阅者。标签“发布者”和“订阅者”指的是发布消息或订阅接收消息的客户端。在MQTT中,发布/订阅功能可以在同一个客户端中实现。客户端可以在通信阶段执行不同的功能,例如订阅、取消订阅、发布、连接和断开连接。此外,这些客户端可以是任何设备或应用程序,从台式计算机到配备各种完整承诺的基于云的代理/服务器。客户端可以是具有最少库和有限资源的紧凑型设备,并使用无线网络连接。可以这么说,任何能够在TCP/IP堆栈上运行MQTT的设备都可以是客户端。MQTT的实现简单明了,这些特性使MQTT非常适合使用最少资源的小型设备。3.结论MQTT是一种使智能电器、智能小工具和其他物联网(IoT)设备能够与其他机器或系统“对话”并共享信息的技术。这种消息传递技术使智能手机、冰箱、可穿戴设备、恒温器、远程传感器和其他智能设备能够相互交换数据。MQTT中的数据流在服务器/代理的帮助下通过一个简单的发布者/订阅者系统工作。发布者通过服务器传输关于某个主题的数据;服务器然后将数据传输给订阅该主题的客户端。原文链接:https://www.smartdatacollective.com/how-data-flow-works-in-mq-telemetry-transport-mqtt/

猜你喜欢