物联网 MQTT协议

0 阅读1分钟

物联网 MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的发布/订阅模式网络协议

它诞生于1999年,最初用于石油管道的卫星通信(带宽极低、延迟极高),后来在物联网(IoT)领域大放异彩,现已成为物联网最主流的通信协议之一

参考网址

应用场景

  • 🌐智能家居

海量设备(智能音箱、控制中枢、APP)通过MQTT进行无缝通信和交互控制

  • 🏭 工业物联网 (IIoT):

实现设备状态实时监控、故障预警、提升效率。如三一重工通过MQTT监控设备,故障预测准确率达90%,并用于压力、流量等远程监测

  • 🚗 车联网:

连接车辆与云平台,实现车辆数据的实时上报、远程控制和导航更新等车内车载通信

  • 🏙️ 智慧城市:

用于城市大脑等大型数据平台,整合环境、交通、能源等各类数据。例如,在智慧水务中跟踪水质并即时告警

  • 🚜 智慧农业:

连接传感器监测土壤温湿度、光照等数据,实现精准灌溉和农业自动化管理

  • 📱 移动应用与消息推送:

利用其长连接和低功耗特性,实现可靠、省电的移动端消息推送

MQTT协议和同类比较

协议

一句话定位

传输协议

通信模型

消息开销

资源占用

可靠性

安全性

典型场景

MQTT

轻量物联网消息传输

TCP

发布/订阅

极小(2字节头)

强(3种QoS)

依赖TLS

物联网、车联网

CoAP

为微型设备设计的协议

UDP

请求/响应

小(4字节头)

极低

有限(UDP基础)

内置DTLS

智能家居、传感器

AMQP

企业级消息队列协议

TCP

发布/订阅、点对点等

较大

强(金融级)

原生SASL/TLS

金融、系统集成

XMPP

即时通讯协议(XML)

TCP

发布/订阅、请求/响应

最大(文本)

支持TLS

聊天、在线客服

HTTP

Web基础协议

TCP

请求/响应

较大(文本)

较高

有保障

原生TLS

网站、REST API

MQTT和Protobuf区别

特性

MQTT

Protobuf

首要职责

消息传输协议 (How to talk)
定义了消息如何在网络中进行交换的规则和流程

数据序列化格式 (What to say)
定义了数据如何被组织和编码成二进制格式,以便高效存储或传输

核心目标

轻量、高效、可靠地在受限网络和低功耗设备间传递消息

高效地序列化和反序列化结构化数据,追求数据体积小、处理速度快

工作层面

位于应用层,是一个独立的消息协议

是一种数据表示方法,需要依附于如MQTT的传输协议使用

数据形式

消息的“信封”,其Payload(消息体)可以是任意二进制或文本数据

消息的“内嵌物”,对Payload中的具体内容进行二进制压缩和编码

核心概念

客户端、Broker服务器、主题(Topic)、发布/订阅模式

.proto schema定义文件、代码生成、序列化/反序列化

典型应用

物联网设备与云端之间的指令下发与数据上报

微服务间通信、大数据存储、跨语言数据交换,特适内部系统通信

Protobuf同类比较

分类

方案

一句话特点

适用场景

文本格式

JSON

人类可读,无需Schema,生态最广

Web API、配置文件、调试

类二进制

MessagePack / CBOR

二进制版JSON,自描述,比JSON小

日志、缓存、灵活交换

强模式二进制

Protobuf

体积小、速度快,强Schema跨语言

gRPC、微服务、性能敏感系统

Avro

数据紧凑,模式随数据存储,动态解析

Kafka、大数据、模式频繁变动

Thrift

完整RPC框架,含多种序列化协议

跨语言RPC服务

零拷贝二进制

FlatBuffers

直接访问数据,无需解析

游戏、高性能计算

Cap'n Proto

极致速度,零拷贝

分布式高性能应用

基于java相关MQTT框架

框架名称

核心特点与优势

适用场景 (Project Level)

Eclipse Paho

Java官方参考实现,完全遵循MQTT标准,社区庞大、稳定可靠

首选适用于绝大多数需要MQTT通信的Java项目

HiveMQ MQTT Client

高性能、API设计优雅(同步/异步/响应式),支持MQTT 5.0和背压控制

对性能、吞吐量有高要求的复杂项目

Mica-MQTT

国产开源,基于Java AIO,简单易用、低延迟、高性能

希望简化自研难度,并追求高性能应用的国产化项目

Spring Integration MQTT

与Spring框架无缝集成,通过配置适配器(Adapter)即可实现MQTT通信

Spring技术栈项目,可极大简化集成代码