物聯網曾被認為是繼計算機、互聯網之后,信息技術行業的第三次浪潮。隨著基礎通訊設施的不斷完善,尤其是 5G 的出現,進一步降低了萬物互聯的門檻和成本。物聯網本身也是 AI 和區塊鏈應用很好的落地場景之一,各大云服務商也在紛紛上架物聯網平臺和服務。在 AI 和區塊鏈的熱潮過去之后,物聯網很有可能成為下一個風口,在風口到來之前,提前進行一些知識儲備,是很有必要的。

IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿蘭·尼普于1999年撰寫了該協議的第一個版本。在2013年IBM公司向結構化資訊標準促進組織提交了MQTT 3.1版規范,并附有相關章程,以確保只能對規范進行少量更改。
MQTT(消息隊列遙測傳輸)協議是ISO 標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。它工作在TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議。
MQTT 是一種傳輸協議由“物理層”通過無線網絡將數據流從網絡中傳輸出去,實現對數據鏈路和應用層數據傳輸業務進行控制提供支持等功能。它分為無線網用 MQTT網關,無線網絡交換用網關,無線網接入網絡單。而 MQTT網關是為了滿足網絡中不同業務系統在數據交換時需要而設計起來的一種設備,實現對各用戶之間通信,在一定條件下可以方便而靈活地傳輸數據信息并進行相應的管理工作。通過 MQTT網關實現互聯網訪問控制功能,可以將整個網絡作為一個節點管理起來,把多個網絡用戶集中在一起進行管理和監控,同時實現流量數據監控、智能路由分配等功能。
MQTT是分布式數據庫系統。它采用高安全、高性能的 MQTT技術。在這個系統的硬件只有一臺服務器,沒有客戶端也沒有網絡的訪問權限。MQTT的應用是一種對分布式數據庫系統進行高性能的連接、通信、高并發處理以及低延遲通信的系統。它可以實現復雜的分布式應用性能控制和負載均衡功能。當網絡環境發生變化時,可以自動適配、切換到新的用戶所需要的服務器模式。因此系統可以支持多種業務類型:遠程控制、多進程同步、異構多任務管理以及多線程管理模式等.
MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議,MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。如:機器與機器(M2M)通信和物聯網(IoT)。在通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中也被廣泛使用。

由于物聯網環境具有一定的特殊性,所以MQTT設計都需要遵守以下規范:
① 精簡,不添加可有可無的功能;
② 發布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞;
③ 允許用戶動態創建主題,零運維成本;
④ 把傳輸量降到最低以提高傳輸效率;
⑤ 把低帶寬、高延遲、不穩定的網絡等因素考慮在內;
⑥ 支持連續的會話控制;
⑦ 理解客戶端計算能力可能很低;
⑧ 提供服務質量管理;
⑨ 假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。
MQTT協議工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
① 使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合。
② 對負載內容屏蔽的消息傳輸。
③ 使用TCP/IP提供網絡連接。
④ 有“至多一次”“至少一次”“只有一次”三種消息發布服務質量。
⑤ 小型傳輸,開銷很小(固定長度的頭部是2字節),協議交換最小化,以降低網絡流量。
⑥ 使用Last Will和Testament特性通知有關各方客戶端異常中斷的機制。
實現MQTT協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。

MQTT傳輸的消息分為:主題(Topic)和負載(payload)兩部分:
Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會收到該主題的消息內容(payload);
payload,可以理解為消息的內容,是指訂閱者具體要使用的內容。
MQTT客戶端是指使用MQTT協議的應用程序或者設備,它總是建立到服務器的網絡連接。客戶端可以是:
(1)發布其他客戶端可能會訂閱的信息;
(2)訂閱其它客戶端發布的消息;
(3)退訂或刪除應用程序的消息;
(4)斷開與服務器連接。
MQTT服務器以稱為"消息代理"(Broker),可以是一個應用程序或一臺設備。它是位于消息發布者和訂閱者之間,它可以接受來自客戶的網絡連接;接受客戶發布的應用信息;處理來自客戶端的訂閱和退訂請求;還可以向訂閱的客戶轉發應用程序消息。