日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MQTT——服务质量Qos

發布時間:2023/12/18 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MQTT——服务质量Qos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

Qos簡介

Qos等級及其說明

?Qos的重要性

Qos工作模式

Qos=0

Qos=1

Qos=2


寫MQTT項目的時候,沒有感受到Qos服務質量參數的重要性,直到報錯后一直無法解決,在曾經的代碼嘗試無誤,合成的項目中就出現了錯誤,仔細對比代碼邏輯是一樣的,只有服務質量不同,抱著嘗試的態度試了試,果然可以!

Qos簡介

QoS(Quality of Service,服務質量)指一個網絡能夠利用各種基礎技術,為指定的網絡通信提供更好的服務能力,是網絡的一種安全機制, 是用來解決網絡延遲和阻塞等問題的一種技術。QoS的保證對于容量有限的網絡來說是十分重要的,特別是對于流多媒體應用,例如VoIP和IPTV等,因為這些應用常常需要固定的傳輸率,對延時也比較敏感。(百度百科)

當網絡發生擁塞的時候,所有的數據流都有可能被丟棄;為滿足用戶對不同應用不同服務質量的要求,就需要網絡能根據用戶的要求分配和調度資源,對不同的數據流提供不同的服務質量:對實時性強且重要的數據報文優先處理;對于實時性不強的普通數據報文,提供較低的處理優先級,網絡擁塞時甚至丟棄。QoS應運而生。支持QoS功能的設備,能夠提供傳輸品質服務;針對某種類別的數據流,可以為它賦予某個級別的傳輸優先級,來標識它的相對重要性,并使用設備所提供的各種優先級轉發策略、擁塞避免等機制為這些數據流提供特殊的傳輸服務。配置了QoS的網絡環境,增加了網絡性能的可預知性,并能夠有效地分配網絡帶寬,更加合理地利用網絡資源。

Qos等級及其說明

MQTT設計了一套保證消息穩定傳輸的機制,包括消息應答、存儲和重傳。在這套機制下,提供了三種不同層次QoS(Quality of Service):

  • QoS0,At most once,至多一次;
  • QoS1,At least once,至少一次;
  • QoS2,Exactly once,確保只有一次。

QoS 是消息的發送方(Sender)和接受方(Receiver)之間達成的一個協議:

  • QoS=0 代表,Sender 發送的一條消息,Receiver 最多能收到一次,也就是說 Sender 盡力向 Receiver 發送消息,如果發送失敗,也就算了;
  • QoS=1 代表,Sender 發送的一條消息,Receiver 至少能收到一次,也就是說 Sender 向 Receiver 發送消息,如果發送失敗,會繼續重試,直到 Receiver 收到消息為止,但是因為重傳的原因,Receiver 有可能會收到重復的消息;
  • QoS=2 代表,Sender 發送的一條消息,Receiver 確保能收到而且只收到一次,也就是說 Sender 盡力向 Receiver 發送消息,如果發送失敗,會繼續重試,直到 Receiver 收到消息為止,同時保證 Receiver 不會因為消息重傳而收到重復的消息。

?Qos的重要性

QoS 是MQTT的一個主要的功能。它使得在一個不穩定的網絡環境里的信息交換更加的簡單,因為協議控制了中繼并保證了信息的交付,忽略了不可靠的下層的交互。并且,它授權給客戶端來根據客戶端的程序邏輯,網絡可靠程度來決定QoS等級。

Qos工作模式

Qos=0

保證一次信息盡力交付,發出去了就不管了

?

?

Qos=1

保證消息可以被至少接受發送一次給接受者,可能被重復接受

發送者將會存儲發送的信息直到發送者收到一次來自接收者的PUBACK格式的應答。

?

?

Qos=2

保證消息發送出去后,接收方接受且只接受一次,是最安全也是最慢的服務

如果接收端接收到了一個QoS 的PUBLISH消息,它將相應地處理?PUBLISH消息,并通過PUBREC消息向發送方確認。

?

使用 QoS0

  • Client 和 Broker 之間的網絡連接非常穩定,例如一個通過有線網絡連接到 Broker 的測試用 Client;
  • 可以接受丟失部分消息,比如你有一個傳感器以非常短的間隔發布狀態數據,所以丟一些也可以接受;
  • 你不需要離線消息。

使用 QoS1:

  • 你需要接收所有的消息,而且你的應用可以接受并處理重復的消息;
  • 你無法接受 QoS2 帶來的額外開銷,QoS1 發送消息的速度比 QoS2 快很多。

使用 QoS2:

  • 你的應用必須接收到所有的消息,而且你的應用在重復的消息下無法正常工作,同時你也能接受 QoS2 帶來的額外開銷。

(參考百度百科)

?

總結

以上是生活随笔為你收集整理的MQTT——服务质量Qos的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。