[翻译]MQTT要点第一部分-MQTT协议介绍

说明: 最近看到了 HiveMQ 博客的关于MQTT的一系列博客文章,就想着一边学习,一边把这些文章都翻译过来放在自己的博客文章里,所以这里是第一篇。

原文

欢迎来到MQTT 系列: 关于MQTT协议核心功能和概念的十部分博客系列。这篇文章概述了我们计划在博客中介绍的内容,初步介绍MQTT协议,以及提供一些关于协议的有趣的背景资料。

从周一初见MQTT

一年之季始于春,本着这样的精神,我们在博客开始讨论广泛的MQTT主题。从该新的要点系列到深入了解安全性和客户端库,有很多非常好的内容。接下来的每个周一,我们将发布一篇新的关于MQTT的博客文章。 因此,如果你对MQTT感兴趣,请经常访问我们的博客。更好的方法是订阅我们的新闻信件,当我们有新的文章发布时,会立即投递到你的邮箱。

我们希望这一系列的文章能够帮助你更加轻松快速并且成功地了解和实施MQTT。

MQTT要点: 为什么, 是什么和不是什么

在进入今天的主题之前,让我解释下我们为什么要开始这个系列,谁是受众目标,以及我们在接下来的日子将介绍什么。HiveMQ团队已经MQTT工作了很长一段时间,我们的专家每天在会议和线上向客户回答关于MQTT核心概念的问题。 这些问题涉及发布/订阅服务质量,以及其他很多主题。在这个MQTT要点系列,我们想说明MQTT的主要概念,以及为各种类型的用户提供易于访问的参考指南。MQTT是一个开放的协议,因此我们认为如何使用它的信息也应该是开放的。 我们对这项技术感到非常兴风,也希望你能从中获得有用的内容。

首先我们探索下MQTT的基础概念(发布/订阅客户端/服务代理 )以及基础功能(连接发布,订阅)。然后,我们了解一下这些特性: 服务质量保留消息持久会话最后遗愿保持活跃,以及更多

该要点系列不包括安全信息,在MQTT中,安全是一个大的主题。实际上,这是一个非常重要的主题,因此在该系列之后,我们开发了一个关于MQTT和安全的完整系列。

介绍MQTT

MQTT是一个客户端/服务器(C/S),发布/订阅消息传输协议。轻量级,开放,简单以及非常容易实现得设计模式。这些特性使得MQTT非常适用于许多场景,包括受限制的环境,比如机器与机器(M2M)间的通信和物联网(IoT),
在这些环境下,需要小的代码占用空间以及非常昂贵的网络带宽。  

引文自官方的[MQTT 3.1.1规范](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html)  

MQTT规范的摘要很好地描述了MQTT的全部内容。它是一个非常轻量级和二进制协议,犹豫其最小的数据包开销,与HTTP协议相比,MQTT在线路传输数据时表现优异。该协议另一个重要的方面是MQTT在客户端及其好实现。 易用性是MQTT在开发中的一个关键点,使它非常适合当今资源有限的受限设备。

一点点历史

MQTT协议在1999年被 Andy Stanford-Clark (IBM) 和 Arlen Nipper (Arcom, now Cirrus Link) 发明。他们需要一种协议,以最小电池损耗和最小带宽通过卫星与石油管道连接。两位发明者为未来的协议规定了几个要求:

  • 实现简单
  • 服务质量数据传递
  • 轻量级和带宽高效
  • 数据不可知
  • 持续会话意识

这些目标依然是MQTT的核心。然而,该协议的主要关注点已经从专有的嵌入式系统转向了开放得物联网场景。这个转移给MQTT的缩写意义带来了很大的困扰,简短的回答就是MQTT已 再认为是一个缩写,MQTT只是协议的简单名称。

长一点的回答,原来的缩写表示MQ遥测传输(MQ Telemetry Transport)。

“MQ”是指MQ系列,一个IBM开发支持消息队列遥测传输的产品。当Andy和Arlen在1999年创建他们的协议时,他们以IBM产品来命名。许多资料错误地将MQTT标记为消息队列协议 显然是不对的。MQTT不是传统的消息队列解决方案(虽然在某些情况下也可以队列传输消息,我们将在后面的博客文章里详细讨论这一情况)。接下来的十年,IBM一直在内部使用该 ,直到2010年他们发布了MQTT 3.1作为版权自由的版本。从那时开始,所有人都受欢迎来实现和使用该协议。

我们在2012年熟悉了MQTT协议,在同一年构建了HiveMQ的第一个版本。2003年,我们公开发布了HiveMQ,随着协议规范的发布,我们还贡献了客户端实现给Eclipse基金会新 的Paho项目。对于协议来说,这些事件无疑是很重要的,因为没有支持的生态系统,协议是很难被广泛采用的。

OASIS标准和当前版本

首次发布后大概三年,宣布了MQTT将在OASIS的旗帜下进行标准化,OASIS是一个推进标准的开放组织。AMQP,SAML和DocBook都是OASIS之前发布的一些标准。标准化过程进行了大概一年,在2014年10月29号,MQTT成为了官方认可的OASIS标准。MQTT 3.1.1是最新的协议版本,次要版本从3.1改变为3.1.1表明了对以前的版本修改很小。关于这些修改的详细信息,可以查看另一篇博文3.1.1的改进

我们强烈推荐使用MQTT 3.1.1版本。


到这里,结束了我们MQTT要点系列的第一部分,我们希望你喜欢这个介绍,以及新学到关于MQTT的一些东西。下一篇我们将介绍发布/订阅模式以及MQTT与消息队列的不同