MQTT简史!!!

物联网,这个不再新鲜的词汇,我们的生活中早就融入进去了,最为典型的应用就是Home智能家居了。

那随着物联网的应用,也把其中很重要的通信协议MQTT推到非常关键的位置。没有MQTT,也就没有物联网的快速发展。

之所以选择MQTT,当然是因为其核心优势和特征,这里我们后期再详细介绍。这期,我们先简单了解下MQTT的历史。

创始

上世纪九十年代末,监督控制和数据采集(Supervisory Control and Data Acquisition,SCADA)系统被用于管理大型工业基础设施,如油管或电网(事实上,SCADA 今天仍然被广泛使用)。本质上,SCADA 系统允许操作员远程控制基础设施的各个方面,例如在电网中启动或关闭发电机。顺便提一句,由于 SCADA 系统可以通过远程连接操作机器和设备,它们通常被认为是今天物联网(IoT)系统的前身

远程设备连接和控制的方式被称为“遥测(Telemetry )”。当时遥测的问题是存在多种协议,通常是由设备或机械的制造商开发的,因此是专有的。这导致了各种兼容性问题。

Arlen Nipper(当时在 Arcom Control Systems)和 IBM 的 Andy Stanford-Clark 在 1999 年初制定了 MQTT ( Message Queuing Telemetry Transport,消息队列遥测传输)的第一个版本。当时它被称为“Argo Lightweight On The Wire Protocol”,Argo 是 IBM 的一个产品代号。它的主要目标是摆脱当时存在的“数百种私有轮询/响应协议”的传统。它只是 MQTT 的基本框架,没有 DISCONNECT、UNSUBSCRIBE 或 PING 消息。

这两位工程师,最初只是在石油和天然气行业中,他们需要一个协议,可以通过卫星与油管连接,并且尽可能减少电池消耗和带宽使用。但是,到今天,MQTT实际应用已经涉及到农业、医疗、能源、工业自动化、物流、汽车等等行业!

代码语言:javascript代码运行次数:0运行复制

更新和发展

版本V1并没有持续很久。Arlen 和 Andy 在那一年晚些时候定义了版本 2,并将名称改为“MQ 综合渗透设备协议”(MQIpdp)。

版本 V2 中包含的更改使其看起来非常像我们今天所知的 MQTT 3.1.1,其中首次加入了 will 消息、心跳处理以及取消订阅的功能。

版本V3 在 2000 年跟随其后,仅有一些小的修改和澄清,这些修改和澄清在接下来的十年中保持稳定,直到 2010 年发布了版本 3.1。在这十年中,MQTT 在 Arcom 和 IBM 的各种项目中被采用:

在这十年中,MQTT 在 Arcom 和 IBM 的各种项目中被采用:

  • 2000: Arcom Control Systems “Director” - 支持 MQTT 的工业网络网关
  • 2002: SCADA Mousetrap (Andy SC)
  • 2004: IBM Microbroker - 一个 Java MQTT 代理实现
  • 2005: UIB - 一个用于与 MQTT 数据交互的智能手机应用(Bharat Bedi)
  • 2006: MQTT 发布
    • IA92 Java 客户端
    • IA93 C 参考实现
    • Websphere MQ
    • MQ 消息和事件代理
    • Websphere Business Integration Message Broker Websphere (商业集成消息代理)
    • CPAN Websphere::MQTT::Client
    • Combichem (Dr. Jeremy Frey)
  • 2007: RSMB - 一个用 C 语言编写的极简 MQTT 代理(Ian Craggs)
  • 2007:家用电力和水资源使用监测(Andy SC)
  • 2009: Isle of Wight Redjet Ferry 状态在 Twitter 上(Andy SC)
  • 2009: the house that Tweets (Andy SC)
  • 2010: the open source Mosquitto project (Roger Light) (开源的 Mosquitto 项目)
  • 2010:IBM 和 Eurotech 发布了 MQTT 3.1,其中进行了以下更改:
    • Username and password could now be sent with a CONNECT packet 用户名和密码现在可以与 CONNECT 包一起发送
    • New return codes on CONNACK packets, for security problems CONNACK 包中的新返回代码,用于表示安全问题
    • Clarification that clients are not informed of un-authorized PUBLISH or SUBSCRIBE commands, and that the normal MQTT flow should complete even though the command has not been performed 澄清客户端不会被告知未授权的 PUBLISH 或 SUBSCRIBE 命令,并且即使该命令未执行,正常的 MQTT 流程也应该完成
    • Strings now supported full UTF-8, instead of just the US-ASCII subset 字符串现在支持完整的 UTF-8,而不是仅仅支持 US-ASCII 子集
  • 2011: use in Facebook messenger使用在 Facebook 消息应用中
  • 2011: the open source Eclipse Paho project 开源的 Eclipse Paho 项目
  • 2012: the Chale community project Chale 社区项目
  • 2012: IBM MessageSight
  • 2012: Mosquitto joins the Eclipse Foundation Mosquitto 加入 Eclipse 基金会

到这时,MQTT 已经得到了足够的使用,标准化成为了社区的头等大事,以确保其未来的成功。

  • 2014:MQTT 3.1.1版本发布,并且成为OASIS协议标准(OASIS standard),同年也升级为国际物联网标准(ISO standard)。
  • 2016:MQTT 3.1.1版本正式成为ISO标准。
  • 2018:MQTT 5.0版本首次发布。
  • 2019:MQTT 5.0版本正式成为OASIS标准。

v5.0版本是自2014年v3.1.1以来最重要的协议升级,能够适应近年来行业发展的新需求,并为未来物联网行业的发展做了协议上的准备。现在 MQTT 不再是首字母缩写词,而是被认为是协议的正式名称。

参考链接:

  1. /
  2. /
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-29,如有侵权请联系 cloudcommunity@tencent 删除协议物联网mqtt行业系统