物聯網 (IoT) 裝置必須連線網際網路。透過連線到網際網路,裝置就能相互協作,以及與後端服務協同工作。網際網路的基礎網路協議是 TCP/IP。MQTT(訊息佇列遙測傳輸) 是基於 TCP/IP 協議棧而構建的,已成為 IoT 通訊的標準。
MQTT 最初由 IBM 於上世紀 90 年代晚期發明和開發。它最初的用途是將石油管道上的感測器與衛星相連結。顧名思義,它是一種支援在各方之間非同步通訊的訊息協議。非同步訊息協議在空間和時間上將訊息傳送者與接收者分離,因此可以在不可靠的網路環境中進行擴充套件。雖然叫做訊息佇列遙測傳輸,但它與訊息佇列毫無關係,而是使用了一個釋出和訂閱的模型。在 2014 年末,它正式成為了一種 OASIS 開放標準,而且在一些流行的程式語言中受到支援(透過使用多種開源實現)。
MQTT 協議在網路中定義了兩種物體型別:一個訊息代理和一些客戶端。代理是一個伺服器,它從客戶端接收所有訊息,然後將這些訊息路由到相關的標的客戶端。客戶端是能夠與代理互動來傳送和接收訊息的任何事物。客戶端可以是現場的 IoT 感測器,或者是資料中心內處理 IoT 資料的應用程式。
- 客戶端連線到代理。它可以訂閱代理中的任何訊息 “主題”。此連線可以是簡單的 TCP/IP 連線,也可以是用於傳送敏感訊息的加密 TLS 連線。
- 客戶端透過將訊息和主題傳送給代理,釋出某個主題範圍內的訊息。
- 代理然後將訊息轉發給所有訂閱該主題的客戶端。
因為 MQTT 訊息是按主題進行組織的,所以應用程式開發人員能靈活地指定某些客戶端只能與某些訊息互動。例如,感測器將在 “sensor_data” 主題範圍內釋出讀數,並訂閱 “config_change” 主題。將感測器資料儲存到後端資料庫中的資料處理應用程式會訂閱 “sensor_data” 主題。管理控制檯應用程式能接收系統管理員的命令來調整感測器的配置,比如靈敏度和取樣頻率,並將這些更改釋出到 “config_change” 主題。