一赏表、什么是MQTT除秀?
-
概念:MQTT (Message Queue Telemetry Transport)祝高,消息隊列遙測傳輸協(xié)議,其主要提供了訂閱/發(fā)布兩種消息模式吐葵,更為簡約规揪、輕量,易于使用温峭,特別適合于受限環(huán)境(帶寬低、網絡延遲高凤藏、網絡通信不穩(wěn)定)的消息分發(fā)栗菜,屬于物聯(lián)網(Internet of Thing)的一個標準傳輸協(xié)議桨昙。
-
特點:
- 特別適合于網絡代價昂貴,帶寬低凹蜂、不可靠的環(huán)境。
- 能在處理器和內存資源有限的嵌入式設備中運行狂打。
- 使用發(fā)布/訂閱消息模式蝗拿,提供一對多的消息發(fā)布哀托,從而解除應用程序耦合(http協(xié)議是一對一的)。
- 使用 TCP/IP 提供網絡連接,主流的MQTT是基于TCP連接進行數據推送的辛慰,但是同樣有基于UDP的版本,叫做MQTT-SN。這兩種版本由于基于不同的連接方式溺职,優(yōu)缺點自然也就各有不同了(使用UDP協(xié)議框架的也有一個是COAP協(xié)議,同樣也是主要應用于物聯(lián)網為受限的環(huán)境設計的)。
- 提供Last Will(即遺言機制澜躺,用于通知同一主題下的其他設備發(fā)送遺言的設備已經斷開了連接。) 和 Testament(遺囑機制,功能類似于Last Will朋截。) 特性通知有關各方客戶端異常中斷的機制。
- 對負載內容屏蔽的消息傳輸。
二剧蹂、MQTT能做什么?
主要使用在物聯(lián)網方面的,包括機器與機器(M2M)通信和物聯(lián)網(IoT)。
三、MQTT協(xié)議介紹
-
MQTT協(xié)議的基本結構
a. 固定頭(Fixed Header):主要是記錄消息的Qos龙宏、消息類型、是否重復發(fā)送(DUP)等徒像。結構如下:
b. 可變頭(Variable header):主要記錄協(xié)議名黍特、協(xié)議的版本(一個字節(jié)表示)、用戶名锯蛀、密碼灭衷、主題名(最多支持32,767個字符)、返回值等旁涤。
c. 負載(Payload): 包含消息的唯一標識符翔曲、在發(fā)布中的有效負載就包含發(fā)布的內容迫像。在訂閱中的有效負載就包括訂閱的列表以及訂閱主題的QoS值。 -
服務質量(QoS)
QoS服務質量:
a. “至多一次”(QoS==0)瞳遍,消息發(fā)布完全依賴底層 TCP/IP 網絡闻妓。會發(fā)生消息丟失或重復。這一級別可用于如下情況掠械,環(huán)境傳感器數據由缆,丟失一次讀記錄無所謂,因為不久后還會有第二次發(fā)送猾蒂。
b. “至少一次”(QoS==1)均唉,確保消息到達,但消息重復可能會發(fā)生肚菠。
c. “只有一次”(QoS==2)舔箭,確保消息到達一次。這一級別可用于如下情況蚊逢,在計費系統(tǒng)中限嫌,消息重復或丟失會導致不正確的結果。小型傳輸时捌,開銷很信健(固定長度的頭部是 2 字節(jié)),協(xié)議交換最小化奢讨,以降低網絡流量稚叹。
Topic主題
a. 主題層級分隔符 “/”: 表示層級關系,比如a/a,a/b/c等拿诸。
b. 單層通配符 “+”: 訂閱消息時使用扒袖,匹配一層主題如 a/+ 匹配諸如 a/b a/c 但是不能匹配 a/b/c,特別的單獨的+可以匹配所有單層主題
c. 多層通配符”#”:訂閱消息時使用,匹配零或層主題如 a/# 匹配諸如 a/b a/b/c a ,特別的#單獨使用匹配所有亩码。
注:使用通配符時需要保證創(chuàng)建的policy里有相應規(guī)則的topic季率,比如a/+(設為只訂閱),如果沒有是無法在連接時通過訂閱a/+匹配到該policy里其他相關的諸如a/b a/c等主題描沟。