博客 / 詳情

返回

騰訊雲 TDMQ MQTT 版解鎖 5.0 協議,你的物聯網設備“更會説話”了

導語

騰訊雲消息隊列 MQTT 版(TDMQ MQTT 版)自年初商業化以來,受到了廣大物聯網開發者和企業用户的熱烈歡迎,憑藉其高可靠、低延遲的特性,已成功服務於智能家居、車聯網、工業物聯網等多個領域的客户。自6月起,TDMQ MQTT 版正式支持 5.0協議,為用户提供更智能的設備管理、更高效的網絡傳輸以及更精細化的運維監控能力,助力企業構建面向未來的物聯網通信基礎設施。

MQTT 協議的發展史

MQTT 是一種輕量級的物聯網協議,大幅度降低了網絡帶寬和設備資源的消耗需求,並支持可靠的數據傳輸,因此 MQTT 已成為 IoT 領域最廣泛應用的協議和事實標準。讓我們簡單回顧下這一協議的演進歷程:

  • 1999年,MQTT 最初由 IBM 研發,專為石油和天然氣行業的遠程設備監控設計,其衞星通信優化特性奠定了"輕量級"的基因。
  • 2010年,MQTT 3.1 協議走出 IBM ,貢獻給了開源社區。
  • 2014年,MQTT 3.1.1 被 OASIS 組織採納為國際標準,成為工業物聯網、車聯網等場景的事實標準。
  • 2019年,OASIS 組織正式發佈 MQTT 5.0 ,在 MQTT 3.1.1 的基礎上進行功能擴展,在不增加資源消耗、不降低易用性的前提下,提高了物聯網設備的性能、擴展了諸多新特性。

所以,我們到底解鎖了什麼?

1.  豐富的 Reason Code 助力賽博診脈,設備生病不再靠“把脈問診”,對着錯誤碼開藥方

MQTT 3.1.1及之前的協議版本僅定義了幾個錯誤碼,絕大部分錯誤場景需要通過關閉傳輸層連接解決問題,研發和運維人員需要花費大量時間排查具體原因。

MQTT 5.0 為每類控制報文都引入了細化的 Reason Code ,覆蓋 96 種錯誤場景,包括:

  • 連接失敗原因:用户名/密碼錯誤(0x86)、未授權(0x87)、賬號封禁(0x8A)、遺囑消息主題不合法(0x90)、額度超限(0x97)、服務不可用(0x88)等22種 Reason Code。
  • 消息發佈失敗原因:未授權(0x87)、QoS 不支持(0x9B)、主題無效(0x90)、Packet 未找到(0x92)等十幾種 Reason Code。
  • 訂閲失敗原因:訂閲表達式不合法(0x8F)、共享訂閲不支持(0x9E)、通配符訂閲不支持(0xA2)等12種 Reason Code。

豐富的錯誤碼極大地方便了客户排查診斷、精確定位問題。更多錯誤碼可以查看協議對 Reason Code(https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.ht...) 的描述。

2.  User Property:靈活擴展業務信息,萬物皆可 #Tag

在 MQTT 3.1.1中,消息只能通過主題和 Payload 傳遞信息,難以攜帶額外的業務元數據。

MQTT 5.0 的 User Property 特性允許在報文中添加自定義鍵值對,客户端連接和消息可以傳遞更多業務相關信息,以 CONNECT Packet 為例,可以攜帶設備的型號、固件版本等。

其他可以 #Tag 的 Packet:

  • PUBLISH:附加 Tracing Context、消息 Headers 等。
  • PubAck/PubRec:附加全局唯一消息標識符。
  • SUBSCRIBE:傳遞訂閲者的業務分組信息。

基於這一特性,騰訊雲消息隊列 MQTT 版未來會提供更多的產品功能,大家拭目以待。

3. 設備會話生命週期管理:Session Expiry Interval 屬性

MQTT 3.1.1 僅提供 Clean Session 二元選項:要麼斷開後立即清除會話,要麼永久保留會話。

MQTT 5.0 定義了 Clean Start 和 Session Expiry Interval 兩個維度,既實現語義向後兼容,又增強了會話的生命週期管理,避免維護廢棄 Session 的資源浪費。

向後兼容性:

MQTT 3.1 / 3.1.1 MQTT 5.0
clean-session = true clean-start = true, session-expiry-interval = 0
clean-session = false clean-start = false, session-expiry-interval = MAX

MQTT 5 允許客户端:

  • 設置會話保留時長(單位:秒)。
  • 動態調整(通過 DISCONNECT 報文修改)。

4. 共享訂閲:為訂閲提供自動負載均衡

標準的訂閲模式是扇出模型(fan-out):當多個客户端設備的消費者訂閲同一主題時,每條消息會被轉發到所有消費者,每個消費者都需要處理消息。

