時(shí)間:2021-06-22 作者:眾山科技
物聯(lián)網(wǎng)是傳統互聯(lián)網(wǎng)的延伸。最終用戶(hù)從傳統的計算機擴展到任何設備,即首先通過(guò)各種傳感器收集信息,然后通過(guò)計算機設備進(jìn)行信息的采集、交換和網(wǎng)絡(luò )信息的交換。MQTT協(xié)議的出現是因為移動(dòng)互聯(lián)網(wǎng)還處于起步階段,不能為其提供可靠的網(wǎng)絡(luò )保障。
一、MQTT的優(yōu)點(diǎn)。
1、MQTT的獨特之處在于,它可以將每個(gè)報頭縮短為2個(gè)字節。使用HTTP,重新建立與每個(gè)新請求消息的HTTP連接將帶來(lái)相當大的開(kāi)銷(xiāo)。使用MQ和MQTT的持久連接可以顯著(zhù)降低此開(kāi)銷(xiāo)。
2、包含不穩定的網(wǎng)絡(luò ),MQTT和MQ可以在沒(méi)有任何編碼要求的情況下從斷開(kāi)連接等故障中恢復。然而,HTTP本身不能達到這個(gè)目標,而客戶(hù)機必須重新嘗試編碼,這會(huì )增加身份問(wèn)題。
3、MQTT是專(zhuān)門(mén)為實(shí)現低功耗目標而設計的。這一點(diǎn)在HTTP設計中沒(méi)有考慮到,增加了功耗。
4、在HTTP協(xié)議棧中,要維護數百萬(wàn)個(gè)并發(fā)連接,要連接數百萬(wàn)個(gè)客戶(hù)機,需要做很多工作來(lái)提供支持。雖然這種支持是可行的,但是大多數商業(yè)產(chǎn)品都在處理此訂單的持久連接方面進(jìn)行了優(yōu)化。IBMMessageSight是IBM提供的一種單機架安裝服務(wù)器,經(jīng)過(guò)測試,它可以處理多達100萬(wàn)個(gè)MQTT并發(fā)設備。反之,MQ并沒(méi)有被設計給很多同步的客戶(hù)。
5、推送通知。你必須能夠及時(shí)地向客戶(hù)發(fā)送通知。要做到這一點(diǎn),你應該使用常規的push方法。在電池、系統負載和帶寬方面,推式是最好的解決方案。
6、客戶(hù)平臺的差異。許多平臺上實(shí)現了HTTP和MQTT客戶(hù)端。MQTT的簡(jiǎn)單性可以幫助您用最小的努力將MQTT應用于其他客戶(hù)端。
7、防火墻的容錯性。一些公司的防火墻限制出站連接到特定的預定義端口,這些端口通常局限于HTTP(端口80)、HTTPS(端口443)等等,在這種情況下HTTP顯然能夠正常工作。在WebSockets連接中封裝的MQTT,顯示為HTTP升級請求,因此可以在這種情況下運行。
二、MQTT的缺點(diǎn)。
1、如果沒(méi)有完全的SDK,就需要一個(gè)用于不同異構設備的軟件SDK包來(lái)與MQTT服務(wù)器通信(例如,MCU,Linux,Android,IOS,WEB),以便實(shí)現互聯(lián)互通和互操作。
2、文件和AV不受支持。有些應用場(chǎng)景中,需要傳輸的信息可能并不局限于需要通過(guò)AV文件進(jìn)行通信的指令,如語(yǔ)音和視頻信號。
3、不支持與第三方的HTTP集成。雖然MQTT協(xié)議優(yōu)于傳統HTTP協(xié)議,但基于傳統HTTP協(xié)議的WEB服務(wù)器仍然占據了主流市場(chǎng)。為了減少升級成本,這些服務(wù)器應該與MQTT協(xié)議互連。
4、不支持分配給負載。對高并發(fā)性和防止惡意攻擊來(lái)說(shuō),負載分配服務(wù)器也至關(guān)重要。
5、不支持此用戶(hù)管理界面。這一點(diǎn)在用戶(hù)分析設備行為數據時(shí)尤為重要。這是工業(yè)4.0和大數據時(shí)代不可避免的需求。
6、設備離線(xiàn)后,不支持脫機消息,以補償控制信息從MQTT服務(wù)器到設備的丟失。
7、點(diǎn)到點(diǎn)通信不受支持,并且使用標準的MQTT協(xié)議。在理論上,點(diǎn)對點(diǎn)的通信可以通過(guò)相互訂閱來(lái)實(shí)現,但這種邏輯比較復雜,而且涉及到設備安全問(wèn)題。如果裝置B和裝置C是同一裝置-對于主體,裝置A不能知道消息是來(lái)自裝置B還是裝置C,而且裝置D很可能會(huì )竊聽(tīng)這些消息。
8、不支持群組通信或群組管理,而是實(shí)現對組成員的管理。團隊成員可以交換信息,如果一個(gè)設備被多個(gè)人控制,或者有多個(gè)設備被一個(gè)人控制,這個(gè)特性就特別有用。
MQTT協(xié)議原理。
實(shí)現MQTT協(xié)議需要客戶(hù)端和服務(wù)器通信。在通信過(guò)程中,MQTT協(xié)議有三種身份:發(fā)布者、代理商和訂閱者。其中,消息發(fā)布者和訂閱者都是客戶(hù)端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者。
MQTT協(xié)議的方法。
在MQTT協(xié)議中,有一些方法(也稱(chēng)為動(dòng)作)被定義為操作確定的資源。該資源可代表預先存在的數據或動(dòng)態(tài)生成數據,這取決于服務(wù)器的實(shí)現。一般來(lái)說(shuō),資源是指服務(wù)器上的文件或輸出。其主要方法如下:
(1)計算機。等待與服務(wù)器建立連接。
(2)Disconnect。等MQTT客戶(hù)端完成工作,與服務(wù)器斷開(kāi)TCP/IP對話(huà)。
(3)Subscribe。等待訂閱完成。
(4)UnSubscribe。等待服務(wù)器取消一個(gè)或多個(gè)客戶(hù)端訂閱。
(5)Publish。MQTT客戶(hù)端發(fā)送信息請求,發(fā)送完成后返回應用程序線(xiàn)程。