MQTT 什么是 MQTT

DavidAlphaFox · 发布于 2018年01月15日 · 220 次阅读
84794b

什么是MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是基于二进制消息的发布/订阅编程模式的消息协议,最早由IBM提出的,如今已经成为OASIS规范。由于规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景。

MQTT特点

  1. 精简,不添加可有可无的功能。
  2. 发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递。
  3. 允许用户动态创建主题,零运维成本。
  4. 把传输量降到最低以提高传输效率。
  5. 把低带宽、高延迟、不稳定的网络等因素考虑在内。
  6. 支持连续的会话控制。
  7. 理解客户端计算能力可能很低。
  8. 提供服务质量管理。
  9. 假设数据不可知,不强求传输数据的类型与格式,保持灵活性。

为了满足不同的场景,MQTT支持三种不同级别的服务质量(Quality of Service,QoS)为不同场景提供消息可靠性:

  1. 级别0:尽力而为。消息发送者会想尽办法发送消息,但是遇到意外并不会重试。
  2. 级别1:至少一次。消息接收者如果没有知会或者知会本身丢失,消息发送者会再次发送以保证消息接收者至少会收到一次,当然可能造成重复消息。
  3. 级别2:恰好一次。保证这种语义肯待会减少并发或者增加延时,不过丢失或者重复消息是不可接受的时候,级别2是最合适的。

和XMPP相比优缺点

MQTT

如其名称所述,其主要目的是遥测或远程监控。其目标是从许多设备收集数据并将该数据传输到IT基础架构。它面向需要从云监控或控制的小型设备的大型网络。消息队列遥测传输(MQTT)实现了一个中心辐射系统。 MQTT很少尝试启用设备到设备的传输,也不会将数据“扇出”给许多收件人。

由于它具有清晰,引人注目的单一应用,因此MQTT很简单,提供了很少的控制选项,它也不需要特别快,在这种情况下,“实时”通常以秒为单位。MQTT是一种中心辐射架构。所有设备都连接到数据集中器服务器,如IBM新的MessageSight设备。MQTT使应用程序能够监视巨大的石油管道泄漏或破坏,几千个传感器的数据都被集中在一个单独的位置进行分析。当系统发现问题时,可以采取行动来纠正该问题。 MQTT的其他应用包括电力使用监控,照明控制,甚至智能园艺。

XMPP

本篇中对XMPP的介绍,XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线通讯的相关场景。
应用XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常容易被理解和调试。XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等相比,XMPP更加开放,更容易扩展并且天生就具有分布式特性。

比较

MQTT的优势:

  1. 协议简单且轻量级
  2. QoS管理
  3. 客户端不需要强大的计算力
  4. 数据可以自行定义,无强制要求
  5. 高带宽利用率,考虑慢速网络,连接速度快

MQTT的劣势:

  1. 不擅长处理将数据交付给多个收件人的场景
  2. 不擅长处理复杂的业务控制,可扩展性取决于顶层机制
  3. 不擅长高速大队列的数据传输
暂无回复。
需要 登录/注册 后方可回复, 如果你还没有账号请点击这里 注册