0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

強(qiáng)大的MQTT! 關(guān)于它你應(yīng)該知道什么

瑞科慧聯(lián)(RAK) ? 2022-08-03 11:15 ? 次閱讀

作為物聯(lián)網(wǎng)世界玩家,我們知道你想通過(guò)設(shè)備快速傳遞信息。你希望一直保持更新,從而獲得最新的實(shí)時(shí)信息。然而,我們也知道要找到合適的技術(shù)來(lái)實(shí)現(xiàn)此愿望是十分困難的。幸運(yùn)的是,MQTT或許對(duì)你有所幫助。

MQTT指消息隊(duì)列遙測(cè)傳輸,是物聯(lián)網(wǎng)的機(jī)器對(duì)機(jī)器(M2M,machine-to-machine)連接協(xié)議。MQTT是一個(gè)輕量級(jí)的發(fā)布和訂閱協(xié)議,通過(guò)它可以在低帶寬環(huán)境中發(fā)送和接收機(jī)器對(duì)機(jī)器的遙測(cè)消息。例如,通過(guò)衛(wèi)星鏈路與broker溝通或在家庭自動(dòng)化和一些小型設(shè)備場(chǎng)景中,MQTT是非常適用的。因?yàn)樗w積小,功耗低,數(shù)據(jù)包最小化,并能有效地將信息分發(fā)到一個(gè)或多個(gè)接收者,因此MQTT也是移動(dòng)應(yīng)用的理想選擇。

MQTT最初由Andy Stanford-Clark(IBM)和Arlen Nipper(Arcom)于1999年設(shè)計(jì),用于通過(guò)衛(wèi)星連接石油管道遙測(cè)系統(tǒng)。盡管MQTT是在很久之前創(chuàng)建的,目的僅在特定場(chǎng)景下進(jìn)行有限使用,但它正在迅速成為物聯(lián)網(wǎng)(Internet of Things)的主要協(xié)議之一,其中包含了大量的應(yīng)用程序。它一開(kāi)始只是一個(gè)專有協(xié)議,但這些年來(lái)對(duì)它的需求日益增大,因此它在2010年發(fā)布了免稅版,并在2014年成為OASIS標(biāo)準(zhǔn)。

自從其標(biāo)準(zhǔn)化以來(lái),該協(xié)議一直很容易適應(yīng)各種物聯(lián)網(wǎng)設(shè)備、平臺(tái)和操作系統(tǒng)。Microsoft、Azure等企業(yè)云平臺(tái)通過(guò)MQTT公開(kāi)其IoT PaaS,而那些沒(méi)有使用MQTT的物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)者都無(wú)法取得更進(jìn)一步的突破。

不同的 MQTT 版本

  • MQTT v3.1.0 - 最初的版本,設(shè)計(jì)于1999年,為TCP/IP網(wǎng)絡(luò)創(chuàng)建。
  • MQTT v3.1.1 - 目前開(kāi)發(fā)者最常使用的版本,與v3.1.0版本差別極小。
  • MQTT v5 - 這是該協(xié)議的最新版本(2018年1月),從1.6版開(kāi)始,Mosquito broker除了支持MQTT v3.1.1之外還支持MQTT v6,因此你可以繼續(xù)通過(guò)舊的客戶端使用最新的 broker。
  • MQTT-SN – 在2013年左右指定,旨在通過(guò)UDP、ZigBee和其他傳輸協(xié)議工作。MQTT-SN目前還不是很流行,且該規(guī)范幾年來(lái)沒(méi)有改變。隨著物聯(lián)網(wǎng)的部署開(kāi)始大大增加,這種情況可能會(huì)改變。

MQTT功能的基本概念與定義

首先是發(fā)布和訂閱機(jī)制。在一個(gè)發(fā)布和訂閱系統(tǒng)中,一個(gè)設(shè)備可以在一個(gè)主題上發(fā)布消息,或者它可以訂閱一個(gè)特定的主題來(lái)接收消息。當(dāng)有更新時(shí),消息會(huì)自動(dòng)推送給相應(yīng)主題的訂閱者。

MQTT流量Figure 2: MQTT流量

