WebSphere MQ Telemetry Transport (MQTT) 是一项异步消息传输协议,是 IBM 在分析了他们的客户在其业务中使用 ">WebSphere MQ 消息传递的情况(包括通过它传递数据)之后专门为物联网所定制的重要的轻量级消息传输协议。IBM 发现,数据经常是在企业外部的远程位置生成的,而且数据在从远程位置到达企业之前通常要经历一个复杂的过程。这时往往将数据人工输入计算机,然后只能通过 WebSphere MQ Enterprise 消息传递系统传输。而 MQTT 的开发将 WebSphere MQ 消息传递的应用范围延伸到这些远程位置。
WebSphere MQ 遥测传输 (MQTT) 是轻量级基于代理的发布 / 订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:
网络代价昂贵,带宽低、不可靠。 在嵌入设备中运行,处理器和内存资源有限。
该协议的特点有:
使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合。 对负载内容屏蔽的消息传输。 使用 TCP/IP 提供网络连接。 有三种消息发布服务质量: "至多一次",消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 "至少一次",确保消息到达,但消息重复可能会发生。 "只有一次",确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
推送服务
推送服务表现为客户端能自动收到服务器发送过来的数据和信息。其目的都是为了给最终客户方便有效地发送最新消息或者数据。而且推送的模式对以前的数据访问方式提供很好的补充和发展。首先,给最终用户带来了很好的使用体验,可以实时的获取自己感兴趣的信息,与此同时,给服务器端的应用商,也提供了更为便捷和主动的数据,服务发布方式,使得应用商能够控制信息发布的频率和时间,从而能更精准的投送的最终用户。
推送服务本质上是服务器主动将消息,数据发送到客户端,而不是客户端主动去服务器请求数据。这种推送只需要客户端与服务器连接后,在有数据的情况下,服务器端马上将数据发送到客户端。这里的客户端可以是多种类型的,比如比较常见的浏览器,移动应用等等。
推送服务的实现方式大致可分为 Poll 和 Push 模式。
Poll 模式
Poll 模式,本质上是"伪推送"模式,或者叫短轮询模式。是客户端通过设定固定的时间间隔,然后在时间间隔到达后,客户端主动向服务器发送请求,去更新是否有新数据。这种模式的特点是,客户端需要不停的轮询访问服务器获取信息,其时间间隔设定无法真正体现实时推送,间隔太长容易导致信息不能实时的更新,间隔太短,客户端需要发送很多不必要的连接请求,耗费很多网络流量和服务器开销。比如在移动终端上,此类模式会在设备电能消耗,网络流量使用方面存在很多瓶颈。
Push 模式
Push 模式,一般意义上使用长连接去建立一个客户端到服务器的双向数据通道,只要在连接建立后,一旦一方有数据更新,就可以马上通过双向的数据通道向对方发送数据,平时在没有数据时,通过一些心跳等机制维持通道连接。Push 模式的特点,简化的客户端的开发,数据能近乎实时的发送到对方。但其在设备资源消耗和网络流量控制方面,根据其使用的不同协议会有很大不同,特别是在移动推送领域,长连接对移动设备电量和网络流量的消耗要求较高。同时,由于需要维护长连接,对服务器在高并发连接的处理能力和性能也有很高要求。
移动推送服务
推送服务在很多领域都有发展,但特别在移动领域,由于其飞速发展,给推送服务带来了很多新的机遇和挑战。首先,移动市场规模越来越大,终端种类和数量越来越多,使得推送服务的的重要性越来越凸显;其次,传统的"伪推送"模式已越来越不能满足其需要,需要发展新的推送的技术,这促使了很多新的协议和框架的出现;但是,由于移动领域的终端设备和网络情况的特点,对推送的协议和框架又提出了新的挑战,比如:移动终端的计算和存储资源的限制,移动终端的电量消耗的限制,移动网络流量和成本的控制等等。主流的移动推送解决方案如下:
SMS 短信
作为传统的消息通讯,在新型移动环境下,在网络成本方面的考量使其地位有逐渐边缘化的趋势。
HTTP 轮询
使用定时的 HTTP 轮询方式,及客户端在一定的时间间隔里去重复向服务器请求数据更新,属于"伪推送",由于其协议复杂冗余,轮询间隔的不准确,耗费了不必要的流量,增加了终端用户网络成本等因素,现有的这种方式已经不适合做移动推送服务。
XMPP
XMPP 是基于 XML 的通讯协议,此协议已基本上完成了标准化,成熟,强大,可扩展性强。但正是由于其协议复杂,冗余的设计,成为其在移动设备上短板,比如协议的复杂带来其协议栈的耗电增加,冗余的设计使得网络流量偏大,用户成本增加。
私有厂商协议和平台
私有厂商推出的推送服务,由于其协议私有,其传输效率和质量上无法量化和考证,而且还往往无法实现跨平台推送。同时,有些厂商提供的消息服务器不具备公开性,导致在用户数据安全性特别是服务器掌控方面存在担心。