RFID應用文章

MQTT與傳統HTTP協定相比有哪些優勢

HTTP 是使用最廣泛和流行的協定。 但 MQTT 在過去幾年迅速普及。 在討論物聯網開發時,開發者必須在兩者之間做出選擇。

MQTT 專注於數據,而 HTTP 則專注於文件。 HTTP 是一種用於客戶端-伺服器運算的請求-回應協議,並非總是針對行動裝置進行最佳化。 從這些方面來看,MQTT 的主要優點是:輕量級(MQTT 以位元組數組的形式傳輸資料)和發布/訂閱模型,這使得 MQTT 非常適合資源有限的設備,並有助於節省電池。 此外,發布/訂閱模型使客戶端能夠相互獨立,從而提高了整個系統的可靠性。 在客戶端故障的情況下,整個系統仍能繼續正常運作。

MQTT的優點還是很多的,如下:

1. 協定開銷低,MQTT 的獨特之處在於每個訊息的標頭可以短至 2 個位元組。 MQ 和 HTTP 的每個訊息開銷都要高得多。 對於 HTTP,為每個新請求訊息重新建立 HTTP 連線會產生大量開銷。 MQ 和 MQTT 使用的持久連接顯著減少了這種開銷。

2. 容忍不穩定的網絡,MQTT和MQ可以從斷線等故障中恢復,並且沒有進一步的代碼要求。 但是,HTTP 本身無法執行此操作,需要客戶端重試編碼,這可能會增加冪等性問題。

3. 低功耗,MQTT專為低功耗而設計。 HTTP 的設計並未考慮到這一點,因此增加了功耗。

4. 擁有百萬級連線的客戶端,在HTTP堆疊上,維護百萬級並發連線需要做大量的工作來提供支援。 雖然這種支援是可能的,但大多數商業產品都經過最佳化以處理這個數量級的持久連接。 IBM 提供 IBM MessageSight,這是一款經過測試可透過 MQTT 處理多達 100 萬個並發連接裝置的機架式伺服器。 相較之下,MQTT 並不是為大量並發客戶端而設計的。

5. 推播通知,您需要能夠及時向客戶傳遞通知。 為此,必須採用某種定期輪詢或推送; 從電池、系統負載和頻寬的角度來看,推播是最好的解決方案。

我們的業務可能需要在沒有第三方中介的情況下發送敏感資訊。 這降低了特定於作業系統的解決方案(例如Apple iOS、Google Play 通知)作為主要傳輸機制的價值。

HTTP 只允許一種稱為COMET 的方法,使用持久HTTP 請求來執行推送。 從客戶端和伺服器的角度來看,這種方法都很昂貴。 MQ 和 MQTT 都支援推送,這是它們的基本特性。

6. 客戶端平台差異,HTTP 和 MQTT 用戶端都已在大量平台上實現。 MQTT 的簡單性有助於在其他客戶端輕鬆實現 MQTT。

7. 防火牆容錯,一些企業防火牆限制出站連接到某些定義的連接埠。 這些連接埠通常僅限於 HTTP(連接埠 80)、HTTPS(連接埠 443)等。HTTP 顯然可以在這些情況下運作。 MQTT 可以封裝在 WebSockets 連線中,該連線顯示為 HTTP 升級請求,從而允許在這些情況下進行操作。 MQTT 不允許這種模式。

與 HTTP 相比,MQTT 協定保證了較高的傳輸速率。 服務品質分為三個等級:

A. 最多一次:盡力確保交付。

B. 至少一次:確保電子郵件至少發送一次,但訊息也可以多次發送。

C. Just Once:保證每個訊息對方只接收一次。

事實上,MQTT的應用非常廣泛。 幾乎在任何大型硬體和網路公司都可以找到MQTT的身影,例如Facebook、BP、阿里巴巴、百度等。

由於MQTT本身的各種技術優勢,越來越多的公司傾向於選擇MQTT作為物聯網產品通訊的標準協定。 因此,工程師逐漸發現,MQTT協議要大規模商用,還有一些功能需要改進。 例如:

1. 沒有完整的SDK,不同的異質終端需要對應的軟體SDK套件才能與MQTT伺服器通訊。 例如,要實現MCU、Linux、Android、IOS、WEB等之間的互聯,就需要不同的SDK套件。

2. 不支援文件和 AV。 在某些應用場景中,傳輸的資訊可能不限於指令,例如音訊訊號、視訊訊號等,需要透過File和AV進行通訊。

3. 不支援與第三方HTTP整合。 儘管h MQTT協定優於普通HTTP協定,基於傳統HTTP協定的WEB伺服器仍然佔據主流市場,因此這些伺服器必須實現與MQTT協定的互聯,以減少升級成本也很關鍵。
< br/>4. 它不支援負載平衡。 為了防止高並發和惡意攻擊,負載平衡伺服器也是必不可少的。

5. 它不支援用戶管理介面。 使用者對設備行為資料的分析特別重要,這是工業4.0和大數據時代的必然要求。

6. 不支援離線訊息,彌補了設備離線後MQTT伺服器遺失設備控制資訊的問題。

7. 不支援點對點通信,採用標準MQTT協定。 理論上,透過相互訂閱可以實現點對點通信,但邏輯相對複雜,並且存在設備安全性的擔憂。 當設備B和設備C處於相同主題時,設備A無法知道發送訊息的是設備B還是設備C,也有可能訊息被設備D竊聽。

8. 不支援群組通訊和群組管理,實現群組成員的管理,群組成員之間可以互相通訊。 在一台設備多人控制,或是一人控制多台設備的場景下,特別有用。

Scan the qr codeclose
the qr code