热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

01MQTT介绍

MQTT介绍(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM推出的一种针对移动终端设备的基于TCPIP的发布订阅协议可以连接大量的远程




MQTT 介绍

(Message Queuing TelemetryTransport, 消息队列遥测传输)


  • 是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/订阅协议
  • 可以连接大量的远程传感器和控制设备,MQTT的特点是可以保持长连接, 具有一定的
    实时性
  • 云端向设备端发送消息, 设备端可以在最短的时间内接收到并作出响应
  • MQTT更适合需要实时控制的场合, 尤其适合执行器
  • 要保持长连接, 那么就要时不时地发送心跳包, 这就不会省电
  • 低功耗的场合并不适合MQTT
  • MQTT的长连接需要建立在TCP的基础上,TCP协议的复杂性决定了对设备的要求相比UDP更高一些

MQTT协议特性

1、使用发布/订阅消息模式, 提供一对多的消息发布, 解除应用程序耦合
2、有三种消息发布服务质量(QoS0、 QoS1、 QoS2)


  • “ 至多一次” , 消息发布完全依赖底层 TCP/IP 网络, 会发生消息丢失或重复, 这一级别可用于对采集数据要求不严格的情况
  • “ 至少一次” , 确保消息到达, 但消息可能会重复发生
  • “ 只有一次” , 确保消息只到达一次,这一级别可用于要求严格如涉及计费系统的情况, 消息重复或丢失都是不允许的

3、小型传输, 开销很小( 固定长度的头部是2字节) , 协议交换最小化, 以降低网络流量
4、使用Last Will和Testament特性通知有关各方客户端异常中断的机制
5、允许用户动态创建主题, 零运维成本
6、把低带宽、 高延迟、 不稳定的网络等因素考虑在内
7、假设数据不可知, 不强求传输数据的类型与格式, 保持灵活性
8、官网: http://mqtt.org/


MQTT协议中心是MQTT服务器或代理(broker)

在这里插入图片描述


  • 用户可以使用MQTT构建一个传感器网络,其中各种传感器都能够以其传感器独有的消息形式发布传感器值,订阅程序能够订阅不同的消息, 以据此采取措施,MQTT代理将处理从发布程序到订阅程序的转发消息。
  • MQTT服务器除了收集转发数据, 还可以进行数据处理和存储, 例如, 实时存储共享单车车辆运行位置、 电池用量、 状态信息等数据, 以及对总体的车辆数据进行计算和统筹管理, 甚至为一些聊天工具提供平台服务。

MQTT主题模式:

1、MQTT是通过主题对消息进行分类的
2、主题本质上就是一个UTF-8的字符串
3、主题可以通过反斜杠表示多个层级关系
4、主题并不需要创建, 直接使用就是了
5、主题还可以通过通配符进行过滤


  • + 可以过滤一个层级
  • *只能出现在主题最后表示过滤任意级别的层级
    举个例子:
    1. building-b/floor-5: 代表B楼5层的设备
    2. +/floor-5: 代表任何一个楼的5层的设备
    3. building-b/*: 代表B楼所有的设备

MQTT中有3个角色:


  • 发布者Publisher
  • 订阅者Subscriber
  • 代理Broker

MQTT这种结构替代了传统的客户端/服务器模型,可以实现以下解耦:


  1. 空间解耦, 发布者和订阅者不需要知道对方
  2. 时间解耦, 发布者和订阅者不需要同时运行( 离线消息)
  3. 同步解耦, 发布和接收都是异步通讯, 无需停止任何处理


推荐阅读
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文深入探讨了计算机网络的基础概念和关键协议,帮助初学者掌握网络编程的必备知识。从网络结构到分层模型,再到传输层协议和IP地址分类,文章全面覆盖了网络编程的核心内容。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
author-avatar
mobiledu2502890213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有