【零基礎(chǔ)學(xué)物聯(lián)網(wǎng)】MQTT篇 1-1 MQTT是什么

為了幫助您學(xué)習(xí),我們專門為本教程制作了視頻。

MQTT是一個(gè)客戶端服務(wù)端架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。它的設(shè)計(jì)思想是輕巧、開放、簡(jiǎn)單、規(guī)范,易于實(shí)現(xiàn)。這些特點(diǎn)使得它對(duì)很多場(chǎng)景來(lái)說(shuō)都是很好的選擇,特別是對(duì)于受限的環(huán)境如機(jī)器與機(jī)器的通信(M2M)以及物聯(lián)網(wǎng)環(huán)境(IoT)。
關(guān)于MQTT協(xié)議是什么這個(gè)問題,該協(xié)議的官方規(guī)范文檔很好地描述了MQTT的全部含義。MQTT協(xié)議是一種很輕的通訊協(xié)議。與HTTP之類的協(xié)議相比,MQTT在通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí)表現(xiàn)出眾。該協(xié)議的另一個(gè)重要特點(diǎn)是易于在客戶端實(shí)現(xiàn)。因此,MQTT成為了當(dāng)今世界上最受歡迎的物聯(lián)網(wǎng)協(xié)議。它已廣泛應(yīng)用于車聯(lián)網(wǎng)、智能家居、即時(shí)聊天應(yīng)用和工業(yè)互聯(lián)網(wǎng)等領(lǐng)域。目前通過(guò)MQTT協(xié)議連接的設(shè)備已經(jīng)過(guò)億,這些都得益于MQTT 協(xié)議為設(shè)備提供了穩(wěn)定、可靠、易用的通信基礎(chǔ)。
MQTT歷史
MQTT協(xié)議最初版本是在1999年建立的。該協(xié)議的發(fā)明人是的Andy Stanford-Clark和Arlen Nipper。


他們當(dāng)時(shí)正在開發(fā)一個(gè)利用衛(wèi)星通訊監(jiān)控輸油管道的項(xiàng)目。為了實(shí)現(xiàn)這個(gè)項(xiàng)目要求,他們需要開發(fā)一種用于嵌入式設(shè)備的通訊協(xié)議,這種通訊協(xié)議必須滿足以下條件:
易于實(shí)現(xiàn)
數(shù)據(jù)傳輸?shù)姆?wù)質(zhì)量可控
占用帶寬小
傳輸數(shù)據(jù)內(nèi)容不可預(yù)知
設(shè)備連接狀態(tài)可知
從以上幾點(diǎn)不難看出,MQTT 從誕生之初就是專為低帶寬、高延遲或不可靠的網(wǎng)絡(luò)而設(shè)計(jì)的。雖然歷經(jīng)幾十年的更新和變化,以上這些特點(diǎn)仍然是MQTT協(xié)議的核心特點(diǎn)。但是與最初不同的是,MQTT協(xié)議已經(jīng)從嵌入式系統(tǒng)應(yīng)用拓展到開放的物聯(lián)網(wǎng)(IoT)領(lǐng)域。
OASIS標(biāo)準(zhǔn)

2014年10月29日,MQTT成為OASIS(結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)正式批準(zhǔn)的通訊標(biāo)準(zhǔn)。OASIS是一個(gè)推進(jìn)電子商務(wù)標(biāo)準(zhǔn)的發(fā)展、融合與采納的非盈利性國(guó)際化組織。相比其他組織,OASIS形成了Web服務(wù)標(biāo)準(zhǔn)的同時(shí)也提出了安全的電子商務(wù)標(biāo)準(zhǔn),同時(shí)在針對(duì)公眾領(lǐng)域和特定應(yīng)用市場(chǎng)的標(biāo)準(zhǔn)化方面也付出很多的努力。自1993年成立開始,OASIS已經(jīng)發(fā)展成為了由來(lái)自100多個(gè)國(guó)家的600多家組織、企業(yè)。簡(jiǎn)言之,由眾多業(yè)內(nèi)專家組成的OASIS愿意為MQTT背書,組件該協(xié)議在物聯(lián)網(wǎng)領(lǐng)域的重要性。
MQTT版本
目前MQTT主流版本有兩個(gè),分別是MQTT3.1.1和MQTT5。MQTT3.1.1是在2014年10月發(fā)布的,而MQTT5是在2019年3月發(fā)布的。由于MQTT3.1.1與MQTT5的時(shí)間相差了將近五年,且MQTT5的發(fā)布時(shí)間距今不久,因此在本文書寫時(shí)(2020年10月),MQTT3.1.1仍然主流版本。
MQTT5是在MQTT3.1.1的基礎(chǔ)上進(jìn)行了升級(jí)。因此MQTT5是完全兼容MQTT3.1.1的。而MQTT5是在MQTT3.1.1的基礎(chǔ)上添加了更多的功能補(bǔ)充完善MQTT協(xié)議。

本教程將會(huì)重點(diǎn)針對(duì)MQTT3.1.1進(jìn)行介紹,這么做有幾點(diǎn)原因:
MQTT3.1.1是MQTT5的基礎(chǔ),因此掌握了MQTT3.1.1后可以通過(guò)進(jìn)一步學(xué)習(xí)掌握MQTT5的使用。
當(dāng)前多種流行編程語(yǔ)言的MQTT客戶端庫(kù)仍然只支持MQTT3.1.1,而不支持MQTT5。
目前物聯(lián)網(wǎng)環(huán)境中的大量設(shè)備仍然使用MQTT3.1.1協(xié)議而不支持MQTT5協(xié)議。
基于以上幾點(diǎn)原因,本教程將以MQTT3.1.1作為重點(diǎn)講解。畢竟掌握了MQTT3.1.1,對(duì)于學(xué)習(xí)MQTT5是沒有任何浪費(fèi)的。學(xué)會(huì)MQTT3.1.1后,如果想要使用MQTT5。那么無(wú)需重新學(xué)習(xí)MQTT5,而只要利用MQTT3.1.1的基礎(chǔ)再學(xué)習(xí)MQTT5的新功能就可以了。

本教程為 太極創(chuàng)客團(tuán)隊(duì) 制作的《零基礎(chǔ)入門學(xué)用物聯(lián)網(wǎng)》系列教程第二篇- MQTT篇。假如您學(xué)習(xí)本教程感到有些吃力,那么您可能還沒有觀看本系列教程 第一篇 - 基礎(chǔ)知識(shí)篇。您可以通過(guò)以下鏈接前往本教程的第一篇 - 基礎(chǔ)知識(shí)篇 教程頁(yè)面。


假如您也喜歡太極創(chuàng)客,希望您將本文“分享”給更多的人,讓更多朋友認(rèn)識(shí)我們。您的每一份點(diǎn)贊與投幣,都是對(duì)我們最溫暖的鼓勵(lì)與支持。
本文編輯制作:CYNO朔 (https://space.bilibili.com/415252426/)