美文网首页
MQTT 简介

MQTT 简介

作者: 觉释 | 来源:发表于2020-06-10 09:26 被阅读0次

    MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。
    有如下场景:
    遥感数据
    汽车
    智能家居
    智慧城市
    医疗医护

    为什么使用MQTT 协议?

    MQTT(英语全称,Message Queue Telemetry Transport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(Internet of Thing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:

    • 特别适合于网络代价昂贵,带宽低、不可靠的环境。
    • 能在处理器和内存资源有限的嵌入式设备中运行。
    • 使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。
    • 使用 TCP/IP 提供网络连接。
    • 提供Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

    主题

    MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。主题并不需要创建,直接使用就是了。
    主题还可以通过通配符进行过滤。其中,+可以过滤一个层级,而只能出现在主题最后表示过滤任意级别的层级。举个例子:
    building-b/floor-5:代表B楼5层的设备。
    +/floor-5:代表任何一个楼的5层的设备。
    building-b/
    :代表B楼所有的设备。
    注意,MQTT允许使用通配符订阅主题,但是并不允许使用通配符广播。

    MQTT支持三种消息发布服务质量(QoS):

    • “至多一次”(QoS==0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    • “至少一次”(QoS==1),确保消息到达,但消息重复可能会发生。
    • “只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

    MQTT原理

    image.png

    MQTT三种身份

    MQTT协议有三种身份:发布者、代理、订阅者,发布者和订阅者都为客户端,代理为服务器,同时消息的发布者也可以是订阅者(为了节约内存和流量发布者和订阅者一般都会定义在一起)。
    MQTT传输的消息分为主题(Topic,可理解为消息的类型,订阅者订阅后,就会收到该主题的消息内容(payload))和负载(payload,可以理解为消息的内容)两部分。

    支持MQTT协议消息中间件产品?

    目前有很多的MQTT消息中间件服务器,如下,都是MQTT协议的服务器端的实现。
    IBM Websphere
    MQ Telemetry
    IBM MessageSight
    Mosquitto
    Eclipse Paho
    emqttd Xively
    webMethods
    Nirvana Messaging
    RabbitMQ
    Apache ActiveMQ
    Apache Apollo
    HiveMQ

    支持一对多的消息订阅

    MQTT协议,支持一对多的基于消息主题(Topic)的消息订阅,也就是一个MQTT的客户端,发送一条特定主题的消息,
    能同时支持多个订阅者同时订阅。
    如下图所示意,笔记本和手机都订阅了消息主题为humidity的消息,当湿度传感器发布了humidity的消息(当前湿度为30%), 笔记本和手机都会受到温度传感器发布的湿度

    image.png

    MQTT客户端的语言支持

    目前市面上的主流语言都支持。
    Java
    Javascript
    C/C++
    Python
    Ruby
    Objective-C

    相关文章

      网友评论

          本文标题:MQTT 简介

          本文链接:https://www.haomeiwen.com/subject/kzhutktx.html