物联网协议的王者:MQTT

简介: MQTT是一种轻量级的开放式消息传递协议,它为资源受限的网络客户端提供了一种在低带宽环境中分发遥测信息的简单方法,采用发布/订阅通信模式,用于机器对机器 ( M2M ) 通信。

你好,这里是网络技术联盟站。

今天跟大家聊一下物联网协议中比较著名的协议:MQTT。

让我们直接开始!

什么是MQTT?

  • 英文全称:Message Quueuing Telemetry Transport
  • 中文术语:消息队列遥测传输协议
  • 一种适用于物联网设备之间通信的简单消息传递协议
  • 专为带宽受限的设备而设计
  • 采用发布/订阅通信模式
  • 用于机器机器 ( M2M ) 通信
  • MQTT 协议基于OASIS 标准下的TCP/IP
  • 被广泛用于无线网络通信,具有广泛的覆盖面,涵盖医疗保健、汽车和其他使用物联网应用的行业。

MQTT的历史

MQTT 最初由 Andy Stanford-Clark 博士和 Arlen Nipper 博士于 1999 年创建,用于通过卫星连接石油管道遥测系统。

两位发明者为未来的协议指定了几个要求:

  • 简单的实现
  • 服务质量数据交付
  • 轻量级和带宽效率
  • 数据不可知
  • 持续的会话

MQTT 于 2013 年在结构化信息标准促进组织 (OASIS) 下被标准化为开源,OASIS 仍然管理 MQTT 标准。

MQTT的优势

MQTT有以下优势:

简单

使用 MQTT 启动和运行起来既快速又简单。

搭建只需要几条命令就可以搞定,启动也是非常快,还有专门的管理界面。

可靠

许多物联网设备依赖无线电连接来传输和收集数据,这意味着连接并不总是可靠的。

MQTT 通过提供内置的 QoS 功能来减少连接问题,该功能可以将消息排队,将它们保存在 MQTT 代理中,并让它们等待目标设备全部设置好接受它,这降低了消息错位的几率,因此消息注定要到达目的地。

双向消息传递

任何设备、事物或应用程序都可以发布或订阅由 MQTT 代理处理的任何主题。

这不是单向的,比如只能发布或者只能订阅,是既能发布又能订阅,类似于全双工通信。

大规模消息传递

由于Broker的存在,所以不管是100万台设备,还是100台设备,对于MQTT都是一样的,没有啥压力,因为最终消息都是传递到Broker中,不管多少个客户端监听消息,也是从Broker中拿。

MQTT工作原理

MQTT架构

MQTT 使用 PUSH/SUBSCRIBE(发布订阅) 模型在 TCP/IP 之上运行,在 MQTT 架构中,有两种类型的系统:

  • 客户端
  • 代理

代理是客户端与之通信的服务器,代理接收来自客户端的通信并将这些通信发送给其他客户端,客户端之间不直接通信,而是连接到代理,每个客户端可以是发布者、订阅者或两者兼而有之。

MQTT 是一种事件驱动的协议,没有定期或持续的数据传输,这使传输保持在最低限度。客户端仅在有信息要发送时发布,代理仅在新数据到达时向订阅者发送信息。

发布/订阅

在发布和订阅系统中,设备可以在某个主题上发布消息,也可以订阅特定主题以接收消息。

如图,设备 1 在某个主题上发布消息,设备 2 订阅了与设备 1发布的主题相同的主题,随后设备 2 就能接收到消息。

消息

消息是设备之间交换的信息,比如一些指令,或者设备的一些信息,或者是其他需要交换的信息。

主题

如图所示,我用一张图一句话解释一下:主题就是你微信订阅公众号的类型。

以公众号为例,创作者是一个个发布者,公众号的服务器是Broker,读者是订阅者,不同领域的发布者向不同的主题(领域)发布文章,比如瑞哥一般都是朝科技领域发布文章,那么所有读者(订阅者)订阅了科技领域的都可以看到我的文章。

这个领域就可以大致理解为主题。

主题用正斜杠分隔的字符串表示,每个正斜杠表示一个主题级别

如图在公众号 文章类型中科技领域创建网络类型的主题:

注意:主题区分大小写,两个主题不同:

如果读者想要看网络方向的文章:

  • 发布者在article/technology/network主题发布OSPF相关的文章
  • 订阅者订阅了主题article/technology/network
  • 发布者在主题article/technology/network上有新消息发出的时候,订阅者都能订阅到。

Broker 经纪人

经纪人其实就是代理

MQTT 代理负责接收所有消息, 过滤消息, 决定谁对它们感兴趣,然后将消息发布给所有订阅的客户端。

MQTT订阅

MQTT 客户端不直接相互连接,而是订阅主题以接收消息。

要订阅主题,客户端必须首先向代理发送订阅请求,SUBSCRIBE 请求可以包含多个主题,代理使用 SUBACK(确认订阅)响应来响应 SUBSCRIBE 请求,订阅还具有 QoS 设置,可用于降级已发布消息的 QoS。在这种情况下,消息总是以较低的 QoS 设置发布。

订阅通配符

订阅通配符有两种:

单级

单级通配符替换一个主题级别:

此通配符将涵盖以下主题:

  • 文章/娱乐/网络
  • 文章/科技/网络
  • 文章/三农/网络
  • 文章/新闻/网络
多级

多级通配符替换多个主题级别:

此通配符将涵盖以下主题:

  • 文章/娱乐/网络
  • 文章/科技/java
  • 文章/三农/美食
  • 文章/新闻/航天

服务质量 QoS

  • QoS 0(最多一次):客户端的消息只发送一次,不管它是否已经到达代理。
  • QoS 1(至少一次):客户端的消息被一遍又一遍地发送,直到代理以确认接收来响应,这可能导致消息多次到达代理。
  • QoS 2(恰好一次):客户端发送一次消息,同时确保它已到达代理,QoS 2 通信需要比服务质量 0 或 1 更多的带宽。

MQTT几个重要的网站

  • mqtt官网:https://mqtt.org/

  • emqx官网:https://www.emqx.com/

总结

MQTT是一种轻量级的开放式消息传递协议,它为资源受限的网络客户端提供了一种在低带宽环境中分发遥测信息的简单方法,采用发布/订阅通信模式,用于机器对机器 ( M2M ) 通信。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
1月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】物联网(IoT)的兴起催生了多种通信协议,如MQTT、CoAP、RESTful/HTTP和XMPP,各自适用于不同场景。本文将对比这些协议的特点、优缺点,并提供示例代码。MQTT轻量级且支持QoS,适合大规模部署;CoAP基于UDP,适用于低功耗网络;RESTful/HTTP易于集成但不适合资源受限设备;XMPP支持双向通信,适合复杂交互应用。通过本文,开发者可更好地选择合适的物联网通信协议。
34 2
|
1月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
121 0
|
2月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
75 0
|
2月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
62 0
|
22天前
|
存储 安全 物联网
未来触手可及:区块链技术、物联网与虚拟现实的融合趋势
【9月更文挑战第34天】本文将探讨当前最具变革性的三大技术——区块链、物联网(IoT)和虚拟现实(VR)——如何独立及联合塑造我们的未来。我们将深入分析每种技术的内在工作机制、发展趋势,以及它们如何相互交织创造出新的应用场景,进而推动社会进步和经济发展。
|
21天前
|
供应链 物联网 区块链
未来技术的浪潮之下——区块链、物联网与虚拟现实的融合与发展
【9月更文挑战第35天】在技术不断进步的今天,新兴技术如区块链、物联网和虚拟现实正在改变我们的生活方式。本文将深入探讨这些技术的发展趋势,以及它们如何在不同领域中应用,从而带来创新和便利。我们将通过具体的例子来展示这些技术如何相互融合,共同推动社会向前发展。
|
2天前
|
存储 供应链 物联网
探索未来:区块链、物联网与虚拟现实技术的融合与创新
【10月更文挑战第15天】本文深入探讨了新兴技术如区块链、物联网(IoT)和虚拟现实(VR)的发展趋势及其在现代社会的应用。通过分析这些技术的独特属性和它们如何相互补充,我们揭示了一个由高度互联、智能化和沉浸式体验定义的未来图景。文章不仅讨论了这些技术当前的挑战,还展望了它们在未来可能带来的转变,旨在为读者提供对这些令人兴奋的技术趋势的全面理解。
|
2天前
|
安全 物联网 区块链
未来已来:探索区块链技术、物联网与虚拟现实的融合趋势
【10月更文挑战第15天】 在数字化浪潮中,区块链、物联网(IoT)和虚拟现实(VR)技术正引领着一场革命。本文将深入探讨这三种技术的发展趋势和相互融合的潜力,以及它们如何共同塑造我们的未来。我们将从基本概念入手,逐步揭示这些技术如何影响经济、社会和日常生活,同时提供具体应用场景以展示其变革力量。
|
4天前
|
传感器 监控 物联网
新技术趋势与应用在科技日新月异的今天,新兴技术如物联网、虚拟现实等正以前所未有的速度改变着我们的生活。本文将深入探讨这些技术的发展趋势和应用场景,揭示它们如何塑造未来。
本文聚焦于物联网和虚拟现实等新兴技术的发展动态及其广泛应用。通过分析当前技术进展、实际应用案例以及未来发展的可能性,本文揭示了这些技术如何深刻影响各行各业,并对未来的趋势进行了展望。
|
6天前
|
供应链 物联网 区块链
未来技术浪潮:区块链、物联网与虚拟现实的融合与创新
【10月更文挑战第11天】 本文深入探讨了区块链技术、物联网(IoT)和虚拟现实(VR)这三种前沿技术的发展趋势及其在各领域的应用前景。通过分析每种技术的核心特点和潜在应用场景,揭示了它们如何相互融合、促进创新,并共同塑造未来社会的面貌。
26 3

相关产品

  • 物联网平台