什么是MQTT,有何價值?

  通信是物聯(lián)網(wǎng) (IoT) 應(yīng)用中不可或缺的一部分,而針對不同的應(yīng)用場景,通信需求也不盡相同,從中也能捕捉到這些場景對網(wǎng)絡(luò)環(huán)境的特殊要求。在如今的工業(yè) 4.0 時代下,工廠生產(chǎn)線設(shè)備需要實時響應(yīng)中央控制器的命令,這就促使該應(yīng)用場景對超低網(wǎng)絡(luò)延遲有著更高的要求。另一方面,土壤狀況檢測遠程傳感器一般都是由電池供電,但由于傳感器在較長時間內(nèi)都處于待機狀態(tài),為了減少能耗延長使用周期,傳感器僅在傳送數(shù)據(jù)包時才允許被喚醒。

  如今,蜂窩網(wǎng)絡(luò)、無線連接技術(shù)(比如 Wi-Fi和藍牙)、有線以太網(wǎng),以及衛(wèi)星等通信技術(shù)廣泛應(yīng)用于各類IoT設(shè)備中,但通信協(xié)議則是所有 IoT技術(shù)棧的關(guān)鍵構(gòu)成,唯有通過特定的通信協(xié)議,IoT設(shè)備才能進行數(shù)據(jù)傳輸與交換。

  為了滿足當下IoT 應(yīng)用的多樣化需求,市面上開放了包括 CoAP、XMPP 和 DDS 在內(nèi)的多種協(xié)議,可供各個應(yīng)用場景按需選擇。其中,消息隊列遙測傳輸 (MQTT) 及其衍生協(xié)議 MQTT-SN 正廣泛應(yīng)用在日益普遍的低功耗廣域 (LPWA) 網(wǎng)絡(luò)中。

  MQTT協(xié)議

  作為一種輕量級協(xié)議,MQTT 擁有簡單緊湊的架構(gòu)和較小的代碼占用空間,適用于低成本、低功耗的IoT微控制設(shè)備。MQTT 可在 TCP/IP 協(xié)議上兼容運行,專攻延遲較高、質(zhì)量不佳的網(wǎng)絡(luò)環(huán)境。該協(xié)議適用于具有以下通信需求的應(yīng)用:使用極小帶寬 無線網(wǎng)絡(luò)通信 低功耗 必要時保證高可靠性 對處理和內(nèi)存資源的需求很低

  MQTT 在 IoT 多種應(yīng)用中都備受青睞,如智能表計、資產(chǎn)追蹤工具和工業(yè)設(shè)備的互聯(lián)傳感器。憑借對有限帶寬的高效利用,因此MQTT非常適用于網(wǎng)絡(luò)成本高、功耗大的應(yīng)用場景,例如遠程傳感器陣列就需要在現(xiàn)場自主運行數(shù)年且期間無需維修。MQTT是多個客戶端通過一個中央服務(wù)器傳遞信息的多對多協(xié)議,能高效地將信息分發(fā)給一個或多個訂閱者,加之其代碼占用空間小,便使得MQTT成為移動應(yīng)用通信的理想之選。

  MQTT功能概述

  MQTT 基于發(fā)布和訂閱模型,而非“客戶端-服務(wù)器”模型,它具有兩個功能實體——MQTT 服務(wù)器和 MQTT 客戶端。IoT 網(wǎng)絡(luò)上的任何“事物”,無論是硬件設(shè)備還是軟件程序,都可以視為 MQTT的 客戶端。所有的客戶端并非直接向彼此發(fā)布或訂閱消息,而是向MQTT 服務(wù)器所管理的“主題”來發(fā)布或訂閱消息。“主題”可理解為電子郵件的收件箱;客戶端向主題發(fā)布消息,訂閱該主題的其他客戶端都將收到該消息。

  MQTT 服務(wù)器負責(zé)接收所有已發(fā)布的消息,并需要確保將其傳輸?shù)剿杏嗛喌目蛻舳?。消息根?jù)多個商定的 QoS 級別進行發(fā)布(見下文)。服務(wù)器還將對網(wǎng)絡(luò)上的所有 IoT 設(shè)備進行驗證,進而管理連接、會話和訂閱。

圖 1:什么是 MQTT

  MQTT-SN

  MQTT-SN 是 MQTT 的優(yōu)化版本,專為需要提高數(shù)據(jù)傳輸效率和功耗效率的大規(guī)模無線傳感器網(wǎng)絡(luò)而設(shè)計。MQTT-SN 主要通過縮短主題 ID 的長度來提升數(shù)據(jù)傳輸效率。這些經(jīng)過縮短處理的 ID 會編程到客戶端和服務(wù)器中,從而減少信息傳遞數(shù)量。

  MQTT-SN 中的“鏈路保持機制”允許設(shè)備進入睡眠模式,并在被喚醒時才可檢索任何排隊消息。

  MQTT核心概念

  除了服務(wù)器和客戶端實體,MQTT 和 MQTT-SN 運行還涉及到如下核心概念:

  1.MQTT主題(MQTT Topics)

  主題是 MQTT 實現(xiàn)對帶寬高效利用的基礎(chǔ),它具有多級結(jié)構(gòu),如圖 2 所示。MQTT 客戶端只會訂閱其所關(guān)注的主題,并且可以使用通配符條目來訪問多個主題。