MQTT 5.0 協議規範了共享訂閲功能,消息可以在相同 ShareName 內的多個訂閲客户端之間負載均衡消費,為高吞吐的服務端應用提供瞭解決方案。

  • 語法:$share/{ShareName}/{TopicFilter}。
  • 消息在組內消費者間輪詢分發。
  • 支持 QoS 0/1/2級別。

5.  Subscription Option:訂閲級精細化控制

MQTT 5.0 允許為每個訂閲單獨配置:

  • No Local:不接收自己發佈的消息。
  • Retain As Published:保持服務端存儲的 Retain 標記。
  • Retain Handling:控制是否接收 Retain 消息。

此外,TDMQ MQTT 版還支持了 Topic Alias、Request-Response、Messge TTL、Flow Control、Payload Format 等新特性。

6.  可觀測性

TDMQ MQTT 版提供了60多個 Metric 指標,覆蓋實例集羣、主題、控制指令、QoS、網絡帶寬、連接數等多種維度,用户可以根據業務需求靈活地定義業務視圖和告警規則。

同時,設備生命週期事件、離線原因分析、消息堆積、客户端 Session 視圖等功能,可以幫助開發、運維同學高效分析單個設備的運行狀態。

此外,通過消息查詢工具,用户可以根據 MQTT Topic 或 Topic Filter 瀏覽、追溯消息發送和訂閲情況,結合消息軌跡功能,精準分析每條消息的流轉路徑和耗時,提升問題排查效率。

關於騰訊雲 TDMQ MQTT 版

產品介紹

騰訊雲 TDMQ MQTT 版是一款分佈式高可用的消息隊列服務,通過 “發佈/訂閲” 模式構建了極其輕量化的消息傳輸協議。TDMQ MQTT 版兼容標準的 MQTT 協議,支持開源社區和業內主流 MQTT 客户端零改造接入,並在穩定性、低延遲、高性能、可視化和持久化等特性上做了加強,最高支持百萬客户端同時在線。

TDMQ MQTT 版典型應用場景

TDMQ MQTT 版是一款面向車聯網和物聯網(IoT)設計的分佈式高可用的消息隊列服務,適用於車聯網、工業互聯網、IM 通信、智能家居等應用場景。

車聯網

車輛通過搭載的傳感器和控制器收集各種信息,如車輛位置、速度、油量、發動機狀態等,通過 MQTT 協議實時或定期傳輸到車廠的服務器,以便進行數據分析、故障預警、遠程控制等操作。車廠通過 MQTT 協議進行遠程命令控制下發,如導航地圖更新、修復系統漏洞、遠程故障排查等操作。

工業物聯網

在工業物聯網應用中,各種工業設備需要實時上報數據,並接收遠程指令進行操作。MQTT 協議可以作為設備和工業雲平台之間的通信協議,實現實時數據上報和遠程指令下發,並且可以在弱網環境和極端環境中保持消息的穩定收發,保證了工業場景下的消息有效傳輸。

設備數據處理平台

由於 MQTT 協議非常適用在低帶寬和不穩定的網絡環境中,因此非常適合大型數據平台,如智慧城市、城市大腦等物聯網數據收集。不同終端,如傳感器、移動醫用、物聯網設備等可以收集環境信息和業務數據傳輸到下游的數據系統進行處理或者存儲。

IM 通信

MQTT 協議採用的發佈/訂閲模型非常適合即時通信場景,用户可以將消息發佈到特定主題,而其他用户只需訂閲感興趣的主題即可接收相關消息。這種模型非常適合實現一對一單聊、多對多羣聊等功能。

智能家居

在智能家居應用中,各種電器和智能設備需要實時上報數據、接收遠程指令進行操作,以及與其他設備進行協同工作。MQTT 協議可以作為智能家居設備和雲平台、手機 App 或其他設備之間的通信協議,實現實時數據上報、遠程控制和設備協同。

總結與展望

騰訊雲 TDMQ MQTT 版通過兼容 MQTT 5.0 協議,進一步強化了其在物聯網領域的服務能力。新版本提供的精細化錯誤碼(Reason Code)、靈活的業務擴展屬性(User Property)、可定製的會話管理(Session Expiry Interval)、負載均衡的共享訂閲(Shared Subscription)、訂閲級控制(Subscription Option)以及可觀測能力等特性,顯著提升了設備管理效率、網絡傳輸性能和運維監控能力。

未來,騰訊雲 TDMQ MQTT 版將持續優化服務能力,配合新特性提供更多產品化的功能支持,進一步提升車聯網等移動場景下的弱網通信性能,為高延遲、不穩定網絡環境提供更可靠的消息傳輸支持。|

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.