MQTT
一种为间歇性网络、受限设备、分层主题和 Broker 推送消息而构建的紧凑型发布/订阅协议。
最适用于设备到云和命令控制消息。
协议对比
MQTT 通过轻量级 Broker 连接受限客户端。Kafka 存储有序的事件流,用于高吞吐量处理和重放。许多物联网系统需要在边缘使用 MQTT,并在数据摄取边界后使用 Kafka。
这些协议解决了不同的边界。MQTT 优化设备连接;Kafka 优化持久化处理骨干网。
MQTT
一种为间歇性网络、受限设备、分层主题和 Broker 推送消息而构建的紧凑型发布/订阅协议。
最适用于设备到云和命令控制消息。
Apache Kafka
一个为持久化保留、分区吞吐量、消费者控制的偏移量、重放和流处理而构建的分布式事件日志。
最适用于服务到服务的事件管道、分析和重放。
| 能力 | MQTT | Kafka |
|---|---|---|
| 核心模型 | 带分层主题的 Broker 消息发布/订阅 | 带消费者偏移量的分区追加日志 |
| 典型客户端 | 传感器、嵌入式设备、网关、移动客户端 | 后端服务、连接器、流处理器 |
| 消息投递 | Broker 推送匹配消息;QoS 0、1 或 2 | 消费者拉取并按消费者组提交偏移量 |
| 保留和重放 | 保留的最新值和会话队列;并非通用事件存档 | 基于时间或大小的持久化保留和偏移量重放 |
| 路由 | 带有 + 和 # 通配符的分层主题过滤器 | 扁平主题和分区;路由属于生产者或处理器 |
| 网络假设 | 专为低带宽、高延迟和重连客户端设计 | 专为稳定的数据中心或云服务连接设计 |
单个系统可以在不重复职责的情况下同时使用两者。
明确协议职责,使重放、背压和授权保持清晰可理解。
Kafka 不是即插即用的设备 Broker。它不提供 MQTT 会话、QoS 流、保留消息、分层主题过滤器或相同的受限客户端足迹。
MQTT 可以队列会话消息并保留最新值,但它并非为许多独立后端消费者设计的长期可重放事件日志。
应部署在受控的数据接入边界,确保凭据、Schema、重试、分区键和死信处理都可运维、可观测。
继续比较浏览器传输边界,再回到 MQTT 的实现与安全设计。