MQTT QoS設計:車聯網平台消息傳輸質量保障
2022.05.25
MQTT QoS設計:車聯網平台消息傳輸質量保障
在本文中,我們將利用 MQTT 協議的 QoS 特性,介紹車聯網場景下 MQTT 消息的 QoS 設計,以保證數據傳輸的質量。
前言
在車聯網場景下,會產生海量數據,作為車輛診斷的依據,保障車輛安全穩定運行;它還可以與手機等基礎設施聯動,提供更好的駕駛體驗。國家和行業也相繼出台了相關政策文件,如《汽車駕駛自動化分類》、《國家車聯網行業標準體系建設指南》、《車聯網信息服務數據安全技術要求》等.高要求。通信的安全性、穩定性和可靠性一直是車聯網的話題。因此,完善的數據傳輸保障方案也是車聯網業務不可忽視的一部分。
MQTT 協議中的 QoS 級別
作為當今車聯網行業首選的數據通信協議,MQTT協議規定了消息服務質量(Quality of Service,以下簡稱QoS)。 QoS保證了不同網絡環境下消息傳遞的可靠性,可以作為主要的實現技術,保證車聯網場景下的消息可靠傳輸。
MQTT 設計有 3 個 QoS 級別:
(1) 服務質量 0
消息最多投遞一次,如果此時 MQTT 客戶端不可用,該消息將丟失。 Sender(可能是Publisher或Broker)發送消息後,不再關心是否發送給對方,也不再設置任何重傳機制。
(2) 服務質量 1
消息至少傳遞 1 次。包含一個簡單的重傳機制。發送消息後,發送方等待接收方的 ACK,如果沒有收到 ACK,則重新發送消息。這種模式保證消息至少到達一次,但不能保證消息會重複。
(3) 服務質量 2
消息僅傳遞一次。重傳和重複消息發現機制旨在確保消息彼此只到達一次。
車聯網場景下的消息QoS設計
首先需要明確的是,QoS級別越高,消息交互越複雜,對系統資源的消耗也越大。因此,QoS 級別越高越好。應用可以根據自己的網絡場景和業務需求選擇合適的QoS等級。
根據車聯網信息服務相關數據的屬性和特點,我們可以將其分為六類:基礎屬性數據、車輛工控數據、環境感知數據、車輛控制數據、應用服務數據和用戶個人信息.那麼不同車聯網場景下如何選擇MQTT QoS等級呢?
(1) 在以下情況下可以選擇QoS 0
在可以接受偶爾丟失消息的情況下,可以選擇 QoS 0。
車聯網提供的與娛樂相關的多媒體服務,如天氣預報等數據。還有一些與車輛相關的服務數據,如車輛歷史駕駛數據、歷史駕駛操作數據等的上報。
(2) 在以下情況下可以選擇QoS 1
QoS1用於車聯網的大部分場景,優化了系統資源的性能和消息的實時性和可靠性。
QoS 1廣泛應用於車輛控制報文、車輛上報數據(包括新能源國家標準和企業標準)、交通安全管控數據以及與交通安全和道路安全相關的預警數據。
(3) 在以下情況下可以選擇QoS 2
對於不能容忍消息丟失、不想接收重複消息、對數據完整性和時效性要求高的場景,可以選擇QoS 2。
QoS 2 在車聯網場景中的應用並不多。雖然可以增加消息的可靠性,但也大大增加了資源消耗和消息延遲。 QoS 2主要應用於銀行、消防、航空等對數據完整性和時效性要求較高的行業。一些 OEM 選擇將 QoS 2 用於交通警報和車輛充電樁計費消息。
特別提醒:
需要注意的是,MQTT 發布和訂閱操作中的 QoS 代表著不同的含義。發佈時的 QoS 表示要發送到 MQTT 服務器的消息使用的 QoS 級別,訂閱期間的 QoS 表示 MQTT Broker 在向自己轉發消息時可以使用的最大 QoS。年級。需要保證發送和訂閱的QoS一致,保證最終接收到的消息是固定的QoS級別,否則會降低消費。例如:A發送的消息的QoS為2,B訂閱的消息的QoS為1,則最終收到的消息的QoS為1。
基於 QoS 等級的 EMQX 消息傳輸保障
為了更好地保障車聯網過程中人、車、路、網、雲之間數據傳輸的安全可靠,同時提高消息吞吐效率,減少網絡波動的影響,雲原生分佈式物聯網消息服務器 EMQX 在充分適配 QoS 信令交互的基礎上,還設計了飛行窗口、消息隊列、消息全鏈路跟踪、離線消息存儲等功能,提高消息可靠性。
飛行窗口的設計允許網絡鏈路上同時存在多個未確認的 QoS 1 和 QoS 2 報文,當消息超出消息鏈路中的飛行窗口時,消息隊列可以進一步存儲消息,從而防止客戶端離線時滿足未接收消息或未確認數據消息的存儲要求。飛行窗口還有upgrade_qos參數,實現根據訂閱強制升級QoS等功能,可以實現QoS等級的一致性,保證不會出現消費降級。此外,EMQX 還可以提供限制服務訪問到不同 QoS 級別、數據橋接 QoS 管理、MQTT-SN 協議 QoS 管理等能力。
下載體驗:https://www.emqx.com/zh/try?product=enterprise
結語
通過本文可以看出,MQTT協議的QoS特性對於車聯網場景下消息數據的安全傳輸具有重要意義。作為全面支持 MQTT 協議標準的雲原生分佈式消息服務器,EMQX 在產品設計上充分利用 MQTT 協議的特性和優勢,為物聯網平台和應用構建提供可靠的數據連接、移動、處理和集成。