物聯(lián)網(wǎng)曾被認(rèn)為是繼計(jì)算機(jī)、互聯(lián)網(wǎng)之后,信息技術(shù)行業(yè)的第三次浪潮。隨著基礎(chǔ)通訊設(shè)施的不斷完善,尤其是 5G 的出現(xiàn),進(jìn)一步降低了萬(wàn)物互聯(lián)的門檻和成本。物聯(lián)網(wǎng)本身也是 AI 和區(qū)塊鏈應(yīng)用很好的落地場(chǎng)景之一,各大云服務(wù)商也在紛紛上架物聯(lián)網(wǎng)平臺(tái)和服務(wù)。在 AI 和區(qū)塊鏈的熱潮過(guò)去之后,物聯(lián)網(wǎng)很有可能成為下一個(gè)風(fēng)口,在風(fēng)口到來(lái)之前,提前進(jìn)行一些知識(shí)儲(chǔ)備,是很有必要的。
IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿蘭·尼普于1999年撰寫了該協(xié)議的第一個(gè)版本。在2013年IBM公司向結(jié)構(gòu)化資訊標(biāo)準(zhǔn)促進(jìn)組織提交了MQTT 3.1版規(guī)范,并附有相關(guān)章程,以確保只能對(duì)規(guī)范進(jìn)行少量更改。
MQTT(消息隊(duì)列遙測(cè)傳輸)協(xié)議是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。
MQTT 是一種傳輸協(xié)議由“物理層”通過(guò)無(wú)線網(wǎng)絡(luò)將數(shù)據(jù)流從網(wǎng)絡(luò)中傳輸出去,實(shí)現(xiàn)對(duì)數(shù)據(jù)鏈路和應(yīng)用層數(shù)據(jù)傳輸業(yè)務(wù)進(jìn)行控制提供支持等功能。它分為無(wú)線網(wǎng)用 MQTT網(wǎng)關(guān),無(wú)線網(wǎng)絡(luò)交換用網(wǎng)關(guān),無(wú)線網(wǎng)接入網(wǎng)絡(luò)單。而 MQTT網(wǎng)關(guān)是為了滿足網(wǎng)絡(luò)中不同業(yè)務(wù)系統(tǒng)在數(shù)據(jù)交換時(shí)需要而設(shè)計(jì)起來(lái)的一種設(shè)備,實(shí)現(xiàn)對(duì)各用戶之間通信,在一定條件下可以方便而靈活地傳輸數(shù)據(jù)信息并進(jìn)行相應(yīng)的管理工作。通過(guò) MQTT網(wǎng)關(guān)實(shí)現(xiàn)互聯(lián)網(wǎng)訪問(wèn)控制功能,可以將整個(gè)網(wǎng)絡(luò)作為一個(gè)節(jié)點(diǎn)管理起來(lái),把多個(gè)網(wǎng)絡(luò)用戶集中在一起進(jìn)行管理和監(jiān)控,同時(shí)實(shí)現(xiàn)流量數(shù)據(jù)監(jiān)控、智能路由分配等功能。
MQTT是分布式數(shù)據(jù)庫(kù)系統(tǒng)。它采用高安全、高性能的 MQTT技術(shù)。在這個(gè)系統(tǒng)的硬件只有一臺(tái)服務(wù)器,沒(méi)有客戶端也沒(méi)有網(wǎng)絡(luò)的訪問(wèn)權(quán)限。MQTT的應(yīng)用是一種對(duì)分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行高性能的連接、通信、高并發(fā)處理以及低延遲通信的系統(tǒng)。它可以實(shí)現(xiàn)復(fù)雜的分布式應(yīng)用性能控制和負(fù)載均衡功能。當(dāng)網(wǎng)絡(luò)環(huán)境發(fā)生變化時(shí),可以自動(dòng)適配、切換到新的用戶所需要的服務(wù)器模式。因此系統(tǒng)可以支持多種業(yè)務(wù)類型:遠(yuǎn)程控制、多進(jìn)程同步、異構(gòu)多任務(wù)管理以及多線程管理模式等.
MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,MQTT協(xié)議是輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。如:機(jī)器與機(jī)器(M2M)通信和物聯(lián)網(wǎng)(IoT)。在通過(guò)衛(wèi)星鏈路通信傳感器、偶爾撥號(hào)的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中也被廣泛使用。
由于物聯(lián)網(wǎng)環(huán)境具有一定的特殊性,所以MQTT設(shè)計(jì)都需要遵守以下規(guī)范:
① 精簡(jiǎn),不添加可有可無(wú)的功能;
② 發(fā)布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞;
③ 允許用戶動(dòng)態(tài)創(chuàng)建主題,零運(yùn)維成本;
?、堋“褌鬏斄拷档阶畹鸵蕴岣邆鬏斝?
?、荨“训蛶?、高延遲、不穩(wěn)定的網(wǎng)絡(luò)等因素考慮在內(nèi);
?、蕖≈С诌B續(xù)的會(huì)話控制;
?、摺±斫饪蛻舳擞?jì)算能力可能很低;
?、唷√峁┓?wù)質(zhì)量管理;
?、帷〖僭O(shè)數(shù)據(jù)不可知,不強(qiáng)求傳輸數(shù)據(jù)的類型與格式,保持靈活性。
MQTT協(xié)議工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,它具有以下主要的幾項(xiàng)特性:
① 使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合。
?、凇?duì)負(fù)載內(nèi)容屏蔽的消息傳輸。
?、邸∈褂肨CP/IP提供網(wǎng)絡(luò)連接。
?、堋∮小爸炼嘁淮巍薄爸辽僖淮巍薄爸挥幸淮巍比N消息發(fā)布服務(wù)質(zhì)量。
?、荨⌒⌒蛡鬏敚_(kāi)銷很小(固定長(zhǎng)度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量。
?、蕖∈褂肔ast Will和Testament特性通知有關(guān)各方客戶端異常中斷的機(jī)制。
實(shí)現(xiàn)MQTT協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過(guò)程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者。
MQTT傳輸?shù)南⒎譃椋褐黝}(Topic)和負(fù)載(payload)兩部分:
Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會(huì)收到該主題的消息內(nèi)容(payload);
payload,可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容。
MQTT客戶端是指使用MQTT協(xié)議的應(yīng)用程序或者設(shè)備,它總是建立到服務(wù)器的網(wǎng)絡(luò)連接??蛻舳丝梢允牵?/p>
(1)發(fā)布其他客戶端可能會(huì)訂閱的信息;
(2)訂閱其它客戶端發(fā)布的消息;
(3)退訂或刪除應(yīng)用程序的消息;
(4)斷開(kāi)與服務(wù)器連接。
MQTT服務(wù)器以稱為"消息代理"(Broker),可以是一個(gè)應(yīng)用程序或一臺(tái)設(shè)備。它是位于消息發(fā)布者和訂閱者之間,它可以接受來(lái)自客戶的網(wǎng)絡(luò)連接;接受客戶發(fā)布的應(yīng)用信息;處理來(lái)自客戶端的訂閱和退訂請(qǐng)求;還可以向訂閱的客戶轉(zhuǎn)發(fā)應(yīng)用程序消息。