首页 > 其他分享 >MQTT是什么?

MQTT是什么?

时间:2024-09-10 20:51:37浏览次数:10  
标签:协议 订阅 什么 用户 MQTT 消息 客户端

1.MQTT是什么? 

        MQTT协议全称是(Message Queuing Telemetry Transport),即消息队列遥测传输协议。是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,并且该协议构建于TCP/IP协议之上,我们知道TCP协议本身就具有高可靠性的特点,因此基于其上的MQTT协议同样也是具有高可靠、低开销的特点,之所以低开销,是以为MQTT协议传输的最小的报文也只有两个字节。在物联网开发中,MQTT不是唯一的选择,与MQTT互相竞争的协议有XMPP和CoAP协议等。

        关于发布和订阅的概念我们拿抖音平台来举个例子,我们每一个用户就都是一个客户端,而抖音就是MQTT协议中的服务器,当我们(用户一)关注某一个视频发布者(用户二)时,这样一个关注的行为就可以理解为订阅;同时用户二也可以关注你,那么这就是相互订阅。当用户二发布作品的时候,这个作品是发布到了抖音平台,也就是我们现在的服务器,这个过程就是消息的发布。

        在这里需要注意的是:用户二(客户端)发布的消息并不是直接发布给了用户一,而是发布到了抖音平台(服务器),由于用户一订阅了用户二的消息(相当于点了关注),所以抖音平台(服务器)就会向用户一推送这个消息(注意发布和推送的区别)。这就是MQTT协议订阅&发布的一个简单比喻。

        上面是一个比喻,再来对比一下实际的MQTT协议通信模型:

        实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

        MQTT传输的消息分为:主题(Topic)和负载(payload)两部分。

  • Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
  • payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

2.特点

  • 开放消息协议,简单易实现
  • 发布订阅模式,一对多消息发布
  • 基于TCP/IP网络连接,提供有序,无损,双向连接。
  • 1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
  • 消息QoS支持,可靠传输保证

3.应用

        MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

  • 物联网M2M通信,物联网大数据采集
  • Android消息推送,WEB消息推送
  • 移动即时消息,例如Facebook Messenger
  • 智能硬件、智能家具、智能电器
  • 车联网通信,电动车站桩采集
  • 智慧城市、远程医疗、远程教育
  • 电力、石油与能源等行业市场 

最新消息

MQTT v5.0现在成为了OASIS官方标准

        OASIS现在已经发布了官方的MQTT v5.0标准 - 这对于已经为物联网(IoT)所用的消息传输协议来说,这是一个改进和功能的巨大飞跃。基于早期的v3.1.1标准,它具有重要的更新,同时最大限度地减少与现有版本的不兼容性。

        新版本的亮点包括:

  • 更好的错误报告 - 特别是,在发布的响应中添加了原因代码(PUBACK / PUBREC)。MQTT起源于输油管道沿线的传感器等使用案例 - 如果它们的消息发布未能传输,则传感器将不采取任何措施。然而,MQTT的用例现在要广泛得多,如果数据没有成功传输,手机上的应用程序可能会想要警告用户。返回代码现在出现在所有确认中(以及包含人类可读错误诊断的可选原因字符串)。
  • 共享订阅 - 如果订阅上的消息速率很高,则可以使用共享订阅在多个接收客户端之间对消息进行负载平衡。
  • 消息属性 - 消息标题中的元数据。这些用于实现此列表中的其他功能,但也允许用户定义的属性,例如通过告知接收方使用哪个密钥来解密消息内容来协助消息加密
  • 消息过期 - 如果消息无法在用户定义的时间段内传递,则可以选择丢弃消息。
  • 会话到期 - 如果客户端未在用户定义的时间段内连接,则可以丢弃状态(例如,订阅和缓冲的消息)而无需进行清理。
  • 主题别名 - 允许将消息中的主题字符串替换为单个数字,从而减少发布者重复使用相同主题时需要传输的字节数。
  • Will Delay - 如果客户端断开连接的时间超过用户定义的时间段, 则允许发布消息。允许有关重要客户端应用程序中断的通知, 而不会被误报淹没。
  • 允许的功能发现 - 在连接开始时,可​​以传输最大数据包大小和(QoS> 0)消息的数量限制,以通知客户端允许执行的操作。 新功能的完整列表见标准的附录C

