2024年7月13日 星期六

MQTT

MQTT

 資料來源  https://ithelp.ithome.com.tw/articles/10224407

簡介

  • MQTT(Message Queuing Telemetry Transport) 訊息序列遙測傳輸
    • 1999年 IBM發明
    • 伺服器與用戶端間的發布與訂閱的訊息傳輸協定 (publish / subscribe )
    • MQTT 正式變成開放的 OASIS 國際標準
    • 適用於 M2M 和 IoT 環境

MQTT 特點

MQTT 好處在於它是一種輕量級協議 ,由於是為了物聯網而設計的協定,因此它所需要的網路頻寬是很低的,而且需要的硬體資源也是低的。很適合用在低功耗和網絡帶寬有限的IoT環境,像是智慧家電或者醫療裝置等等。

MQTT 訊息傳遞原理

  • 使用發佈(Publish) / 訂閱(Subscribe)的機制傳訊
  • 4個主要的元素:
    • 發佈者 (Publisher)
    • 訂閱者 (Subscriber)
    • 主題 (Topic)
    • 轉訊站 (Broker)

  • 由發布者 Publish 發佈一個主題,
  • 然後就會傳送給 Broker
  • 由 Broker 轉發給有 Subscrib 訂閱該主題的人

例如:
蘋果日報、聯合報 (Publish 發佈一個主題) 將報紙交由報社(Broker) 轉發,那報社(Broker)就會去看有誰訂閱(Subscrib 訂閱的人)蘋果日報或者訂閱聯合報,就會將報紙發布給他。

實例:

實際應用上來說,一定會有來自不同IoT設備或Sensors,將收集到的數據發送到MQTT Broker,再由 Broker 針對不同主題去發布給不同訂閱者。

當然啦,Client 同時可以充當數據的訂閱者和發布者,所以 Clien 和 MQTT Bocker 就會同時進行雙向的數據溝通。

MQTT 訊息格式、封包格式

  • MQTT的訊息格式有三類:
    • Fix Header (固定格式封包)
      • Message Type為4 bit數字,共16位數
    • Variable Header (變動格式封包)
    • Payload (訊息內文)


MQTT QoS級別

  • MQTT 定義了三個層級的品質設定
  • QoS 代表Publisher與Broker、Broker與Subscriber之間傳輸品質

QoS 0 最多傳送一次(at most once)

  • Publisher 傳訊給 Broker 後直接轉傳給 Subscriber,不會回傳確認封包
  • QoS 0就像寄平信,不保證訊息會送達

QoS 1 至少傳送一次(at least once)

  • Publisher 傳訊給 Broker 後,Broker會回應 PUBACK 訊息給Publisher,確認收到訊息
  • Publisher沒有收到PUBACK回應,就會再次發送Publish
  • 缺點:
    • Publisher沒有收到PUBACK回應,就會認定訊息沒送到,重傳訊息。
    • 讓訂閱者重複收到相同訊息。
  • 保證訊息會送達,但可能會重複

QoS 2 確實傳送一次(exactly once)

  • Publisher 傳訊給 Broker 後,Broker會回應PUBREC訊息給Publisher,確認收到要發布的訊息
  • Publisher收到PUBREC回應時,傳送PUBREL(釋放發布訊息)
  • Broker收到PUBREL,將訊息發布給Subscriber,並向Publisher回報PUBCOMP

QoS 總結

  • QoS 0
    • 優點 - 佔用頻寬與傳送時間較少
    • 缺點 - 資料可能會遺失
  • QoS 1
    • 優點 - 佔用頻寬與傳送時間較少較 Qos 2 少
    • 缺點 - Subscriber可能會收到重複的訊息
  • QoS 2
    • 優點 - 不會重覆傳送相同訊息
    • 缺點 - 佔用頻寬與傳送時間較多






參考資料與圖片來源

https://swf.com.tw/?p=1002

http://designer.mech.yzu.edu.tw/articlesystem/article/compressedfile/(2016-07-15)%20%E7%AC%AC%E4%B8%89%E7%AB%A0%20MQTT%E9%80%9A%E8%A8%8A%E5%8D%94%E8%AD%B0.aspx?ArchID=2621

https://blog.softwaretoolbox.com/mqtt-quality-of-service-datahub


影片 13.1MQTT基本介紹

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...