Messages是在設(shè)備之間交換的信息,是一個(gè)命令或一組數(shù)據(jù)。

另一個(gè)重要的概念是topics。它是為傳入信息注冊(cè)感興趣的方式,或者指定要在何處發(fā)布消息的方式。

主題用字符串表示,用正斜杠隔開(kāi)。每一個(gè)正斜杠表示一個(gè)主題級(jí)別。

MQTT clients就是我們所說(shuō)的訂閱了一個(gè)或多個(gè)主題的設(shè)備(如果沒(méi)有選擇一個(gè)特定的主題,將會(huì)看到它們?nèi)?。當(dāng)其他客戶端在這些主題中發(fā)布東西時(shí),它們要以信息的形式接收數(shù)據(jù)包。對(duì)于MQTT 3.1.1版本,Eclipse Paho項(xiàng)目提供了幾乎所有編程語(yǔ)言和主要操作系統(tǒng)Linux、Windows、Mac的客戶端軟件。

MQTT client的對(duì)應(yīng)部MQTT broker。Broker是任何發(fā)布和訂閱協(xié)議的核心。根據(jù)不同的實(shí)現(xiàn)方式,一個(gè)broker可以處理多達(dá)數(shù)千個(gè)同時(shí)連接的MQTT client。Broker負(fù)責(zé)接收和過(guò)濾所有信息,確定每條信息的訂閱者,并將信息發(fā)送給這些訂閱的客戶端。Broker還持有所有持續(xù)存在的客戶端的會(huì)話,包括訂閱和錯(cuò)過(guò)的消息。

MQTT Security 是指其支持各種認(rèn)證和數(shù)據(jù)安全機(jī)制的能力。需要注意的是,這些安全機(jī)制是在MQTT broker上配置的,而客戶端則要遵守現(xiàn)有的機(jī)制。

MQTT使用發(fā)布和訂閱模式,將有關(guān)各方相互連接起來(lái)。它通過(guò)將該模式與接收和訂閱模式解耦來(lái)實(shí)現(xiàn)這一點(diǎn)。發(fā)布者向一個(gè)中心主題發(fā)送消息,該主題有多個(gè)訂閱者等待接收消息。發(fā)布者和訂閱者是自主的,這意味著他們不需要知道對(duì)方的存在。

MQTT協(xié)議的小缺點(diǎn)

  • MQTT不是RESTful,所以它沒(méi)有利用現(xiàn)有協(xié)議的優(yōu)勢(shì)。
  • MQTT工作在靈活的主題訂閱上,所以它沒(méi)有一個(gè)穩(wěn)定的資源發(fā)現(xiàn)機(jī)制。
  • MQTT 是不加密的,需要使用TLS/SSL來(lái)保證安全。

盡管有缺點(diǎn),MQTT仍然是物聯(lián)網(wǎng)項(xiàng)目中最受歡迎的協(xié)議之一,因?yàn)槭褂盟暮锰庍h(yuǎn)遠(yuǎn)超過(guò)了缺點(diǎn)。例如,RAKwireless通過(guò)使用內(nèi)置的MQTT橋接器增強(qiáng)了他們的LoRaWAN網(wǎng)關(guān)的能力。商業(yè)網(wǎng)關(guān),如RAK7249和RAK7258具有帶有MQTT橋接器的嵌入式LoRa網(wǎng)絡(luò)和應(yīng)用服務(wù)器。

這將Semtech Packet-forwarder UDP協(xié)議抽象為MQTT上的JSON,直接安全地將數(shù)據(jù)傳輸?shù)綉?yīng)用程序。這正在成為其他制造商的一種做法,并不限于LoRaWAN,也包括其他物聯(lián)網(wǎng)技術(shù)。

