MQTT学习日志

MQTT是一种轻量、高效的物联网通信协议,支持发布/订阅模式,广泛应用于IoT领域。协议提供三种服务质量等级,确保不同场景下的消息可靠性。此外,MQTT允许长连接,保存会话信息,支持消息留存和遗言功能,以应对网络不稳定和离线场景。其设计原理包括解耦发布者和订阅者,通过主题过滤消息,并通过代理进行异步通信。
摘要由CSDN通过智能技术生成

MQTT是什么?

MQTT是一种通信协议,基于TCP/IP协议,广泛应用在物联网(IoT)领域.

MQTT的优点

  1. 轻量且高效:MQTT 客户端非常小,只需要最少的资源,因此可以在小型微控制器上使用。MQTT 消息头很小,可以优化网络带宽。
  2. MQTT 允许在设备到云和云到设备之间进行消息传递。这使得向一组事物广播消息变得容易。
  3. MQTT 可以扩展到与数百万物联网设备连接。
  4. 可靠的消息传递:消息传递的可靠性对于许多物联网用例来说非常重要。这就是为什么 MQTT 有3个定义的服务质量级别: 0-最多一次,1-至少一次,2-正好一次
  5. 对不可靠的网络的支持: 许多物联网设备通过不可靠的蜂窝网络连接。MQTT 对持久会话的支持减少了重新连接客户机与代理的时间。
  6. 安全性保障:MQTT 使得使用 TLS 加密消息和使用现代身份验证协议(如 OAuth)对客户端进行身份验证变得很容易。

MQTT的设计原理

MQTT采取发布/订阅模式,发布者和订阅者不像C/S模式中进行直接通信,两者之间的通信通过第三方代理,如下图所示:

 MQTT关键功能

MQTT通过在空间上解耦发布者和订阅者,使得两者不需要知道对方的信息,只需要知道第三方代理的IP地址和端口号就可以实现发布或者接收信息.

MQTT对发布者和订阅者进行时间上的解耦,虽然大部分情况发布者和订阅者都是同时在线,但是如果确实有必要,MQTT也可以实现为离线订阅者缓存订阅信息.

MQTT进行异步工作.因为大部分的客户端都是异步进行的,会采取callback的形式,所以任务不需要阻塞在等待消息或者发布消息过程中.

MQTT基于主题来过滤消息.每个消息都带有自己的主题.代理通过主题来决定某个订阅者是否可以获取到对应的消息.

MQTT有三个服务质量分级.

MQTT与消息队列的区别

消息队列存储信息直到这些信息被消费,如果没有人消费,这些信息会一直保存在消息队列里,就像在MQTT中没有订阅者订阅信息一样.

消息队列的消息只能被一个客户端消费.MQTT正好相反:每一个订阅者都可以获取到消息.

消息队列必须在队列被命名并且创建之后才能发布或者消费消息,MQTT的主题则非常灵活,可以在运行中进行创建.

发布

MQTT客户端一旦连接服务器代理之后就可以发布消息,每个消息都包含topic(主题)以及payload(消息内容)两部分,服务器代理通过topic来过滤消息内容来决定发送哪些信息给到对应的订阅者.MQTT是数据无关的,客户端来决定payload的组织结构.发布者决定发送的数据是二进制数据或文本数据甚至是xml,json.

发布的信息包含以下几个参数:

 Package Identifier:用来唯一标识一个信息, 这个id只在qos大于0的情况下才有意义,客户端或者代理服务器来设置这个id信息.

Topic Name: 通常是一个带分级结构的带/的简单字符串,例如"myhome/livingroom/temperatu

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值