工控软件开发
级别: 正式会员
精华主题: 0
发帖数量: 42 个
工控威望: 89 点
下载积分: 504 分
在线时间: 4(小时)
注册时间: 2023-04-06
最后登录: 2024-06-04
查看工控软件开发的 主题 / 回贴
楼主  发表于: 2024-06-04 22:37
ERP接口开发对接,HTTP API,websocket,SDK鉴权加密参数解密

物联网MQTT通讯,主题订阅,发送消息



什么是 MQTT?
MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。

MQTT有多个版本,其中3.0、3.1.1和5.0是比较常见的版本。以下是它们之间的主要区别:

MQTT 3.0:

这是MQTT协议的早期版本,奠定了MQTT的基础。
它具有基本的发布/订阅功能,但相对于后续版本,其功能较为有限。
MQTT 3.1.1:

在3.0版本的基础上进行了改进和优化。
增加了对QoS(服务质量)级别的支持,提供了消息传递的可靠性保证。
引入了持久化连接,减少了网络连接的开销。
提供了更好的跨平台支持,适用于各种设备和操作系统。
MQTT 5.0:

这是MQTT协议的最新版本,对之前的版本进行了大量的改进和扩展。
引入了新的特性,如共享订阅(Shared Subscriptions),增强了负载均衡和容错能力。
增加了对消息属性的支持,使得消息更加灵活和可扩展。
提供了更好的安全性,支持TLS/SSL加密和身份验证。
改进了QoS级别的实现,提供了更高的消息传递可靠性。
总结:从MQTT 3.0到3.1.1再到5.0,MQTT协议在功能、性能、安全性和可扩展性方面不断进行改进和扩展,以满足物联网应用的需求。随着版本的升级,MQTT协议逐渐变得更加成熟和完善,为物联网应用提供了更强大的支持。

为什么 MQTT 是适用于物联网的最佳协议?
MQTT 所具有的适用于物联网特定需求的特点和功能,使其成为物联网领域最佳的协议之一。它的主要特点包括:

轻量级:物联网设备通常在处理能力、内存和能耗方面受到限制。MQTT 开销低、报文小的特点使其非常适合这些设备,因为它消耗更少的资源,即使在有限的能力下也能实现高效的通信。
可靠:物联网网络常常面临高延迟或连接不稳定的情况。MQTT 支持多种 QoS 等级、会话感知和持久连接,即使在困难的条件下也能保证消息的可靠传递,使其非常适合物联网应用。
安全通信:安全对于物联网网络至关重要,因为其经常涉及敏感数据的传输。为确保数据在传输过程中的机密性,MQTT 提供传输层安全(TLS)和安全套接层(SSL)加密功能。此外,MQTT 还通过用户名/密码凭证或客户端证书提供身份验证和授权机制,以保护网络及其资源的访问。
双向通信:MQTT 的发布-订阅模式为设备之间提供了无缝的双向通信方式。客户端既可以向主题发布消息,也可以订阅接收特定主题上的消息,从而实现了物联网生态系统中的高效数据交换,而无需直接将设备耦合在一起。这种模式也简化了新设备的集成,同时保证了系统易于扩展。
连续、有状态的会话:MQTT 提供了客户端与 Broker 之间保持有状态会话的能力,这使得系统即使在断开连接后也能记住订阅和未传递的消息。此外,客户端还可以在建立连接时指定一个保活间隔,这会促使 Broker 定期检查连接状态。如果连接中断,Broker 会储存未传递的消息(根据 QoS 级别确定),并在客户端重新连接时尝试传递它们。这个特性保证了通信的可靠性,降低了因间断性连接而导致数据丢失的风险。
大规模物联网设备支持:物联网系统往往涉及大量设备,需要一种能够处理大规模部署的协议。MQTT 的轻量级特性、低带宽消耗和对资源的高效利用使其成为大规模物联网应用的理想选择。通过采用发布-订阅模式,MQTT 实现了发送者和接收者的解耦,从而有效地减少了网络流量和资源使用。此外,协议对不同 QoS 等级的支持使得消息传递可以根据需求进行定制,确保在各种场景下获得最佳的性能表现。
语言支持:物联网系统包含使用各种编程语言开发的设备和应用。MQTT 具有广泛的语言支持,使其能够轻松与多个平台和技术进行集成,从而实现了物联网生态系统中的无缝通信和互操作性。您可以阅读我们的 MQTT 客户端编程系列文章,学习如何在 PHP、Node.js、Python、Golang、Node.js 等编程语言中使用 MQTT。
MQTT 的工作原理
要了解 MQTT 的工作原理,首先需要掌握以下几个概念:MQTT 客户端、MQTT Broker、发布-订阅模式、主题、QoS。

MQTT 客户端

任何运行 MQTT 客户端库的应用或设备都是 MQTT 客户端。例如,使用 MQTT 的即时通讯应用是客户端,使用 MQTT 上报数据的各种传感器是客户端,各种 MQTT 测试工具也是客户端。

MQTT Broker

MQTT Broker 是负责处理客户端请求的关键组件,包括建立连接、断开连接、订阅和取消订阅等操作,同时还负责消息的转发。一个高效强大的 MQTT Broker 能够轻松应对海量连接和百万级消息吞吐量,从而帮助物联网服务提供商专注于业务发展,快速构建可靠的 MQTT 应用。

关于 MQTT Broker 的更多详情,请参阅文章 2023 年最全面的 MQTT Broker 比较指南。

发布-订阅模式

发布-订阅模式与客户端-服务器模式的不同之处在于,它将发送消息的客户端(发布者)和接收消息的客户端(订阅者)进行了解耦。发布者和订阅者之间无需建立直接连接,而是通过 MQTT Broker 来负责消息的路由和分发。

下图展示了 MQTT 发布/订阅过程。温度传感器作为客户端连接到 MQTT Broker,并通过发布操作将温度数据发布到一个特定主题(例如 Temperature)。MQTT Broker 接收到该消息后会负责将其转发给订阅了相应主题(Temperature)的订阅者客户端。

主题

MQTT 协议根据主题来转发消息。主题通过 / 来区分层级,类似于 URL 路径,例如:

chat/room/1
sensor/10/temperature
sensor/+/temperature
MQTT 主题支持以下两种通配符:+ 和 #。

+:表示单层通配符,例如 a/+ 匹配 a/x 或 a/y。
#:表示多层通配符,例如 a/# 匹配 a/x、a/b/c/d。
注意:通配符主题只能用于订阅,不能用于发布。

QoS

MQTT 提供了三种服务质量(QoS),在不同网络环境下保证消息的可靠性。

QoS 0:消息最多传送一次。如果当前客户端不可用,它将丢失这条消息。
QoS 1:消息至少传送一次。
QoS 2:消息只传送一次。
MQTT 的工作流程
客户端使用 TCP/IP 协议与 Broker 建立连接,可以选择使用 TLS/SSL 加密来实现安全通信。客户端提供认证信息,并指定会话类型(Clean Session 或 Persistent Session)。
客户端既可以向特定主题发布消息,也可以订阅主题以接收消息。当客户端发布消息时,它会将消息发送给 MQTT Broker;而当客户端订阅消息时,它会接收与订阅主题相关的消息。
MQTT Broker 接收发布的消息,并将这些消息转发给订阅了对应主题的客户端。它根据 QoS 等级确保消息可靠传递,并根据会话类型为断开连接的客户端存储消息。
我的博客,你可以先看一下我的文章和以前帮别人解决的一些技术问题。
专注VB编程开发20年的博客_CSDN博客-作品成品 开发的一些软件,股票分析理财投资,自动编程 源码库领域博主

https://blog.csdn.net/xiaoyao961
雪山飞狐
级别: 网络英雄
精华主题: 0
发帖数量: 11238 个
工控威望: 13593 点
下载积分: 32546 分
在线时间: 876(小时)
注册时间: 2019-06-05
最后登录: 2024-09-19
查看雪山飞狐的 主题 / 回贴
1楼  发表于: 2024-06-05 07:33
感谢分享一下。