标签:协议,订阅,什么,用户,MQTT,消息,客户端
From: https://blog.csdn.net/huaqianzkh/article/details/142108723

相关文章

  • 什么是内存不安全
    内存不安全:是指计算机程序中存在可能导致程序崩溃,数据泄露或者恶意攻击的漏洞。这种问题通常涉及到对内存的错误操作,可能导致程序访问问未分配的内存、访问已经释放的内存、越界访问数组等情况。​ 从硬件层面来看,内存不安全可能涉及到内存泄漏、缓冲区溢出等问题。比如,当程序......
  • 模型中到底什么决定了效果
    在工作过程中,我们训练模型时,到底是哪些因素影响最大?模型深度,模型宽度,head个数,head深度,输入大小,输出大小等等。在工业界中,基于深度学习的检测模型尤其应用广泛。今年由于内部变动,接触了各种不同的项目和模型。发现一个规律,模型可以很小,但是数据量很大时,一样能提高效果。同时输入尺......
  • post为什么会发送两次请求?
    之前有人跟我们说,出去面试的时候,有时候会遇到一些让人头疼的问题,比如有一次去字节面试,面试官就问了一个让他很奇怪的问题:“为啥POST请求有时候会发送两次呢?”这个问题听起来挺玄乎的,但其实用大白话来说,原因还挺简单的。咱们这就来聊聊这个事儿。首先,得明白啥是POST请求。POST请求......
  • 第一章 什么是支付
    前言  本文中有很多概念性的东西,有的是我自己润色的自己的理解,有的是整合了多种互联网上的一些简介。希望看完这篇文章,能够对支付有一个大体的概念,在这方面开展工作的时候有所帮助。从我个人理解上来说,我的观点是了解更多的相关概念能够让后面软件系统落地的时候想的更......
  • 什么是TIOBE?
    TIOBE是编程语言排行榜(theimportanceofbeingearnest”的缩写),会定期的发布编程语言的排名列表。TIOBE通过计算搜索引擎的搜索结果来对编程语言的流行度进行评估,当然,在评估的过程中会屏蔽掉与编程语言无关或者泛化的结果,以此来提高评估结果的精确度。但是TIOBE也具有一定的局限......
  • 【学习】为什么许多大型APP会采用RPC而不是HTTP协议呢?
    https://mp.weixin.qq.com/s/JD5qDjYFVn37pAC6W5JuDw原创前端欧巴在回答这个问题之前我们有必要系统性的了解一下RPC是何方神圣。---------------------------------------------------------------------------------------------RPC(RemoteProcedureCall,远程过程调用)是......
  • 高防IP有什么用
    高防IP是针对互联网服务器在遭受大流量的DDOS攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防IP,将攻击流量引流到高防IP,确保源站的稳定可靠。(无需转移数据,理论上任何主机都可以使用高防IP来防护DDOS攻击。)高防IP是指高防机房所提供的IP段,主要是针对网络......
  • 服务器中的清洗是什么
    在IDC服务里,有不少专用名词,没有深入行业了解,往往会感觉不知所云。在高防服务器租用中,我们会看到高防服务器清洗这样的说法,“清洗”是指什么服务呢?清洗的又是什么内容?高防服务器“清洗”一般指的是流量清洗,是提供给租用服务器的客户,针对对其发起的DOS/DDOS攻击的监控、告警和......
  • 源代码加密是什么?如何做源代码加密?
    源代码加密是什么?如何做源代码加密?在软件开发过程中,版本管理工具如SVN和GIT是不可或缺的组成部分,它们帮助团队管理源代码的变更和版本。然而,这些工具也面临着源代码泄露的安全风险。如果不针对数据进行加密保护,很容易出现“一锅端”的现象。所以源代码开发环境复杂,涉及的开发......
  • CMDB是什么软件?对企业有什么用?
    配置管理数据库缩写为CMDB,英文全称为ConfigurationManagementDatabase,是一种用于记录和管理企业信息技术基础设施(IT基础设施)和所有相关资源的数据库软件。CMDB的主要功能是收集、存储和分析所有IT基础设施和服务的信息,以确保企业在进行配置管理、问题解决和变更管理等方面具有......