MQTT基础文档翻译(一):MQTT协议介绍

原文链接

Introducing the MQTT Protocol - MQTT Essentials: Part 1

正文

欢迎阅读MQTT系列文章: 一个讲述MQTT协议核心特性和概念的系列博客,分为十个部分。这一篇博客概述了我们计划覆盖的内容,为你快速介绍MQTT,并提供一些关于这个协议有趣的背景故事。

周一与MQTT见面!

一年的初始是开启一件新事物的绝好时机。本着这种精神,我们正一步步完善我们的博客去覆盖更广的关于MQTT的话题。这些新的系列文章会对安全性和客户端程序库有深入的讲解,这里有许多很棒的内容可以帮助到你。每周一我们将会发布一篇新的关于MQTT的博客。所以,如果你对MQTT感兴趣,请定期查阅我们的博客。更好的方式是,订阅我们的简讯,然后就可以在博客发布的第一时间在邮箱中收到通知。

我们希望这些文章可以让你快速、成功的明白和实现MQTT

在这篇文章的末尾,我们有一个视频对这篇博客做补充,我们建议你阅读本文,并通过视频获取更多信息。

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

在我们进入今天的话题之前,先来解释以下为什么我们写这系列文章,这篇文章的受众是谁,还有在接下来的日子我们将覆盖哪些内容。HiveMQ团队长期做MQTT相关的工作。我们的专家每天在会议和网络上为客户回答关于MQTT核心概念的问题。这些问题关于 publish/subscribe,quality of services,和其他话题。 在MQTT系列文章中,我们希望去解释MQTT的主要概念并为用户提供一个简单易懂的参考指南。MQTT是一个开源的协议,我们认为如何使用MQTT的信息也应该开源。我们对于这项技术感到非常兴奋,也希望你可以从内容中获得帮助

首先我们将探讨基础概念(publish/subscribe,client/broker)和MQTT的基础功能(Connect,Publish,Subscribe)。接下来,我们将关注一些特性: Quality of Service, Retained Messages, Persistent Session,Last Will 和 Testament, Keep Alive和其他。

在系列文章中不会包含安全相关信息,安全性是MQTT一个很大的话题。事实上,他是一个特别重要的话题,我们发布了另一个系列文章来讲述MQTT安全相关的内容。

介绍MQTT

“MQTT是一个客户端服务器,发布订阅模型的消息传输协议。它轻量级、开源、简单、易实现,这些特性使其成为许多情况下使用的理想选择,包括机器到机器通信(M2M)和物联网(IoT)等需要小内存占用,或带宽非常昂贵的受限环境。” MQTT 3.1.1 specification 引文

上述引文很好的描述了MQTT是什么,它是一个非常轻量的二进制协议,并且由于它非常小的数据包开销,MQTT比HTTP协议更适合在电线间传输数据。MQTT协议另一个重要的优点是在客户端的实现非常容易。易用性是MQTT开发过程中的一个关键考量,这也让MQTT如今完美的适配了资源有限制的被约束设备。

一些历史

MQTT协议在1999年被 Andy Stanford-Clark (IBM) 和 Arlen Nipper (Arcom, now Cirrus Link) 发明出,他们需要一个低电量消耗、低带宽消耗的协议,用于通过卫星与输油管道连接。这两位发明者为此协议定下了一些必须的要求:

  • 实现简单
  • 保证数据传输的质量
  • 轻量级并且高效使用带宽
  • Data agnostic
  • Continuous session awareness

这些目标一直是MQTT的核心。然而,协议最专注的部分已经由嵌入式设备转换到物联网应用上了。这个转换使MQTT所代表的全拼词语有了一些争议。简短的答案是,MQTT不再是一个缩写,而是一个协议的名称。

较为详细的答案是 MQTT在之前是MQ Telemetry Transport的缩写

“MQ”代表的是IBM为了支持MQ Telemetry Transport开发的产品,当Andy和Arlen在1999年创造这个协议时,他们在IBM产品之后将其命名为MQTT。 许多地方错误的将MQTT解释为消息队列协议。MQTT不是一个传统的消息队列解决方案(尽管MQTT在一些特殊情况可能会用队列缓冲消息,我们在后面的章节会讲到)。在1999之后的10年里,IBM在内部使用这个协议,直到2010年他们发布了MQTT3.1作为一个无版权的发布版本。从那时开始,每个人都被欢迎去开发和使用MQTT协议。

我们在2012年开始了解MQTT,并在同年发布了HiveMQ的第一个版本。2013年,我们公开发布了HiveMQ。随着协议规范的发布,IBM捐献MQTT客户端实现给Eclipse基金会新成立的Paho课题。这些件事对MQTT协议有重大的影响,因为没有生态支持的协议很难被广泛的使用。

OASIS标准和当前版本

大约在MQTT初始版本发布三年后,MQTT将由OASIS(一个致力于推进标准化的开源组织)定制标准。AMQP,SAML,和DocBook只是OASIS标准的一部分。标准化进程持续了大约一年,在2014年10月29日MQTT成为一个正式批准的OASIS标准。从3.1到3.1.1的小版本变化展现了和之前版本的变化。对于这些变化的细节信息,看另一篇博客 3.1.1带来的优势。

在2019年3月,OASIS批准了新的MQTT5规范。新的MQTT版本引进了将物联网程序部署在云平台上所必须的特性,其中要求在实现关键消息的传输时需要有更高的可靠性和完善的错误处理。如果想要更多的了解MQTT5,请查看我们MQTT5相关系列文章。

我们强烈建议使用MQTT 5。

到了我们系列文章第一篇的结尾了,希望你阅读愉快并且了解到一些MQTT的新闻。感谢你的阅读请在下周继续关注我们的下篇介绍文章,关于发布和订阅模式还有MQTT与消息队列的不同之处

如果你有任何反馈或问题,请在评论中告诉我们。

MQTT
MQTT基础文档翻译(二):发布和订阅
Qt信号槽机制浅析
© 2020 Liujianfeng
Powered by hexo | Theme is white