車聯網平臺訊息傳輸質量保障|車聯網平臺搭建從入門到精通 04

在之前的系列文章中,我們已經介紹了車聯網 MQTT 訊息平臺的搭建,以及如何根據實際業務需求進行車聯網訊息主題設計。接下來,我們就需要考慮如何將訊息資料進行高質量的安全傳輸。在本篇文章中,我們將藉助 MQTT 協議的 QoS 特性,介紹車聯網場景中的 MQTT 訊息 QoS 設計,保障資料傳輸質量。

車聯網平臺訊息傳輸質量保障|車聯網平臺搭建從入門到精通 04

前言

車聯網場景下會產生海量資料,這些資料可以作為車輛診斷的基礎,保障車輛安全穩定地執行;也可以與手機等基礎設施進行聯動,以提供更好的行車體驗。

國家與行業也陸續出臺了相關政策檔案,如《汽車駕駛自動化分級》、《國家車聯網產業標準體系建設指南》、《車聯網資訊服務資料安全技術要求》等,對車聯網資料傳輸提出了更高要求。

通訊的安全、穩定、可靠自始至終都是車聯網亙古不變的話題,因此

一套完善的資料傳輸保障方案

也是車聯網業務中不可忽視的一部分。

MQTT 協議中的 QoS 等級

作為現如今車聯網行業資料通訊協議的首選,MQTT 協議中規定了

訊息服務質量

(Quality of Service,以下簡稱 QoS)。QoS 保證了在不同的網路環境下訊息傳遞的可靠性,可作為車聯網場景中保障訊息可靠性傳輸的首要實現技術。

MQTT 設計了 3 個 QoS 等級:

QoS 0

訊息最多傳遞一次

,如果當時客戶端不可用,則會丟失該訊息。Sender (可能是 Publisher 或者 Broker) 傳送一條訊息之後,就不再關心它有沒有傳送到對方,也不設定任何重發機制。

車聯網平臺訊息傳輸質量保障|車聯網平臺搭建從入門到精通 04

QoS 1

訊息傳遞至少 1 次

。包含了簡單的重發機制,Sender 傳送訊息之後等待接收者的 ACK,如果沒收到 ACK 則重新發送訊息。這種模式能保證訊息至少能到達一次,但無法保證訊息重複。

車聯網平臺訊息傳輸質量保障|車聯網平臺搭建從入門到精通 04

QoS 2

訊息僅傳送一次

。設計了重發和重複訊息發現機制,保證訊息到達對方並且嚴格只到達一次。

車聯網平臺訊息傳輸質量保障|車聯網平臺搭建從入門到精通 04

車聯網場景中的訊息 QoS 設計

首先需要明確的是

QoS 級別越高,訊息互動越複雜,系統資源消耗越大

,所以QoS等級不是設定的越高越好。應用程式可以根據自己的網路場景和業務需求,選擇合適的 QoS 級別。

根據車聯網資訊服務相關資料的屬性和特徵,我們可以將其分為六類:基礎屬性類資料、車輛工控類資料、環境感知類資料、車控類資料、應用服務類資料和使用者個人資訊。

那麼在不同的車聯網場景中

如何選擇 MQTT QoS 等級

呢?

以下情況下可以選擇 QoS 0

可以接受訊息偶爾丟失的場景下可以選擇 QoS 0。

車聯網提供的與娛樂相關的多媒體服務,如天氣預報等資料等。還有部分涉車服務類資料,如車輛歷史行車資料的上報、歷史行車操作資料等。

以下情況下可以選擇 QoS 1

車聯網大部分場景都是選用 QoS1,它實現了系統資源效能和訊息實時性、可靠性最最佳化。

QoS 1 廣泛運用於控車訊息、行車上報資料(含新能源國標和企標)、交通安全管控類資料,和交通安全、道路安全相關的預警資料。

以下情況下可以選擇 QoS 2

對於不能忍受訊息丟失,且不希望收到重複的訊息,資料完整性與及時性要求較高的場景,可以選擇 QoS 2。

車聯網場景中 QoS 2 的應用並不多,雖然其可以增加訊息可靠性,但同時也使資源消耗和訊息時延大幅增加。

QoS 2 主要運用於對資料完整性與及時性要求較高的銀行、消防、航空等行業,有些主機廠的行車告警和車輛充電樁計費費單訊息會選擇採用 QoS 2。

特別提醒

需要注意的是 MQTT 釋出與訂閱操作中的 QoS 代表了不同的含義,釋出時的 QoS 表示訊息傳送到 MQTT Broker 使用的 QoS 等級,訂閱時的 QoS 表示 MQTT Broker 向自己轉發訊息時可以使用的最大 QoS 等級。

需要保障傳送與訂閱的 QoS 一致,才能確保最終收到的訊息是固定的 QoS 等級,否則會出現消費降級的情況。例如:A 傳送的訊息 QoS 為 2,B 訂閱的訊息 QoS 為1,則最終接收到訊息的 QoS 為 1。

EMQX 基於 QoS 等級的訊息傳輸保障

為了更好地保障車聯網過程中人-車-路-網-雲之間資料傳遞的安全可靠,同時提高訊息吞吐效率,減少網路波動帶來的影響,雲原生分散式物聯網訊息伺服器 EMQX 在

全面適配 QoS 信令互動

的基礎上,還設計了飛行視窗、訊息佇列、訊息全鏈路追蹤和離線訊息儲存等功能來提高訊息可靠性。

飛行視窗的設計可允許多個未確認的 QoS 1 和 QoS 2 報文同時存在於網路鏈路上,訊息佇列則可以滿足在訊息鏈路中訊息超出飛行視窗的同時對訊息進行進一步儲存,以滿足客戶端離線時未接收的訊息或者未確認資料訊息的儲存需求。

飛行視窗同時也有 upgrade_qos 引數實現根據訂閱強制升級 QoS 之類的功能,可實現 QoS 等級的一致性,確保不會出現消費降級的情況。

此外,EMQX 還可提供限制業務按區域接入實現不同的 QoS 等級、資料橋接 QoS 管理、MQTT-SN 協議 QoS 管理等能力,均為車聯網場景下的訊息可靠傳輸提供了有力保障。