EdgeX Foundry初體驗(六)--協議介紹:MQTT


1,MQTT 介紹

(1)MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是 IBM 開發的一個即時通訊協議,它是一種輕量級的、基於代理的“發布/訂閱”模式的消息傳輸協議。
(2)MQTT 具有協議簡潔、小巧、可擴展性強、省流量、省電等優點,比較適合於在低帶寬、不可靠的網絡的進行遠程傳感器和控制設備通訊等,正在日益成為物聯網通信協議的重要組成部分。

 

 

 

2,MQTT 特性

MQTT 協議工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
 
(1)使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合。
 
(2)對負載內容屏蔽的消息傳輸。
 
(3)使用 TCP/IP 提供網絡連接。
  • 主流的 MQTT 是基於 TCP 連接進行數據推送的,但是同樣有基於 UDP 的版本,叫做 MQTT-SN。這兩種版本由於基於不同的連接方式,優缺點自然也就各有不同了。
 
(4)有三種消息發布服務質量:
  • “至多一次”:消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復。這一級別可用於如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因為不久后還會有第二次發送。這一種方式主要普通 APP 的推送,倘若你的智能設備在消息推送時未聯網,推送過去沒收到,再次聯網也就收不到了。
  • “至少一次”:確保消息到達,但消息重復可能會發生。
  • “只有一次”:確保消息到達一次。在一些要求比較嚴格的計費系統中,可以使用此級別。在計費系統中,消息重復或丟失會導致不正確的結果。這種最高質量的消息發布服務還可以用於即時通訊類的 APP 的推送,確保用戶收到且只會收到一次。 
 
(5)小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量。
  • 這就是為什么在介紹里說它非常適合“在物聯網領域,傳感器與服務器的通信,信息的收集”,要知道嵌入式設備的運算能力和帶寬都相對薄弱,使用這種協議來傳遞消息再適合不過了。

 

3,實現方式

(1)實現 MQTT 協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT 協議中有三種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中:
  • 消息的發布者和訂閱者都是客戶端
  • 消息代理是服務器
  • 消息發布者可以同時是訂閱者
 
(2)MQTT 傳輸的消息分為:主題(Topic)和負載(payload)兩部分:
  • Topic:可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會收到該主題的消息內容(payload);
  • payload:可以理解為消息的內容,是指訂閱者具體要使用的內容。

 

4,MQTT 發布訂閱模式簡述

(1)MQTT 是發布訂閱(Publish/Subscribe) 模式的消息協議,與 HTTP 協議請求響應(Request/Response) 模式不同。
 
(2)MQTT 發布者與訂閱者之間通過“主題”(Topic) 進行消息路由,主題(Topic) 格式類似 Unix 文件路徑,例如:
MQTT 主題(Topic) 支持’+’, ‘#’的通配符:
 
 
  • +:通配一個層級
  • #:通配多個層級(必須在末尾)
1
2
3
4
5
6
7
8
9
10
11
sensor/1/temperature
 
chat/room/subject
 
presence/user/feng
 
sensor/1/ #
 
sensor/+/temperature
 
uber/drivers/joe/inbox

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM