MQTT与RocketMQ对比

MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

对比

MQTTRocketMQ
使用背景面向移动端场景,移动端场景一般都具备海量设备,单设备数据较少的特点。因此,MQTT适用于拥有大量在线客户端(很多企业设备端过万,甚至上百万),但每个客户端消息较少的场景。面向服务端的消息引擎,主要用于服务组件之间的解耦、异步通知、削峰填谷等,服务器规模较小(极少企业服务器规模过万),但需要大量的消息处理,吞吐量要求高。因此,消息队列RocketMQ版适用于服务端进行大批量的数据处理和分析的场景。
客户端连接数客户端规模庞大,百万甚至千万级。一般服务器规模较小,极少数万级。
单客户端消息量单个客户端需要处理的消息少,一般定时收发消息。单个客户端处理消息量大,注重吞吐量。

组合使用实例

秉承单一职责的原则,MQTT在设计上是一个面向移动互联网和IoT领域的,只关心海量移动端设备的接入、管理和消息传输,可与其他消息队列通过数据互通规则实现交互,例如消息队列RocketMQ。

在这种职责划分下,终端设备将消息发送到微消息队列MQTT后,消息会根据微消息队列MQTT创建的规则路由到指定消息队列,云端应用依然可以维持传统的微服务开发方案,通过对接云端存储产品即可和终端设备进行互动,两者之间通过MQTT实现了数据互通能力。