热门标签 | 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. 同步解耦, 发布和接收都是异步通讯, 无需停止任何处理


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 介绍一款好用的内网穿透工具FRP
    本文介绍了一款好用的内网穿透工具FRP,它是一个使用Go语言开发的高性能的反向代理应用。FRP支持多种协议类型,并且可以根据域名进行路由转发。 ... [详细]
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社区 版权所有