主題別名 MQTT 5 0 新特性

2022-09-19 07:27:10 字數 2610 閱讀 2518

mqtt v5 相較於 mqtt v3.1 和 v3.1.1 提供了許多新特性。我們會盡量以通俗易懂的方式展示這些特性,並**這些特性對開發者的影響。我們已經**過其中一部分 mqtt v5 新特性,今天將繼續討論:主題別名

主題別名(topic alias)是 mqtt v5.0 中新加入的與主題名(topic)相關的特性。它允許使用者將主題長度較長且常用的主題名縮減為乙個雙位元組整數來降低發布訊息時的頻寬消耗。

它是乙個雙位元組整數,並將作為屬性字段,編碼在publish報文中可變報頭部分。並且在實際應用中,將受到connect報文和connack報文中「主題別名最大長度」屬性的限制。只要不超過該限制,任何主題名,都可以使用此特性縮減為編碼長度2位元組的整數。

在使用 mqtt v3 協議時。如果客戶端在某次連線中需要發布大量相同主題的訊息,那麼在每一條publish報文中寫入相同的主題名,就造成了客戶端和服務端之間頻寬資源的浪費。同時對於服務端而言,每次對相同主題名的 utf-8 字串進行解析,都是對計算資源的浪費。

設想這樣的場景,在位置a以固定頻率報告溫度濕度的感測器:

除去第一次發布訊息外,之後的每個publish報文,都需要將「主題名」這個已經傳遞過的資訊再次通過網路傳輸。即便拋開客戶端和服務端之間額外的頻寬消耗不言,對服務端來說,面對成千上萬的感測器發布的大量訊息,對每個客戶端的每條訊息,都要將同樣的主題名字串進行解析,這將造成了計算資源的浪費。

此時使用 mqtt v5 中的主題別名特性,就可以有效降低資源消耗。當客戶端或服務端發布頻率較高,且主題名長度較大的情景下,使用主題別名可以將每條訊息中主題名的頻寬消耗縮減為 2 位元組,同時因為計算機處理整數的效率高於處理字串的效率,對於客戶端或服務端在報文解析時消耗的計算資源也有了一定的節約。

該值由客戶端和服務端各自維護,且生命週期和作用範圍僅限於當前連線。連線斷開後需要再次使用主題別名需要重新建立主題別名<=>主題名對映關係。

在 mqtt 客戶端和服務端使用主題別名進行發布訊息前,需要對可以使用的最大主題別名長度進行約定。這部份資訊交換將在connect報文和connack報文中完成。「主題別名最大值」也將以報文屬性的形式,用雙位元組整數值編碼在connectconnack報文的可變報頭中。

客戶端的connect報文中"主題別名最大值"指示了本客戶端在此次連線中服務端可以使用的最大主題別名數量;同樣地,服務端傳送的connack報文中,也通過此值表明了當前連線中對端(客戶端)可以使用的最大主題別名數量。

雙端各自設定對端可以使用的最大主題別名數量客戶端(或服務端)在傳送publish報文時,可以在可變報頭的屬性部分,用乙個位元組,值為0x23的識別符號指示接下來2位元組將是主題別名值。

但主題別名值不允許為0,也不允許大於服務端(客戶端)傳送的connackconnect)報文中設定的主題別名最大值。

對端接收到帶有主題別名值和非空主題名的publish報文後,將建立主題別名和主題名的對映關係,在此之後傳送的publish報文中,便可以僅用長度2位元組的主題別名發布訊息,對端將使用通過之前建立的主題別名<=>主題名對映關係來處理訊息中的主題。並且由於這一對映關係由雙端各自維護,所以客戶端與服務端可以使用值相同的主題別名互相發布訊息。

mqtt client 與 mqtt broker 分別設定 topic_aliaspublish報文中使用的主題別名值如果在此前的報文中未進行設定,即對端並未建立當前主題別名到某個主題名的對映關係,而此條報文的可變報頭中主題名字段為空,對端將使用包含原因碼(reason_code)為0x82disconnect報文斷開網路連線。

使用未建立對映關係的主題別名當對端已經根據本次連線中某個publish報文建立了乙個主題別名<=>主題名的對映關係時,可以在下一次傳送publish報文時使用同樣的主題別名值和非空的主題名來更新這個主題別名值到主題名的對映關係。

mqtt client 與 mqtt broker 分別更新主題別名所對應的主題名主題別名作為 mqtt v5 新提供的特性,為 pub/sub 這一訊息傳遞模型提供了更靈活的使用方式,對於主題名一致且數量大、重複性高的訊息而言,可以有效節省頻寬資源和計算資源。

增強認證 MQTT 5 0 新特性

mqtt v5 帶來了 很多新的特性,我們會盡 以通俗 懂的 方式展示這些特性,並 這些特性對開發者 的影響。到目前為止,我們已經 這些 mqtt v5 新特性,今天我們將繼續討論 增強認證 在物聯網的應用場景中,安全設計是非常重要的乙個環節,敏感資料洩露或是邊緣裝置被非法控制等事故都是不可接受的,...

MQTT 5 0 正式成為OASIS標準

作為oasis mqtt技術委員會的一員,emq在上週收到oasis的一項公告 在最近的投票中,mqtt 5.0 標準以17票通過0票反對被批准為oasis標準。委員會將準備並發布作為oasis標準的最終版,並在完成後通知委員會成員。mqtt協議是一種基於客戶端 伺服器架構的 以發布和訂閱方式傳遞訊...

微軟Silverlight 5 0新特性

微軟silverlight 5.0新特性 最近微軟發布了silverlight 5.0的路線圖。主要如下 1 改進的資料繫結支援和更好地支援mvvm silverlight最大的優勢之一是它的資料繫結。微軟將提供增強的資料繫結能力以及除錯功能。開發者可以除錯繫結表示式和其它siverlight 5....