中间件-MQTT协议

MQTT协议是

  1. 对TCP/IP协议的封装和重构。
  2. 最小代码占用,最小报文开支,适用于处理能力不强,网络带宽不高的设备,如各类传感器。
  3. 保证消息顺序性
  4. 支持连续的会话控制
  5. 支持服务质量管理
  6. 支持动态创建主题
  7. 消息支持一对一,一对多。支持集群模式,支持广播模式。

名词解释

网络连接

客户端连接到服务器之后,提供双向有序无损的发送方式。

消息

MQTT在网络上传输的消息,由主题名(topic),服务质量(Qos)、负载消息(payload)等组成。

Topic

MQTT通过主题对消息进行分类,通过增加反斜杠对消息进行分级。主题不需要提前配置,直接使用。

还可以使用通配符匹配主题,+代表一级,#表示本机及下面所有级。

例:

  • beijing/library表示北京市的图书馆
  • beijing/hospital/jishuitan表示北京市的积水潭医院
  • +/library表示所有地区的图书馆
  • beijing/#北京的所有场所(library和hospital)

服务质量

MQTT提供了三种消息传输质量

  • 0:你收没收到我不管,反正我发了
  • 1:怎么着都会收到一次,有可能会收到重复消息。
  • 2:只会收到一次消息。

质量0适合消息丢失几次影响也不大的场景,如温度传感器每隔一段时间发送一次当前温度,如果间隔够小,丢失一两次影响不是很大

质量2,这种精准的方式牺牲的是来回多次的确认消息而增加网络开销。

质量1,既不会丢失消息,也没有那么大的网络开销,只有一个确认重发机制的开销。适合于日志处理。

有效负载

二进制数组,实际业务场景可以通过JSON方法包装数据再转为二进制数组。

客户端

  1. 与服务器建立和断开连接
  2. 发布主题消息
  3. 订阅主题消息
  4. 转发主题消息

服务器

  1. 与客户端建立和断开连接
  2. 满足订阅和取消订阅的要求
  3. 完成基于订阅主题的消息分发

MQTTOverWebSocket

参考文献

MQTT-v5官方文档

数据公会-MQTT入门篇