文章

工业互联网MQTT协议

MQTT协议在Iot领域是使用的最广泛的通用协议,是构建工业互联网平台的必要条件

工业互联网MQTT协议

MQTT简介

MQTT协议在Iot领域是使用的最广泛的通用协议,在一般企业级物联网产品开发中,通常会考虑的协议基本上就只有2种,一种是私有的自定义协议,另一种就是通用的MQTT协议;在产品品类相对较少或者对系统性能要求极高的情况下,一般会选择自定义的协议,其他大部分情况下,都会选择MQTT协议。

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

MQTT分布订阅模式

发布订阅模式(Publish-Subscribe Pattern)是一种消息传递模式,它将发送消息的客户端(发布者)与接收消息的客户端(订阅者)解耦,使得两者不需要建立直接的联系也不需要知道对方的存在。 MQTT 发布/订阅模式有 4 个主要组成部分:发布者、订阅者、代理和主题。

  • 发布者(Publisher)

负责将消息发布到主题上,发布者一次只能向一个主题发送数据,发布者发布消息时也无需关心订阅者是否在线。

  • 订阅者(Subscriber)

订阅者通过订阅主题接收消息,且可一次订阅多个主题。MQTT 还支持通过共享订阅的方式在多个订阅者之间实现订阅的负载均衡。

  • 代理(Broker)

负责接收发布者的消息,并将消息转发至符合条件的订阅者。另外,代理也需要负责处理客户端发起的连接、断开连接、订阅、取消订阅等请求。

  • 主题(Topic)

主题是 MQTT 进行消息路由的基础,它类似 URL 路径,使用斜杠 / 进行分层,比如 sensor/1/temperature。一个主题可以有多个订阅者,代理会将该主题下的消息转发给所有订阅者;一个主题也可以有多个发布者,代理将按照消息到达的顺序转发。

MQTT数据格式

MQTT协议由三部分组成,固定报头,可变报头,有效载荷;

固定报头是所有的报文统一的格式,可变抱头则根据固定抱头中的报文类型不同基本不同,每个报文类型基本上都有自己的可变报头格式,这里需要注意,最后有效载荷则部分报文有,部分报文没有,而且报文内容也是根据报文类型的不同而不同;

整体数据格式

mqtt-pdu

固定头 mqtt-fix

协议类型 mqtt-fix-type

可变头 mqtt-var

有效载荷

有效载荷内容也是根据报文类型的不同而不同,可参见MQTT协议

MQTT方式

本文由作者按照 CC BY 4.0 进行授权