我能想到的唯一可能的原因是低开销,即固定的标头最小大小只有2个字节,导致了低数据包大小。在协议的设计中还有其他因素吗?
编辑:-对不起,我做了一个心理错误(?),正如@Shashi所指出的,我实际上指的是高延迟、低带宽。
发布于 2013-08-23 04:19:08
MQTT是为内存占用少、网络带宽低等设备而设计的。传感器、电能表、制程器等是MQTT的理想用例。低延迟意味着高速。为了降低延迟,您需要不同的协议,比如运行在千兆以太网或InfiniBand网络上的可靠多播。
发布于 2013-08-23 08:33:08
关键因素之一是,MQTT客户端建立的TCP连接始终被重用。这意味着您不必一直建立新的连接,因为传统的HTTP就是这种情况。另外,正如您已经猜到的,非常低的数据包大小是这里的关键,典型的MQTT消息在原始TCP数据包上没有太多开销。
为了在不可靠的网络上节省更多的带宽,MQTT的持久会话特性只允许客户端订阅一次,并且在重新连接订阅时为客户端保留订阅。对于订阅客户端,这可以大大减少开销,因为订阅消息只发送一次。
发布于 2013-08-23 16:35:02
另一个原因似乎是“最后的遗嘱”和“遗嘱”功能,这是一个有用的特点,在高延迟网络,低带宽和不可靠的网络。
https://stackoverflow.com/questions/18388361
复制相似问题