2020-10-15 MQTT基礎知識 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

2020-10-15 MQTT基礎知識

發表時(shí)間:2020-10-19

發布人(rén):融晨科技

浏覽次數:69

MQTT同HTTP屬于(yú)第七層(應用層:面向用戶的(de)一層,爲(wéi / wèi)用戶提供常用的(de)應用程序)

1.機器之(zhī)間的(de)大(dà)規模溝通:發布/訂閱(Publish/Subscribe)模式

它使發送消息的(de)客戶端(發布者)與接收消息的(de)客戶端(訂閱者)分離,發布者與訂閱者不(bù)需要(yào / yāo)建立直接聯系,中間代理根據主題負責所有消息路由和(hé / huò)分發的(de)工作

物品則通過各種傳感器進行信息采集,然後通過計算設備進行網絡信息交換與通信

增強了(le/liǎo)整個(gè)系統的(de)可靠性,當一個(gè)客戶端出(chū)現故障時(shí),整個(gè)系統可以(yǐ)繼續正常工作。

2.MQTT是(shì)基于(yú)二進制消息的(de)發布/訂閱編程模式的(de)消息協議

基于(yú)TCP/IP協議棧

通俗來(lái)說(shuō)是(shì)一個(gè)類似新浪微博的(de)自動轉發服務器

3.MQTT與HTTP比較

HTTPMQTT

相同點

都是(shì)應用層協議,都運用了(le/liǎo)底層協議TCP(三次握手)

TCP/IP協議棧

客戶端和(hé / huò)服務器之(zhī)間是(shì)請求/應答模式,客戶端請求時(shí),會建立一個(gè)HTTP連接,然後發送請求消息,服務端給出(chū)應答消息,開銷大(dà)

發布/訂閱模式

發布者與訂閱者不(bù)需要(yào / yāo)建立直接聯系,簡單、輕量、易于(yú)實現

HTTP 是(shì)一種同步協議,客戶端需要(yào / yāo)等待服務器響應

異步消息協議更适合 IoT 應用程序,因爲(wéi / wèi)大(dà)量設備以(yǐ)及很可能不(bù)可靠或高延遲的(de)網絡使得同步通信成爲(wéi / wèi)問題

HTTP 是(shì)單向的(de),客戶端必須發起連接,才能得到(dào)響應

在(zài) IoT 應用程序中,設備或傳感器通常是(shì)客戶端,這(zhè)意味着它們無法被動地(dì / de)接收來(lái)自網絡的(de)命令

網絡接口層——接受網絡上(shàng)的(de)數據,抽出(chū)IP數據報,交給網絡層

網絡層——處理傳輸層請求,發往适當接口/接受輸入數據報

傳輸層——應用程序間通信

應用層——給用戶提供服務


3.原理

MQTT協議中有三種身份:

服務器 代理(Broker)

客戶端 發布者(Publish)、訂閱者(Subscribe)

消息發布者可以(yǐ)同時(shí)是(shì)訂閱者

MQTT傳輸的(de)消息分爲(wéi / wèi):

主題(Topic) 消息的(de)類型,訂閱者訂閱(Subscribe)後,就(jiù)會收到(dào)該主題的(de)消息内容

負載(payload) 消息的(de)内容

完整流程

  • 1) 啓動服務器代理。

  • 2) 訂閱者向服務器代理訂閱相關主題。

  • 3) 發布者向服務器代理發布主題信息。

  • 4) 服務器代理向所有訂閱該主題的(de)訂閱者推送消息。

有三種消息發布服務質量:

"至多一次"(Qos=0),消息發布完全依賴底層TCP/IP網絡。會發生消息丢失或重複。這(zhè)一級别可用于(yú)如下情況,環境傳感器數據,丢失一次讀記錄無所謂,因爲(wéi / wèi)不(bù)久後還會有第二次發送。這(zhè)一種方式主要(yào / yāo)普通APP的(de)推送,倘若你的(de)智能設備在(zài)消息推送時(shí)未聯網,推送過去沒收到(dào),再次聯網也(yě)就(jiù)收不(bù)到(dào)了(le/liǎo)。

"至少一次"(Qos=1),确保消息到(dào)達,但消息重複可能會發生。

"隻有一次"(Qos=2),确保消息到(dào)達一次。在(zài)一些要(yào / yāo)求比較嚴格的(de)計費系統中,可以(yǐ)使用此級别。在(zài)計費系統中,消息重複或丢失會導緻不(bù)正确的(de)結果。這(zhè)種最高質量的(de)消息發布服務還可以(yǐ)用于(yú)即時(shí)通訊類的(de)APP的(de)推送,确保用戶收到(dào)且隻會收到(dào)一次。

發送消息時(shí),可以(yǐ)指定QoS,如果QoS>0,那麽消息一定會發到(dào)Broker。訂閱主題時(shí),也(yě)可以(yǐ)指定QoS,如果QoS>0,那麽Broker一定會将消息發給訂閱者,不(bù)會丢失。這(zhè)裏要(yào / yāo)要(yào / yāo)注意,消息從發布者到(dào)訂閱者,是(shì)分兩步走的(de),第一步有發布者發布到(dào)MQTT Broker,第二步是(shì)MQTT Broker轉發消息到(dào)訂閱者。所以(yǐ)隻有當發布消息時(shí),指定QoS>0,并且訂閱主題時(shí),QoS>0,消息才能可靠的(de)從發布客戶端發送到(dào)訂閱客戶端。

相關案例查看更多