MQTT入门

什么是MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上。

MQTT特征

  • 基于 TCP 协议的应用层协议;
  • 采用 C/S 架构;
  • 使用订阅/发布模式,将消息的发送方和接受方解耦;
  • 提供 3 种消息的 QoS(Quality of Service): 至多一次,最少一次,只有一次;
  • 收发消息都是异步的,发送方不需要等待接收方应答。

与传统MQ的区别

虽然 MQTT 协议名称有 Message Queue 两个词,但是它并不是一个像 RabbitMQ 那样的一个消息队列,MQTT 跟传统的消息队列相比,有以下一些区别:

  • 在传统消息队列中,在发送消息之前,必须先创建相应的队列;在 MQTT 中,不需要预先创建要发布的主题(可订阅的 Topic);
  • 在传统消息队列中,未被消费的消息总是会被保存在某个队列中,直到有一个消费者将其消费;在 MQTT 中,如果发布一个没有被任何客户端订阅的消息,这个消息将被直接扔掉;
  • 在传统消息队列中,一个消息只能被一个客户端获取,在 MQTT 中,一个消息可以被多个订阅者获取,MQTT 协议也不支持指定消息被单一的客户端获取。

MQTT通讯模型

MQTT 的通信是通过发布/订阅的方式来实现的,消息的发布方和订阅方通过这种方式来进行解耦,它们没有直接地连接,它们需要一个中间方(Broker)。
在这里插入图片描述

  • 发布方(Publisher)将消息发送到 Broker;
  • Broker 接收到消息以后,检查下都有哪些订阅方订阅了此类消息,然后将消息发送到这些订阅方(subscriber);
  • 订阅方(subscriber)从 Broker 获取该消息;

MQTT Client

任何终端,只要运行了 MQTT 的库或者代码,我们都可以将其称为 MQTT 的 Client,一个 Client 可以同时是 Publisher 和 Subscriber。

MQTT Broker

Broker 负责接收 Publisher 的消息,并发送给相应的 Subscriber,它是整个 MQTT 订阅/发布的核心,具有以下功能:

  • 可以横向扩展,比如集群,来满足大量的 Client 接入;
  • 可以扩展接入业务系统;
  • 易于监控,满足高可用性。

MQTT协议数据包的固定包头

名称方向描述
Reserved0不可用保留位
CONNECT1Client 到 BrokerClient 请求连接到 Broker
CONNACK2Broker 到 Client连接确认
PUBLISH3双向发布消息
PUBACK4双向发布确认
PUBREC5双向发布收到
PUBREL6双向发布释放
PUBCOMP7双向发布完成
SUBSCRIBE8Client 到 BrokerClient 请求订阅
SUBACK9Broker 到 Client订阅确认
UNSUBSCRIBE10Client 到 BrokerClient 请求取消订阅
UNSUBACK11Broker 到 Client取消订阅确认
PINGREQ12Client 到 BrokerPING 请求
PINGRESP13Broker 到 ClientPING 应答
DISCONNECT14Client 到 BrokerClient 主动中断连接
Reserved15不可用保留位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值