MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測傳輸)是ISO標(biāo)準(zhǔn)下基于發(fā)布/訂閱方式的輕量級消息協(xié)議,其通常應(yīng)用于物聯(lián)網(wǎng)、智能家居等設(shè)備和應(yīng)用程序之間的通信。
MQTT協(xié)議由發(fā)布者/訂閱者,消息代理Broker兩部分組成,如圖1所示,發(fā)布者負(fù)責(zé)消息推送至Broker,Broker將消息推送至匹配的訂閱者。發(fā)布者(Publisher):設(shè)備通過主題將消息發(fā)送給訂閱者。訂閱者(Subscriber):作為終端設(shè)備,訂閱者通過主題從發(fā)布者處接收消息。消息代理(Broker):服務(wù)器作為中央樞紐,負(fù)責(zé)發(fā)布者和訂閱者之間的組織級通信。
MQTT有兩個(gè)主要版本:v3 和 v5。這兩個(gè)版本原理基本相同,但它們之間存在一些關(guān)鍵的差異,下面將從以下幾個(gè)方面來介紹它們之間的區(qū)別。
01
協(xié)議格式
MQTT v5 新增了一個(gè) Property字段,這個(gè)字段使MQTT v5 可以支持更多的新特性。而在MQTT v3 中,MQTT沒有任何可以拓展的地方,限制了MQTT拓展功能的可能性。
02
主題別名
主題是MQTT中的核心概念,它用于標(biāo)識(shí)消息的內(nèi)容和意圖。在MQTT v3 中,主題只是一個(gè)簡單的字符串,其結(jié)構(gòu)是由一系列以斜杠分隔的單詞組成的。例如,一個(gè) MQTT v3 主題可以是 sensors/temperature/room1,其中sensors是頂級主題,temperature是其子主題,room1是子主題下的一個(gè)特定設(shè)備。
然而,在 MQTT v5 中,主題的結(jié)構(gòu)得到了擴(kuò)展,新增了一些更高級的功能。具體來說,MQTT v5 引入了一個(gè)名為主題別名的新概念,它允許客戶端將主題字符串映射到預(yù)定義的主題 ID,從而減少網(wǎng)絡(luò)流量和消息大小。主題別名由客戶端和服務(wù)端各自維護(hù),且生命周期和作用范圍僅限于當(dāng)前連接。
針對某個(gè)主題,首次發(fā)布時(shí)設(shè)置別名,之后就可以使用主題別名發(fā)布。這使得客戶端能夠在發(fā)送消息時(shí)只發(fā)送主題ID,而不必每次都發(fā)送完整的主題字符串。這對于 IoT 設(shè)備和網(wǎng)絡(luò)帶寬有限的環(huán)境來說非常有用。
03
訂閱操作
MQTT v5 引入了一種名為共享訂閱的新訂閱類型。可以通過其他標(biāo)志和過濾功能,來實(shí)現(xiàn)更靈活的訂閱。如下圖所示,共享訂閱允許多個(gè)客戶端共享一個(gè)訂閱,并按照一定規(guī)則進(jìn)行分配。這種訂閱類型對于訂閱高負(fù)載主題非常有用,因?yàn)樗梢云胶庥嗛喺埱螅瑴p輕單個(gè)客戶端的負(fù)載壓力。
另外MQTT v5 增加了訂閱選項(xiàng)的概念,可以指定訂閱選項(xiàng),例如QoS等級、Retain As Publish、Retain Handling、消息的生命周期等,來對訂閱行為進(jìn)行更加精細(xì)地控制。
04
遺囑消息
遺囑消息是MQTT為那些可能出現(xiàn)意外斷線的設(shè)備提供的將遺囑優(yōu)雅地發(fā)送給第三方的能力。在 CONNECT 報(bào)文的 Payload 中,部分字段發(fā)生了變化,其中Will Message(遺囑消息)變成了Will Payload(遺囑載荷)。
Will Properties(遺囑屬性)是MQTT v5新增的一個(gè)字段,不同類型的報(bào)文有著不同的屬性,例如CONNECT報(bào)文有最大報(bào)文長度、會(huì)話過期間隔等屬性,SUBSCRIBE報(bào)文則有訂閱標(biāo)識(shí)符等屬性。而且MQTT v5較v3相比,遺囑消息的內(nèi)容變得更加靈活,可以包含任何主題和任何消息內(nèi)容。
05
錯(cuò)誤處理
MQTT v5支持更加詳細(xì)的錯(cuò)誤處理機(jī)制,可以通過錯(cuò)誤碼和錯(cuò)誤原因來定位和解決問題。同時(shí),MQTT v5還引入了一個(gè)新的控制報(bào)文——Disconnect報(bào)文,可以幫助客戶端和服務(wù)器更好地處理錯(cuò)誤情況。
06
流量控制
MQTT v5 在 v3 版本基礎(chǔ)上引入了一些新的機(jī)制用于流量控制,為了更好地控制消息的傳輸和處理,避免因?yàn)橄鬏斔俣冗^快導(dǎo)致的網(wǎng)絡(luò)擁塞和負(fù)載過高。
最大報(bào)文大小限制(Maximum Packet Size):MQTT v5 允許客戶端和服務(wù)端在握手時(shí)協(xié)商最大報(bào)文大小。如下圖所示,這個(gè)最大報(bào)文大小限制可以用于控制客戶端和服務(wù)端之間傳輸?shù)淖畲笙⒋笮。乐挂驗(yàn)閭鬏數(shù)南⑦^大導(dǎo)致網(wǎng)絡(luò)擁塞和負(fù)載過高。
消息隊(duì)列(Message Queue):當(dāng)服務(wù)端發(fā)送的消息超出了客戶端處理的速度時(shí),服務(wù)端可以將消息存儲(chǔ)到消息隊(duì)列中,等待客戶端處理。MQTT v5 定義了消息隊(duì)列的隊(duì)列大小和超時(shí)時(shí)間,以控制消息隊(duì)列的大小和生命周期。
07
性能效率
MQTT v5 相對于 MQTT v3 來說,可以更好地處理大規(guī)模的數(shù)據(jù)傳輸,提高了通信的效率和性能。例如MQTT v5 支持批量發(fā)布(Batch Publish)和預(yù)取(Message Prefetch)等功能,可以大大減少M(fèi)QTT通信時(shí)的開銷。
★
總之,相比于MQTT v3,MQTT v5 具有更多的新功能和安全性。但是,需要注意的是,MQTT v5 增加了很多新的功能和概念,因此在使用MQTT v5時(shí),需要對MQTT協(xié)議的新特性進(jìn)行深入的了解,以便可以更好地使用這個(gè)新協(xié)議來構(gòu)建可靠的應(yīng)用程序。
-
通信
+關(guān)注
關(guān)注
18文章
6070瀏覽量
136425 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2913文章
44923瀏覽量
377014 -
MQTT
+關(guān)注
關(guān)注
5文章
653瀏覽量
22692
發(fā)布評論請先 登錄
相關(guān)推薦
評論