MQTT比TCP協(xié)議好在哪兒?就好比汽車底盤上有四個輪胎就能跑了稍有不慎,但是想要大家開車更舒服探索,我們還是得給底盤加個殼。
為什么要在 TCP 協(xié)議之上再封裝一層 MQTT 協(xié)議呢高產?
舉個例子註入新的動力,如果你要用 TCP 協(xié)議做一個即時聊天室,那么你:
上面這個例子數字技術,在連接服務(wù)器(檢查合法性共享應用、斷開連接)、訂閱主題(加入聊天室)完成的事情、發(fā)布消息這些過程中調整推進,你約定的報文格式和設(shè)計的服務(wù)器處理邏輯就是 MQTT 協(xié)議的內(nèi)容,當(dāng)然我舉的例子非常粗糙研究成果。
MQTT是一個客戶端服務(wù)端架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議橋梁作用。它的設(shè)計思想是輕巧、開放促進善治、簡單講故事、規(guī)范,因此易于實現(xiàn)求索。這些特點使得它對很多場景來說都是很好的選擇置之不顧,包括受限的環(huán)境:如機器與機器的通信(M2M)以及物聯(lián)網(wǎng)環(huán)境(IoT),這些場景要求很小的代碼封裝或者網(wǎng)絡(luò)帶寬非常昂貴性能穩定。
MQTT的優(yōu)點是:
1)具備實時性試驗,設(shè)備控制速度可以在200ms以內(nèi);
2)設(shè)計簡單數字化、輕巧新格局、便于實現(xiàn);
3)占用資源少開展攻關合作,非常適合在資源受限的物聯(lián)網(wǎng)芯片上運行
當(dāng)然特點,它的缺點也很明顯:
1)基于TCP/IP,對網(wǎng)絡(luò)環(huán)境要求相對較高情況正常;
2)TCP存在RST攻擊製度保障,容易被運營商攔截;
3)TCP資源相對UDP消耗大各領域,需要建立連接顯示、維護(hù)連接、釋放連接
首先TCP是傳輸層協(xié)議自行開發,實現(xiàn)了一個雙向的通信鏈路模樣。
MQTT是基于TCP的應(yīng)用層協(xié)議。(當(dāng)然中間可能多一層處理方法,websocket)
兩者不在一個層級數據顯示,比較誰比誰好是沒有意義的。
TCP 也可以實現(xiàn)數(shù)據(jù)通信服務,比如發(fā)送傳感器數(shù)據(jù)到服務(wù)器實現。為什么要用到MQTT呢 持續向好?
假設(shè)現(xiàn)在有一個物聯(lián)網(wǎng)的應(yīng)用,當(dāng)然可以直接用TCP socket 做通信,實際上不少人也是這么做的不容忽視。然后你就會發(fā)現(xiàn):
* 需要自己寫確認(rèn)重傳的機制,因為TCP 連接說不定就斷了高質量。
* 如果有很多個傳感器(生產(chǎn)者)研究與應用,又要寫代碼管理這么多TCP連接呢。
* 如果同時又有多個地方需要用到這些數(shù)據(jù)迎難而上,還得寫一個轉(zhuǎn)發(fā)的邏輯有效保障。
* 如果系統(tǒng)很復(fù)雜,參與人或公司很多更高效,那通信格式要怎么定稍有不慎,怎么改,溝通成本就很大了。
這些東西這么麻煩全面協議,又不想加班寫代碼,那有沒有辦法簡便地解決呢堅持先行?當(dāng)然有講實踐,就是用現(xiàn)成的協(xié)議啦,比如MQTT具體而言。
MQTT 提供兩個核心功能:
* 三個級別的QOS
*基于訂閱/發(fā)布的消息轉(zhuǎn)發(fā)服務(wù)相關性。
用了MQTT, 上面提到的這些問題就都被優(yōu)雅地解決掉啦。
其實製高點項目,同類應(yīng)用的很多問題,都是有一定共性的的過程中。這時候就會有一些人提出一般性的解決方式物聯與互聯,這樣大家就不用重復(fù)造輪子,同時又保證了互操作性範圍和領域。這就是協(xié)議存在的意義啦取得了一定進展。
所以一句話總結(jié),MQTT 和其他的應(yīng)用層協(xié)議,比如 HTPP, FTP, BitTorrent 協(xié)議一樣有所增加,都是為了解決特定問題而生的一套方案,可以幫我們省好多事促進進步。
真正的MQTT協(xié)議要求的處理邏輯和報文格式都完善很多供給,但是協(xié)議本身還是很簡單的,具體內(nèi)容去看 MQTT 的文檔吧更高要求。