宁夏昱皓軟件咨询热线0951-5988193(8:30-18:00) 170 4590 8881、17045906999(24h)
當前位置:首頁 >> 媒體中心 >> 常見問題 >> 正文
物聯網開發之MQTT協議?
發布時間:2019-11-29
来源: 昱皓軟件
閱讀量:

物聯網開發技術多種多樣,開發形式也不可勝數,今天我們就開分享當下非常流行的物聯網通信協議MQTT,但凡現在的雲服務商的物聯網設備接入服務都是支持MQTT方式接入的,比如阿裏雲、京東雲、騰訊雲等巨頭雲服務商都有提供物聯網設備管理服務,也都是支持MQTT方式接入、管理物聯網設備的。

MQTT协议流程.jpg

什麽是MQTT?

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。

MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在,通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。


未來幾年,MQTT的應用會越來越廣,值得關注。作爲物聯網開發的我們當然也要對這種協議進行了解和使用。

MQTT.jpg

MQTT有哪些特點?

MQTT協議是爲大量計算能力有限,且工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:

1、使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合;

2、對負載內容屏蔽的消息傳輸;

3、使用 TCP/IP 提供网络连接;

4、有三種消息發布服務質量:

“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

“至少一次”,確保消息到達,但消息重複可能會發生。

“只有一次”,確保消息到達一次。這一級別可用于如下情況,在計費系統中,消息重複或丟失會導致不正確的結果。

5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

MQTT 对比.jpg

MQTT協議消息中間件産品?

目前有很多的MQTT消息中間件服務器,如下,都是MQTT協議的服務器端的實現。

IBM Websphere

MQ Telemetry

IBM MessageSight

Mosquitto

Eclipse Paho

emqttd Xively

m2m.io

webMethods

Nirvana Messaging

RabbitMQ

Apache ActiveMQ

Apache Apollo

Moquette

HiveMQ

Mosca

Litmus Automation Loop

JoramMQ

ThingMQ

VerneMQ


MQTT協議實現方式

實現MQTT協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。

MQTT 订阅.jpg

MQTT傳輸的消息分爲:主題(Topic)和負載(payload)兩部分:


(1)Topic,可以理解爲消息的類型,訂閱者訂閱(Subscribe)後,就會收到該主題的消息內容(payload);

(2)payload,可以理解爲消息的內容,是指訂閱者具體要使用的內容


MQTT協議中的訂閱、主題、會話

MQTT.jpg

a、訂閱(Subscription)

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。


b、會話(Session)

每個客戶端與服務器建立連接後就是一個會話,客戶端和服務器之間有狀態交互。會話存在于一個網絡之間,也可能在客戶端和服務器之間跨越多個連續的網絡連接。


c、主题名(Topic Name)

連接到一個應用程序消息的標簽,該標簽與服務器的訂閱相匹配。服務器會將消息發送給訂閱所匹配標簽的每個客戶端。


d、主题筛选器(Topic Filter)

一個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。


e、負載(Payload)

消息訂閱者所具體接收的內容。


MQTT協議中的方法

MQTT流程.jpg

MQTT協議中定義了一些方法(也被稱爲動作),來于表示對確定資源所進行操作。這個資源可以代表預先存在的數據或動態生成數據,這取決于服務器的實現。通常來說,資源指服務器上的文件或輸出。主要方法有:

(1)Connect。等待與服務器建立連接。

(2)Disconnect。等待MQTT客戶端完成所做的工作,並與服務器斷開TCP/IP會話。

(3)Subscribe。等待完成訂閱。

(4)UnSubscribe。等待服務器取消客戶端的一個或多個topics訂閱。

(5)Publish。MQTT客戶端發送消息請求,發送完成後返回應用程序線程。







信息檢索
昱皓軟件官方微博

官方微博

昱皓軟件官方微信

官方微信

電話:0951-5988193(8:30-17:30)

郵箱:master@yuhaosoft.com.cn

24H:170 4590 8881、170 4590 6999

地址:銀川市經濟技術開發區富安東巷華通達商務樓203室

Copyright @ 昱皓軟件. YUHAO.LTD  甯ICP備16000928號

您好!您是第999999位訪問本站的人