MQTT入門(7) 服務質量QoS

2021-09-02 21:22:21 字數 1240 閱讀 2145

為了確保客戶端和伺服器端之間訊息的送達,mqtt支援三種訊息發布服務質量(qos:quality of service):

[b](1)qos 0(at most once)「至多一次」[/b]

訊息發布完全依賴底層 tcp/ip 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。

[b](2)qos 1(at least once)「至少一次」[/b]

確保訊息到達,但訊息重複可能會發生。

[b](3)qos 2(exactly once)「只有一次」[/b]

確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量。

需要注意的是:

[list][*]這裡指的是client和broker之間的關係,而不是publisher和subscriber之間的關係,在pub/sub模型中,publisher和subscriber是完全解耦的。

[*]發布者在每次發布訊息時都需要設定qos,訂閱者在訂閱主題時也可以設定qos。

[*]發布者或者訂閱者設定的qos分別是和伺服器端非同步執行的。

[*]即使發布者設定發布訊息為qos2,訂閱者也可以通過qos0或qos1來訂閱該訊息(這樣就是qos的降級downgrade)。

[*]訂閱者一般來說最好使用qos2。[/list]

以下是發布和訂閱的時序圖:

[img]

[img]

[img]

[img]

通訊抓包具體看看每種qos的通訊過程。

[img]

[color=blue][b]publisher(qos=0)subscriber(qos=0)[/b][/color]

[img]

[color=blue][b]publisher(qos=1)subscriber(qos=1)[/b][/color]

[img]

[color=blue][b]publisher(qos=2)subscriber(qos=2)[/b][/color]

[img]

[color=blue][b]publisher(qos=2)subscriber(qos=0)[/b][/color]

[img]

[color=blue][b]publisher(qos=0)subscriber(qos=2)[/b][/color]

[img]

QoS服務質量

ip qos歷史 internet的建立者在ip分組報頭中預留了乙個位元組,為服務型別tos,從而使得最初的ip規範就包括qos。服務型別用於指示所需qos的抽象引數,這些引數用於指導如何選擇實際的服務引數。1980年,internet處於象牙塔,執行的應用和通訊有限,因此,是否支援tos顯得無關緊...

QOS服務質量

四 qos工作過程 分類 標記 佇列機制 擁塞避免 整形 監管 資料壓縮 鏈路 分類,標記 分類標準 1.acl 2.源ip位址 3.目標ip位址 4.協議 5.源 目的埠 6.二層地 址 7.tos 服務型別 8.exp mpls中優先順序字段 9.pri 802.1q中的優先 級字段 稱為cos...

QoS(服務質量)指標

qos的關鍵指標主要包括 可用性 吞吐量 時延 時延變化 包括抖動和漂移 和丟失。下面詳細敘述。是當使用者需要時網路即能工作的時間百分比。可用性主要是裝置可靠性和網路存活性相結合的結果。對它起作用的還有一些其他因素,包括軟體 穩定性以及網路演進或公升級時不中斷服務的能力。在連續5min內,如果乙個i...