物聯(lián)網(wǎng)通信協(xié)議
MQTT 設(shè)計(jì)輕量,因此可以在帶寬非常低的網(wǎng)絡(luò)中工作,允許可靠和不可靠網(wǎng)絡(luò)中的節(jié)點(diǎn)之間進(jìn)行通信。MQTT 遵循發(fā)布/訂閱架構(gòu),這意味著有節(jié)點(diǎn)(代理)使信息可用,而其他節(jié)點(diǎn)(客戶端)可以在訂閱后通過(guò)訪問(wèn)相應(yīng)的 URL 來(lái)讀取可用信息。
MQTT 的一個(gè)用例是在智能工廠中,其中與生產(chǎn)工廠一起安裝了溫度傳感器。安裝的傳感器將連接到 MQTT 代理,并在傳感器主題中發(fā)布數(shù)據(jù),如下所示:
傳感器/溫度/裝配線初始化
隨后,多個(gè)類型和數(shù)量的 MQTT 客戶端將訂閱同一主題以讀取溫度數(shù)據(jù)。MQTT 架構(gòu)的示例如圖 1 所示。
MQTT 的發(fā)布/訂閱架構(gòu)。
圖 1.MQTT的發(fā)布/訂閱架構(gòu)。圖片由MQTT提供
此外,MQTT 根據(jù)可靠性定義了三個(gè)級(jí)別的服務(wù)質(zhì)量,從到:
0級(jí):不保證消息傳送。
1級(jí):有保證的送達(dá),但有可能收到重復(fù)的消息。
2級(jí):保證送達(dá),不會(huì)出現(xiàn)重復(fù)。
超文本傳輸??協(xié)議 (HTTP)
該協(xié)議是萬(wàn)維網(wǎng) (WWW) 數(shù)據(jù)通信的起源,因此從邏輯上講,它正在物聯(lián)網(wǎng)世界中使用。但是,由于以下原因,它并未針對(duì)此進(jìn)行優(yōu)化:
HTTP 是為兩個(gè)系統(tǒng)同時(shí)相互通信而設(shè)計(jì)的,而不是更多,因此連接多個(gè)傳感器來(lái)獲取信息既費(fèi)時(shí)又耗力。
HTTP 是單向的,用于一個(gè)系統(tǒng)(客戶端)將一條消息發(fā)送到另一個(gè)系統(tǒng)(服務(wù)器)。這使得升級(jí)物聯(lián)網(wǎng)解決方案變得非常困難。
功耗:HTTP依賴于傳輸控制協(xié)議(TCP),需要大量的計(jì)算資源,因此不適合電池供電的應(yīng)用。
受限應(yīng)用協(xié)議 (CoAP)
CoAP 是一種網(wǎng)絡(luò)傳輸協(xié)議,適用于低帶寬和低可用性的有限網(wǎng)絡(luò)。它遵循客戶端/服務(wù)器架構(gòu),構(gòu)建方式與 HTTP 類似,支持 REST 模型:服務(wù)器通過(guò) URL 提供資源,客戶端可以發(fā)出 GET、POST、PUT 和 DELETE 類型的請(qǐng)求。
CoAP 通信鏈路是 1:1 且基于 UDP 的,因此無(wú)法保證交付。CoAP 適合在高度擁塞的網(wǎng)絡(luò)中工作,這些網(wǎng)絡(luò)中的節(jié)點(diǎn)沒(méi)有太多智能,并且并不總是工作。
數(shù)據(jù)分發(fā)服務(wù)(DDS)
與 MQTT 類似,DDS 遵循發(fā)布-訂閱方法,主要區(qū)別在于沒(méi)有代理。這意味著所有發(fā)布者(即溫度傳感器)和訂閱者(??即手機(jī))都連接到同一網(wǎng)絡(luò)。該網(wǎng)絡(luò)被稱為全局?jǐn)?shù)據(jù)空間(GDS),它將每個(gè)節(jié)點(diǎn)與所有其他節(jié)點(diǎn)互連以避免瓶頸。DDS GDS 的示例如圖 2 所示。
DDS 全局?jǐn)?shù)據(jù)空間。
圖 2.DDS全局?jǐn)?shù)據(jù)空間。圖片由 DDS 基金會(huì)提供
此外,任何節(jié)點(diǎn)都可以離開或加入網(wǎng)絡(luò),因?yàn)樗鼈兪莿?dòng)態(tài)發(fā)現(xiàn)的。
WebSocket
WebSocket技術(shù)與HTTP協(xié)議相聯(lián)系,在瀏覽器和服務(wù)器之間建立TCP連接,然后兩者交換信息直到連接關(guān)閉。圖 3 顯示了 HTTP 和 WebSocket 之間的比較。
HTTP 和 WebSocket 的比較。
圖 3.HTTP和 WebSocket 之間的比較。圖片由Scaleway提供
盡管該協(xié)議可以被視為對(duì) HTTP 連接的改進(jìn),但 WebSocket 對(duì)于 IoT 應(yīng)用程序來(lái)說(shuō)仍然非常過(guò)載和沉重。
消息隊(duì)列協(xié)議 (AMQP)
一開始,AMQP 初并不是為 IoT 應(yīng)用程序創(chuàng)建的,而是為銀行環(huán)境創(chuàng)建的。AMQP 接受發(fā)布/訂閱架構(gòu)以及請(qǐng)求/響應(yīng)類型。它基于 TCP,因此保證了傳送和確認(rèn),這使得該協(xié)議可靠,從而帶來(lái)了消息可靠性的開銷。
與 MQTT 相比,AMQP 提供兩個(gè)服務(wù)質(zhì)量級(jí)別:
多:發(fā)送方不會(huì)等到接收方確認(rèn)后才刪除消息。
至少:對(duì)于每條消息,發(fā)送者在刪除消息之前都會(huì)收到接收者的確認(rèn)。如果確認(rèn)丟失,則重新發(fā)送消息。
恰好:消息僅發(fā)送。它需要發(fā)送者和接收者之間的特殊協(xié)調(diào)。
可擴(kuò)展消息傳遞和狀態(tài)協(xié)議 (XMPP)
它基于可擴(kuò)展標(biāo)記語(yǔ)言 (XML),過(guò)去稱為Jabber。它是一種用于交換 XML 消息的開源、去中心化、安全的協(xié)議。
XMPP的一個(gè)特征因素是它的尋址方法和節(jié)點(diǎn)的識(shí)別方式。它使用格式為 jabberID@domain.com 的 Jabber ID,允許兩個(gè)節(jié)點(diǎn)交換信息,無(wú)論它們之間的距離如何。
OPC統(tǒng)一架構(gòu)(OPC UA)
它是為工業(yè)通信制定的標(biāo)準(zhǔn),旨在保證制造商、操作系統(tǒng)和編程語(yǔ)言之間的互操作性。OPC 基金會(huì)稱,許多工業(yè)供應(yīng)商目前(截至 2022 年) 正在采用 OPC UA 作為開放標(biāo)準(zhǔn)。
總而言之,OPC UA 是一種與傳輸無(wú)關(guān)的協(xié)議,因此它支持以前使用的兩種架構(gòu):請(qǐng)求/響應(yīng)(例如 WebSocket 或 HTTP)以及發(fā)布/訂閱(例如 MQTT)。