MQTT一些獨(dú)特的功能

  • 這是一個(gè)輕量級(jí)協(xié)議。它在快速數(shù)據(jù)傳輸方面最終是高效的。此外,使用MQTT可以減少系統(tǒng)的計(jì)算負(fù)擔(dān)。
  • 小尺寸的數(shù)據(jù)包最大限度地減少了開(kāi)銷并降低了流量。
  • 這是一個(gè)非常節(jié)能的機(jī)制。這使得它非常適合使用LoRaWAN的項(xiàng)目,因?yàn)樗梢怨?jié)省電池壽命,而電池是很多LoRa-end節(jié)點(diǎn)的主要電源
  • 它是實(shí)時(shí)的,所以它是物聯(lián)網(wǎng)應(yīng)用的理想選擇。
  • 它是開(kāi)源的,除了容易實(shí)現(xiàn)和配置外,還可以免費(fèi)使用。同樣,在RAKwireless商業(yè)網(wǎng)關(guān)系列中設(shè)置你的MQTT橋接器是快速而簡(jiǎn)單的。如果想在LoRaWAN網(wǎng)關(guān)中獲得一個(gè)好的實(shí)現(xiàn)示例,可以參考本文檔了解如何做到這一點(diǎn)。

最后,MQTT有很多優(yōu)勢(shì),因此我們相信,在未來(lái)的幾年里,通過(guò)更多自然的采用和改進(jìn)它會(huì)變得更加主流。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2899

    文章

    43807

    瀏覽量

    369207
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    640

    瀏覽量

    22360
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【電磁兼容標(biāo)準(zhǔn)解析分享】汽車電子零部件EMC標(biāo)準(zhǔn)解析---應(yīng)該了解和知道的細(xì)節(jié)(二)

    【電磁兼容標(biāo)準(zhǔn)解析分享】汽車電子零部件EMC標(biāo)準(zhǔn)解析---應(yīng)該了解和知道的細(xì)節(jié)(二)
    的頭像 發(fā)表于 08-08 08:17 ?3421次閱讀
    【電磁兼容標(biāo)準(zhǔn)解析分享】汽車電子零部件EMC標(biāo)準(zhǔn)解析---<b class='flag-5'>你</b><b class='flag-5'>應(yīng)該</b>了解和<b class='flag-5'>知道</b>的細(xì)節(jié)(二)

    知識(shí)科普 MQTT Broker 代理 是什么

    MQTT Broker作為MQTT通信的核心組件,扮演著關(guān)鍵的角色,負(fù)責(zé)管理客戶端連接、消息路由和訂閱管理等任務(wù)。它在物聯(lián)網(wǎng)和M2M通信中發(fā)揮著不可或缺的作用,使得設(shè)備和應(yīng)用能夠高效地進(jìn)行實(shí)時(shí)通信,為物聯(lián)網(wǎng)的發(fā)展和應(yīng)用提供了強(qiáng)大
    的頭像 發(fā)表于 08-01 16:51 ?214次閱讀
    知識(shí)科普 <b class='flag-5'>MQTT</b> Broker 代理 是什么

    MQTT物聯(lián)網(wǎng)平臺(tái)是什么

    MQTT物聯(lián)網(wǎng)平臺(tái)是一種軟件平臺(tái),基于MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)協(xié)議,為物聯(lián)網(wǎng)(IoT)設(shè)備提供連接、管理和數(shù)據(jù)處理的服務(wù)
    的頭像 發(fā)表于 07-18 14:22 ?435次閱讀

    關(guān)于主干布線,應(yīng)該知道什么

    做什么用的?究竟是如何工作的?繼續(xù)閱讀以找出這些問(wèn)題的答案以及更多信息。 什么是骨干布線? 在大多數(shù)建筑物中,不同樓層都有房間,對(duì)整個(gè)建筑物執(zhí)行重要功能。這些房間包括您預(yù)計(jì)需要大量連接的房間,例如通信室。但是,
    的頭像 發(fā)表于 04-16 17:15 ?557次閱讀

    MQTT網(wǎng)關(guān)是什么?MQTT網(wǎng)關(guān)的功能

    MQTT網(wǎng)關(guān)是支持MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān),是一種用于連接不同設(shè)備和云端平臺(tái)之間的中間件。充當(dāng)了設(shè)備和云端服務(wù)之間的數(shù)據(jù)傳輸橋梁。MQTT網(wǎng)關(guān)能夠接收來(lái)自各種設(shè)備的數(shù)據(jù),并將其發(fā)送到
    的頭像 發(fā)表于 03-18 17:10 ?684次閱讀

    什么是MQTTMQTT協(xié)議中的方法

    MQTT是一種輕量級(jí)消息傳遞協(xié)議,由IBM開(kāi)發(fā),于1999年首次發(fā)布。使用發(fā)布/訂閱模式并在設(shè)備、服務(wù)器和應(yīng)用程序之間轉(zhuǎn)換消息。
    的頭像 發(fā)表于 02-25 17:04 ?1196次閱讀
    什么是<b class='flag-5'>MQTT</b>?<b class='flag-5'>MQTT</b>協(xié)議中的方法

    MQTT物聯(lián)網(wǎng)平臺(tái)是什么?MQTT物聯(lián)網(wǎng)平臺(tái)的功能有哪些

    MQTT(Message Queuing Telemetry Transport)是一種基于客戶端-服務(wù)器架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。基于TCP/IP協(xié)議棧構(gòu)建,設(shè)計(jì)輕巧、開(kāi)放、簡(jiǎn)單和規(guī)范
    的頭像 發(fā)表于 01-24 09:23 ?1032次閱讀

    關(guān)于晶閘管你知道多少?

    關(guān)于晶閘管你知道多少?
    的頭像 發(fā)表于 12-07 17:27 ?593次閱讀
    <b class='flag-5'>關(guān)于</b>晶閘管你<b class='flag-5'>知道</b>多少?

    知道濾波電容應(yīng)該怎么選嗎?

    一直有個(gè)疑惑:電容感抗是1/jwC,大電容C大,高頻時(shí) w也大,阻抗應(yīng)該很小,不是更適合濾除高頻信號(hào)?
    的頭像 發(fā)表于 12-06 10:20 ?1852次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>知道</b>濾波電容<b class='flag-5'>應(yīng)該</b>怎么選嗎?

    對(duì)于電源的紋波知道多少?如何測(cè)量又是如何抑制呢?

    對(duì)于電源的紋波知道多少?如何測(cè)量又是如何抑制呢? 電源的紋波是指電源輸出的電壓或電流中存在的周期性波動(dòng)。通常由電源本身的設(shè)計(jì)或工作方式引起,對(duì)于一些需要高穩(wěn)定性的應(yīng)用而言,紋波可
    的頭像 發(fā)表于 11-29 11:35 ?1048次閱讀

    物聯(lián)網(wǎng)中的MQTT協(xié)議概述

    MQTT協(xié)議已經(jīng)成了物聯(lián)網(wǎng)通信中的一個(gè)熱詞,今天我們一起來(lái)學(xué)習(xí)一下關(guān)于MQTT協(xié)議的一些知識(shí)。
    的頭像 發(fā)表于 11-25 14:09 ?1229次閱讀

    知道的FPC,的發(fā)展史竟然是這樣的!

    知道的FPC,的發(fā)展史竟然是這樣的!
    的頭像 發(fā)表于 11-15 10:48 ?950次閱讀

    知道什么是輔助繼電器嗎?輔助繼電器的作用和分類

    知道什么是輔助繼電器嗎?其實(shí)就像是PLC控制系統(tǒng)中的小秘密。
    的頭像 發(fā)表于 11-14 15:28 ?3563次閱讀

    如何部署一個(gè)MQTT服務(wù)

    為了穩(wěn)定和網(wǎng)絡(luò)問(wèn)題,應(yīng)該會(huì)選擇使用阿里云的MQTT服務(wù)。 前面提到,MQTT是一種協(xié)議,具體的實(shí)現(xiàn)有很多種,我這里選擇使用Mosquitto,由Eclipse基金會(huì)維護(hù),實(shí)現(xiàn)了
    的頭像 發(fā)表于 11-09 15:29 ?959次閱讀

    MQTT是什么 MQTT特點(diǎn)

    MQTT 是 Message Queuing Telemetry Transport 的縮寫(xiě),是一種輕量級(jí)的、基于發(fā)布/訂閱模式的物聯(lián)網(wǎng)通信協(xié)議。 具有以下特點(diǎn): ?簡(jiǎn)單易用:MQTT 的協(xié)議規(guī)范
    的頭像 發(fā)表于 11-09 15:20 ?2258次閱讀