MQTT_介绍_1.1

历史

  • 1999年:MQTT最初由IBM的Andy Stanford-Clark和Cirrus Link的Arlen Nipper开发,用于满足石油和天然气公司在远程地区监控设备的需求。

  • 2006年:IBM发布了MQTT的最初开源实现,但此时MQTT并未获得广泛的关注。

  • 2010年:随着物联网(IoT)的兴起,MQTT开始被更广泛地采用,并逐渐有了更多的开源实现。

  • 2011年:Eclipse基金会启动了Eclipse Paho项目,提供了一系列开源的MQTT客户端库,支持多种编程语言。

  • 2012年:Eclipse基金会启动了Eclipse Mosquitto项目,提供了一个开源的MQTT代理(broker)实现。

  • 2014年:MQTT成为OASIS标准,这标志着它的发展进入了一个新的阶段,并进一步推动了开源社区对MQTT协议的兴趣和参与。

  • 2016年:MQTT 3.1.1版本被正式批准为OASIS标准,这是MQTT的第一个正式标准版本。

  • 2019年:MQTT 5.0版本发布,提供了许多新特性,包括更好的错误处理、共享订阅、消息属性和增强的安全性。开源社区迅速跟进,更新了各种开源实现以支持新版本。

  • 至今:MQTT的开源实现继续发展,如Eclipse Paho和Mosquitto等项目,这些项目的成功和普及直接促进了MQTT协议的广泛应用和发展。同时,其他开源项目如HiveMQ、VerneMQ等也提供了不同的功能和服务,丰富了MQTT的开源生态系统。

特点

 

  1. 轻量级:MQTT设计简洁,消息头很小,可以最小化网络带宽的使用,适合在资源受限的环境中运行,如物联网设备。

  2. 发布/订阅模式:MQTT使用发布/订阅消息模式,允许一个消息被发送到一个主题(topic),并且所有订阅了该主题的客户端都会收到这个消息。这种模式解耦了发布者和订阅者,提高了系统的可扩展性和灵活性。

  3. 服务质量(QoS)级别:MQTT支持三种不同的服务质量级别,以适应不同的网络环境和应用需求:

    • QoS 0:最多一次交付。消息可能会丢失,但不会重复。
    • QoS 1:至少一次交付。消息不会丢失,但可能会重复。
    • QoS 2:确保一次交付。消息不会丢失也不会重复。
  4. 持久会话:MQTT支持持久会话,客户端可以指示代理(broker)存储其订阅信息和未确认的消息,即使客户端断开连接后重新连接,也能恢复会话状态。

  5. 遗嘱消息(Last Will and Testament):客户端在连接到代理时可以指定一个遗嘱消息,如果客户端非正常断开连接,代理会将这个遗嘱消息发布到指定的主题。

  6. 小型传输优化:MQTT协议优化了小型传输,适合在带宽有限和不稳定的网络环境中使用,如移动通信网络或卫星链路。

  7. 安全性MQTT支持多种安全性选项,包括使用TLS(Transport Layer Security)加密传输,以确保数据的安全和隐私。

  8. 跨平台兼容性MQTT可以在多种平台上运行,包括嵌入式系统、服务器、移动设备等,支持多种编程语言。

  9. 易于使用和集成:MQTT的简单性和灵活性使其易于集成到现有的系统和应用程序中,同时也便于开发者快速上手和使用。

  10. 社区支持和开源实现:MQTT有广泛的社区支持,并且有多种开源实现,如Eclipse Paho和Mosquitto,这些实现提供了客户端和代理的代码,可以自由使用和修改。

  11. 适应性强:MQTT协议可以适应各种网络环境和应用场景,包括物联网、移动应用、智能家居、工业自动化等。

  12. 可扩展性:MQTT协议设计允许通过添加新的功能和服务来扩展协议,以适应未来的需求和发展

 MQTT 5.0   与    3.1.1的区别

MQTT 5.0是MQTT协议的第四个正式版本,它在2019年发布,提供了许多新特性和改进,与之前的3.1.1版本相比,MQTT 5.0在性能、功能和安全方面都有显著的提升。以下是MQTT 5.0与3.1.1版本之间的一些主要区别:

 

  1. 增强的认证和授权:MQTT 5.0提供了更灵活的认证和授权机制,支持多种认证方法。

  2. 消息和主题属性:MQTT 5.0增加了对消息和主题属性的支持,允许在发布消息时附加额外的元数据。

  3. 共享订阅:MQTT 5.0允许客户端通过共享订阅的方式来订阅主题,以提高系统的可扩展性和性能。

  4. 响应信息:MQTT 5.0支持响应信息,允许客户端在发布消息时请求一个响应。

  5. 改进的会话管理:MQTT 5.0提供了更精细的会话管理控制,包括会话过期的设置和会话终结的原因。

  6. 增强的错误报告:MQTT 5.0增加了更多的错误代码和原因字符串,使得错误报告更加详细和有用。

  7. 消息重传:MQTT 5.0在QoS 1和QoS 2中引入了消息重传机制,以提高消息的可靠传输。

  8. 流量控制:MQTT 5.0提供了流量控制功能,以避免过载。

  9. 用户属性:MQTT 5.0允许在连接、发布、订阅等操作中添加用户属性,以提供额外的上下文信息。

  10. 更好的性能和可扩展性:MQTT 5.0在设计上考虑了更好的性能和可扩展性,以适应未来的需求和发展。

  11. 兼容性:虽然MQTT 5.0引入了许多新特性,但它仍然保持了与3.1.1版本的兼容性。

 

 MQTT 常用的服务器

 

MQTT服务器(也称为MQTT代理或MQTT broker)是MQTT(Message Queuing Telemetry Transport)协议中的核心组件,负责接收客户端的连接请求、处理客户端的订阅和发布消息请求,并将消息路由到相应的订阅者。以下是几种常用的MQTT服务器:

 

  1. Eclipse Mosquitto:这是一个开源的MQTT服务器,由Eclipse基金会维护。它支持MQTT 3.1、3.1.1和5.0版本,具有高度的可扩展性和可靠性,适用于各种规模的部署。

  2. HiveMQ:这是一个商业化的MQTT服务器,提供企业级的功能和性能。HiveMQ支持MQTT 3.1、3.1.1和5.0版本,并且提供了丰富的插件和扩展功能。

  3. IBM MQTT Server:这是IBM提供的一个MQTT服务器,支持MQTT 3.1和3.1.1版本。它提供了高可用性和安全性,并且可以与其他IBM产品集成。

  4. VerneMQ:这是一个由Erlang社区开发的MQTT服务器,支持MQTT 3.1、3.1.1和5.0版本。它具有高可用性和可扩展性,并且支持多种认证和授权机制。

  5. EMQX:这是一个由EMQ公司开发的MQTT服务器,支持MQTT 3.1、3.1.1和5.0版本。它提供了丰富的插件和扩展功能,以及高可用性和安全性。//有大量的中文资料并且开源

 官网

Eclipse Mosquitto™ 开源 MQTT 代理

EMQX官网 

 

 MQTT 发布/订阅模式介绍

发布者(Publisher)//发信息

  • 发布消息:发布者是发送消息的客户端,它将消息发布到一个特定的主题(Topic)。
  • QoS级别:发布者可以选择不同的服务质量级别(QoS Levels),以控制消息的可靠传输:
    • QoS 0:最多一次(At Most Once) - 消息可能会丢失,但不会重复发送。
    • QoS 1:至少一次(At Least Once) - 消息不会丢失,但可能会重复发送。
    • QoS 2:精确一次(Exactly Once) - 消息不会丢失也不会重复发送。

订阅者(Subscriber)//接收信息

  • 订阅主题:订阅者是接收消息的客户端,它可以订阅一个或多个主题。
  • 接收消息:订阅者会接收所有发布到其订阅主题的消息。
  • QoS级别:订阅者也可以指定它希望接收消息的QoS级别。

代理(Broker)//服务器

  • 消息路由:代理是MQTT的核心组件,负责接收发布者的消息,并将消息路由到订阅该主题的订阅者。
  • 持久会话:代理可以存储订阅者和发布者的会话信息,以便在网络断开后重新连接时恢复会话状态。

遗嘱消息(Last Will and Testament)

  • 发布遗嘱:当客户端断开连接时,如果配置了遗嘱消息,代理会发布一个消息到指定的主题,通知其他客户端该客户端已经断开。

 主题(Topic)

  • 主题是 MQTT 进行消息路由的基础,它类似 URL 路径,使用斜杠 / 进行分层,比如 sensor/1/temperature。一个主题可以有多个订阅者,代理会将该主题下的消息转发给所有订阅者;一个 主题也可以有多个发布者,代理将按照消息到达的顺序转发。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704089.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业计算机服务器中了faust勒索病毒如何处理,faust勒索病毒解密恢复

随着网络技术的不断发展与应用,越来越多的企业利用网络走向了数字化办公模式,网络也极大地方便了企业生产运营,大大提高了企业生产效率,但对于众多企业来说,企业的数据安全一直是大家关心的主要话题,保护好…

虚拟机不同网卡模式的使用

前言 了解虚拟机不同网卡模式,并能正确使用网卡连接模式来处理工作学习上的问题,有时候是非常重要的。也许,你也有过使用虚拟机过程中,在网络上花费不少时间的情况,那么这篇文章可能适合你。 一、区别 如上图&#x…

管道液位传感器与浮球开关哪个可靠性强?

光电管道传感器采用红外光学组件,利用光折射原理来进行液位检测。相比传统的机械式传感器,光电传感器不容易出现低精度和卡死失效的问题。机械式传感器需要通过机械装置来感知液位,容易受到机械零件的磨损和故障的影响,从而导致传…

源代码防泄漏之沙盒技术分析

随着企业信息化的快速发展,对于单位来说,网络中包含了很多重要的信息资料,比如网络中积累和掌握了大量的研发数据、生产数据和运营信息等,组织不希望这些资料离开企业内部的网络环境,甚至不允许在网络外部传递与交流&a…

一招教你学浪app视频如何下载到本地

在这个知识爆炸的时代,学习从未如此便捷,而今天,我要分享的这个小秘密,将彻底改变你获取知识的方式:一招教你如何将学浪课程轻松下载到本地,让精彩的学习内容随时随地触手可及,开启你的随身学习…

如何利用R包进行主成分分析和可视化

一. 使用R包“FactoMineR”进行主成分分析(PCA) 基本步骤如下: 安装和加载包:如果尚未安装,首先安装“FactoMineR”包,然后加载它: install.packages("FactoMineR")library(FactoM…

4种企业防泄密的办法,强烈推荐第二种

4种企业防泄密的办法,强烈推荐第二种 企业信息泄密常见的原因有内部人员、黑客、违规收集信息、第三方合作商,以下将为你详细分析这些泄密原因以及应对的方法。 1、内部人员泄密 内部员工由于能够接触到敏感数据,成为主要的泄露数据群体。这…

Python——Pandas的基本使用方法(1)

1.文件读写 图1-1 iris部分数据 图1-2 tips部分数据 图1-3 tips1部分数据 1.1 读取csv文件 —— read.csv() read.csv()部分参数的解释如下: 参数名称作用备注filepath_or_buffer要读取的文件路径或对象sep字段分隔符,默认为逗号delimiter字段分隔符与…

【刷题(3)】双指针

一、双指针问题基础 二、283. 移动零 1 题目 2 解题思路 (1)遍历数组,把不是零的放到一个新容器中 (2)遍历结束后,在新容器末尾插入0 (3)注意,必须在不复制数组的情况…

Spark RDD案例:统计网站每月访问量

这个项目利用Spark技术,通过统计网站访问记录中的日期信息,实现了对每月访问量的统计和排序。通过分析数据,我们可以了解到不同月份的网站访问情况,为进一步优化网站内容和推广策略提供数据支持。 使用Spark统计网站每月访问量 …

互联网上的IP地址定位的应用及意义

在当今高度互联的数字时代,IP地址定位技术发挥着重要作用,帮助企业、机构和个人在多种应用场景中提高效率、保障安全和优化服务。IP数据云将深入探讨IP地址定位技术的具体应用及其实际意义。 什么是IP地址定位? IP地址定位IP数据云 - 免费IP…

Vue 快速入门:Vue初级

语法规则 前端渲染 渲染有几种方式:原生js、js模板、Vue模板语法 原生js 使用字符串拼接 js模板语法 Vue.js 模板语法概述 Vue.js 是一个用于构建用户界面的渐进式框架,其模板语法非常灵活和直观。Vue 的模板语法基于 HTML,可以通过指令…