知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
2020-10-15 MQTT基礎(chǔ)知識(shí)
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):69
MQTT同HTTP屬于第七層(應(yīng)用層:面向用戶(hù)的一層,為用戶(hù)提供常用的應(yīng)用程序)
1.機(jī)器之間的大規(guī)模溝通:發(fā)布/訂閱(Publish/Subscribe)模式
它使發(fā)送消息的客戶(hù)端(發(fā)布者)與接收消息的客戶(hù)端(訂閱者)分離,發(fā)布者與訂閱者不需要建立直接聯(lián)系,中間代理根據(jù)主題負(fù)責(zé)所有消息路由和分發(fā)的工作
物品則通過(guò)各種傳感器進(jìn)行信息采集,然后通過(guò)計(jì)算設(shè)備進(jìn)行網(wǎng)絡(luò)信息交換與通信
增強(qiáng)了整個(gè)系統(tǒng)的可靠性,當(dāng)一個(gè)客戶(hù)端出現(xiàn)故障時(shí),整個(gè)系統(tǒng)可以繼續(xù)正常工作。
2.MQTT是基于二進(jìn)制消息的發(fā)布/訂閱編程模式的消息協(xié)議
基于TCP/IP協(xié)議棧
通俗來(lái)說(shuō)是一個(gè)類(lèi)似新浪微博的自動(dòng)轉(zhuǎn)發(fā)服務(wù)器
3.MQTT與HTTP比較
HTTPMQTT
相同點(diǎn)
都是應(yīng)用層協(xié)議,都運(yùn)用了底層協(xié)議TCP(三次握手)
TCP/IP協(xié)議棧
客戶(hù)端和服務(wù)器之間是請(qǐng)求/應(yīng)答模式,客戶(hù)端請(qǐng)求時(shí),會(huì)建立一個(gè)HTTP連接,然后發(fā)送請(qǐng)求消息,服務(wù)端給出應(yīng)答消息,開(kāi)銷(xiāo)大
發(fā)布/訂閱模式
發(fā)布者與訂閱者不需要建立直接聯(lián)系,簡(jiǎn)單、輕量、易于實(shí)現(xiàn)
HTTP 是一種同步協(xié)議,客戶(hù)端需要等待服務(wù)器響應(yīng)
異步消息協(xié)議更適合 IoT 應(yīng)用程序,因?yàn)榇罅吭O(shè)備以及很可能不可靠或高延遲的網(wǎng)絡(luò)使得同步通信成為問(wèn)題
HTTP 是單向的,客戶(hù)端必須發(fā)起連接,才能得到響應(yīng)
在 IoT 應(yīng)用程序中,設(shè)備或傳感器通常是客戶(hù)端,這意味著它們無(wú)法被動(dòng)地接收來(lái)自網(wǎng)絡(luò)的命令
網(wǎng)絡(luò)接口層——接受網(wǎng)絡(luò)上的數(shù)據(jù),抽出IP數(shù)據(jù)報(bào),交給網(wǎng)絡(luò)層
網(wǎng)絡(luò)層——處理傳輸層請(qǐng)求,發(fā)往適當(dāng)接口/接受輸入數(shù)據(jù)報(bào)
傳輸層——應(yīng)用程序間通信
應(yīng)用層——給用戶(hù)提供服務(wù)
3.原理
MQTT協(xié)議中有三種身份:
服務(wù)器 代理(Broker)
客戶(hù)端 發(fā)布者(Publish)、訂閱者(Subscribe)
消息發(fā)布者可以同時(shí)是訂閱者
MQTT傳輸?shù)南⒎譃?#xff1a;
主題(Topic) 消息的類(lèi)型,訂閱者訂閱(Subscribe)后,就會(huì)收到該主題的消息內(nèi)容
負(fù)載(payload) 消息的內(nèi)容
完整流程
-
1) 啟動(dòng)服務(wù)器代理。
-
2) 訂閱者向服務(wù)器代理訂閱相關(guān)主題。
-
3) 發(fā)布者向服務(wù)器代理發(fā)布主題信息。
-
4) 服務(wù)器代理向所有訂閱該主題的訂閱者推送消息。
有三種消息發(fā)布服務(wù)質(zhì)量:
"至多一次"(Qos=0),消息發(fā)布完全依賴(lài)底層TCP/IP網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級(jí)別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無(wú)所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送。這一種方式主要普通APP的推送,倘若你的智能設(shè)備在消息推送時(shí)未聯(lián)網(wǎng),推送過(guò)去沒(méi)收到,再次聯(lián)網(wǎng)也就收不到了。
"至少一次"(Qos=1),確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。
"只有一次"(Qos=2),確保消息到達(dá)一次。在一些要求比較嚴(yán)格的計(jì)費(fèi)系統(tǒng)中,可以使用此級(jí)別。在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。這種最高質(zhì)量的消息發(fā)布服務(wù)還可以用于即時(shí)通訊類(lèi)的APP的推送,確保用戶(hù)收到且只會(huì)收到一次。
發(fā)送消息時(shí),可以指定QoS,如果QoS>0,那么消息一定會(huì)發(fā)到Broker。訂閱主題時(shí),也可以指定QoS,如果QoS>0,那么Broker一定會(huì)將消息發(fā)給訂閱者,不會(huì)丟失。這里要要注意,消息從發(fā)布者到訂閱者,是分兩步走的,第一步有發(fā)布者發(fā)布到MQTT Broker,第二步是MQTT Broker轉(zhuǎn)發(fā)消息到訂閱者。所以只有當(dāng)發(fā)布消息時(shí),指定QoS>0,并且訂閱主題時(shí),QoS>0,消息才能可靠的從發(fā)布客戶(hù)端發(fā)送到訂閱客戶(hù)端。
相關(guān)案例查看更多
相關(guān)閱讀
- 小程序定制開(kāi)發(fā)
- 搜索引擎優(yōu)化
- 紅河小程序開(kāi)發(fā)
- 前端
- python開(kāi)發(fā)小程序
- 云南網(wǎng)站建設(shè)方案 doc
- 昆明軟件公司
- 網(wǎng)站維護(hù)
- 網(wǎng)站開(kāi)發(fā)
- 小程序開(kāi)發(fā)公司
- 云南網(wǎng)站建設(shè)特性
- 用戶(hù)登錄
- 云南小程序開(kāi)發(fā)課程
- 汽車(chē)報(bào)廢系統(tǒng)
- web教程
- 南通小程序制作公司
- 網(wǎng)絡(luò)公司聯(lián)系方式
- 報(bào)廢車(chē)拆解管理系統(tǒng)
- 報(bào)廢車(chē)管理系統(tǒng)
- 網(wǎng)站建設(shè)電話
- 網(wǎng)站建設(shè)首選
- 百度小程序公司
- 網(wǎng)站建設(shè)快速優(yōu)化
- 網(wǎng)站建設(shè)專(zhuān)家
- 北京小程序制作
- 微信小程序開(kāi)發(fā)入門(mén)課程
- 區(qū)塊鏈
- 做小程序被騙
- 網(wǎng)絡(luò)公司哪家好
- 云南花農(nóng)小程序