圖 2:MQTT 主題(來源:u-blox)

  由于設(shè)備僅接收已訂閱的主題消息,MQTT 主題通過 IoT 網(wǎng)絡(luò)將更加高效地組織數(shù)據(jù)流,從而實現(xiàn)大規(guī)模應(yīng)用。

  2.連接(Connections)

  MQTT 客戶端必須與服務(wù)器建立連接才能發(fā)布或訂閱消息??蛻舳嗽诎l(fā)送連接請求時會提供其客戶ID、用戶名和密碼,隨后服務(wù)器會確認該項請求。而連接請求也可使用如下參數(shù)加以限定:

  2.1.MQTT會話(Clean Session)- 請求連接并刪除訂閱隊列中已存儲的任何消息。

  2.2.鏈路保持(Keep Alive)- 當服務(wù)器或客戶端未發(fā)送消息時,鏈路保持功能將優(yōu)先確保設(shè)備連接的最長時間,從而為處于睡眠模式下的其他電池供電設(shè)備提供支持。在此期間,客戶端接收到的任何消息都會由服務(wù)器存儲,直到指定時間結(jié)束。

  2.3.睡眠(僅限MQTT-SN)- 在設(shè)備告知服務(wù)器即將進入睡眠模式時,服務(wù)器會在設(shè)備告知的時間段內(nèi)將設(shè)備訂閱的所有消息排入隊列。此模式與“鏈路保持”模式的主要區(qū)別在于,服務(wù)器會無視QoS 級別,將所有消息進行存儲,而在“鏈路保持”模式中則僅存儲 QoS 1 和 QoS 2 消息。在睡眠模式時,客戶端還能在不需要喚醒的情況下刷新其消息隊列。

  3.訂閱

  客戶端可請求訂閱一個或多個主題,該請求支持兩種不同的通配符設(shè)置,如圖 3a 和 3b 所示。

  單級 (+) 通配符用于替換一個主題級別,因此“sensors/+/out”將訂閱以下主題:

  sensors/soil/out(傳感器/土壤/輸出)

  sensors/water/out(傳感器/水/輸出)

  sensors/light/out(傳感器/光/輸出)

圖 3a:單級通配符

  多級 (#) 通配符用于替換多個主題級別,因此這個通配符可以訂閱以下主題:

  sensors/soil/out(傳感器/土壤/輸出)

  sensors/soil/in(傳感器/土壤/輸入)

  sensors/temperature/out(傳感器/溫度/輸出)

圖 3b:多級通配符

  4.消息服務(wù)質(zhì)量QoS

  MQTT 和 MQTT-SN 兩者規(guī)定了消息服務(wù)質(zhì)量 (QoS) 模式,讓發(fā)布者能夠自行定義消息質(zhì)量。我們針對這些模式進行匯總(見表 1),并分享了如何根據(jù)特定應(yīng)用的限制條件來采用不同的模式。

  5.QoS在發(fā)布與訂閱中的區(qū)別

  在MQTT 發(fā)布與訂閱操作中, QoS 代表了不同的含義,發(fā)布時的 QoS 表示消息發(fā)送到服務(wù)端時使用的 QoS,訂閱時的 QoS 則表示服務(wù)端向自己轉(zhuǎn)發(fā)消息時可以使用的最大 QoS。

  當客戶端 A 的發(fā)布 QoS 大于客戶端 B 的訂閱 QoS 時,服務(wù)端向客戶端 B 轉(zhuǎn)發(fā)消息時使用的 QoS 為客戶端 B 的訂閱 QoS。

  當客戶端 A 的發(fā)布 QoS 小于客戶端 B 的訂閱 QoS 時,服務(wù)端向客戶端 B 轉(zhuǎn)發(fā)消息時使用的 QoS 為客戶端 A 的發(fā)布 QoS。

  結(jié)論

  現(xiàn)如今,MQTT 已廣泛應(yīng)用于包括汽車、能源、制造業(yè)及電信等多個關(guān)鍵領(lǐng)域,尤其適用于更窄帶寬的網(wǎng)絡(luò)環(huán)境和更低功耗IoT設(shè)備。為簡化IoT的開發(fā)流程,技術(shù)人員還可根據(jù)自身需求,選擇包括服務(wù)器端與客戶端在內(nèi)的MQTT測試工具。

  要記住“通信不僅僅是建立連接”。以 u-blox 物聯(lián)網(wǎng)通信即服務(wù)產(chǎn)品組合為例(見圖 4),u-blox MQTT Anywhere、MQTT Here 和 MQTT Now三款產(chǎn)品基于可擴展的高性能MQTT服務(wù)器與數(shù)據(jù)流管理器,彼此相輔相成且互為補充,能有效幫助您縮短產(chǎn)品開發(fā)周期,簡化物聯(lián)網(wǎng)設(shè)備與企業(yè)間的數(shù)據(jù)通信。

圖 4:u-blox 物聯(lián)網(wǎng)通信即服務(wù)產(chǎn)品組合

  ublox簡介

  瑞士 ublox 公司 (SIX:UBXN) 是為汽車、工業(yè)和消費市場提供定位和無線通信技術(shù)的領(lǐng)先供應(yīng)商。其解決方案能準確進行人員、車輛和機器的定位,并通過蜂窩網(wǎng)絡(luò)和短程通信網(wǎng)絡(luò)實現(xiàn)無線通信。憑借廣泛及多樣化的芯片、模塊和日益擴大的產(chǎn)品支持數(shù)據(jù)服務(wù)生態(tài)系統(tǒng),ublox 公司在幫助其客戶針對物聯(lián)網(wǎng)快速而成本高效地開發(fā)創(chuàng)新解決方案方面具有得天獨厚的優(yōu)勢。u-blox 公司總部設(shè)在瑞士塔爾維爾,目前在歐洲、亞洲和美國都設(shè)有辦事處。

  請關(guān)注u-blox中國區(qū)官方微信號

  作者:Eric Heiser,u-blox 高級副總裁兼產(chǎn)品中心服務(wù)主管

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )