MQTT 协议的组织结构

250 阅读3分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

客户端(Client)

使用MQTT协议的程序或设备。需要通过网络连接到服务端。例如物联网中我们的传感器。

功能

  • 打开/关闭与服务端的网络连接。
  • 发布应用消息给其他客户端。
  • 订阅和接收相关应用消息。
  • 取消订阅和移除接收其他相关应用消息。

常用的MQTT客户端工具

  • MQTT X:开源跨平台的桌面客户端工具,功能较为全面,允许多个客户端连接并且自由切换和通信,有良好的交互性。
  • Mosquitto CLI:命令行工具,有多个配置选项,支持TLS证书连接、代理服务器连接,支持debug模式。
  • MQTT.fx:主流客户端,开源快速验证,文档较多,交互略差。

服务端(Server)

一个程序或设备,作为发送消息客户端和请求订阅的客户端之间的中介。也称为消息代理(Broker)

功能

  • 打开/关闭与客户端的网络连接。
  • 接收客户端发布的应用消息。
  • 处理客户端的订阅和取消订阅请求。
  • 转发应用消息给已订阅的客户端。

主流开源的MQTT服务器

  • Eclipse Mosquitto:使用C语言实现的MQTT服务器。Eclipse组织还还包含了大量的MQTT客户端项目。
  • EMQ X:使用Erlang语言开发的MQTT服务器,内置强大的规则引擎,支持趣多其他的IoT协议。
  • Mosca:使用Node.JS开发的MQTT服务器,简单易用。
  • VerneMQ:使用Erlang语言开发的MQTT服务器。

会话(Session)

每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间的有状态交互。会话可以存在与一个网络连接之间,也可以跨越多个连续的网络连接。

主题名(Topic Name)

附加在应用消息上的一个标签信息,被用于匹配服务器已经存在的订阅。服务端会向所有匹配订阅的客户端发送此应用消息。

主题过滤器(Topic Filter)

只在订阅时使用的表达式,包含通配符,以匹配多个主题名

订阅(Subscription)

订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量等级(QoS)。订阅与单个会话关联。会话包含至少一个订阅。会话的每个订阅都有一个不同的主题过滤器。

载荷(Payload)

就是业务消息,可以是任意格式(二进制、十六进制、普通字符串、JSON字符串、Base64)的数据

应用行业

  • 物联网 M2M 通信,物联网大数据采集。
  • 智慧城市、远程医疗、远程教育。
  • 电力、石油与能源等行业。
  • 智能硬件、智能家居、智能电器。
  • 车联网通信、电动车站桩采集。
  • 移动即时消息及安卓、Web消息推送。

发布订阅流程

MQTT发布订阅流程.png