0

我能想到的唯一可能的原因是开销低,即固定的标头大小最小只有 2 个字节,导致数据包大小变小。协议设计中是否还有其他因素?

编辑:- 对不起,我犯了一个心理错字(?),正如@Shashi 指出的那样,我实际上是指高延迟,低带宽。

4

3 回答 3

1

关键因素之一是 MQTT 客户端建立的 TCP 连接一直被重用。这意味着您不必像经典 HTTP 那样一直建立新连接。此外,正如您已经猜到的那样,非常小的数据包大小是关键,典型的 MQTT 消息与原始 TCP 数据包相比没有太多开销。

为了在不可靠的网络上节省更多带宽,MQTT 的持久会话功能允许客户端仅订阅一次,并在重新连接时为客户端保留订阅。对于订阅客户端,这可以大大减少开销,因为订阅消息只发送一次。

于 2013-08-23T08:33:08.307 回答
1

MQTT 专为内存占用少、网络带宽低等设备而设计。传感器、电表、起搏器等设备是 MQTT 的理想用例。低延迟意味着高速。对于低延迟,您需要不同的协议,例如在千兆以太网或 InfiniBand 网络上运行的可靠多播。

于 2013-08-23T04:19:08.237 回答
0

另一个原因,似乎是 Last Will and Treat 特性,在高延迟网络、低带宽和不可靠网络中具有该特性很有用。

于 2013-08-23T16:35:02.060 回答