導(dǎo)讀:MQTT 是物聯(lián)網(wǎng)消息傳輸標(biāo)準(zhǔn)協(xié)議,其采用極其輕量級的發(fā)布訂閱消息模型,以可擴(kuò)展、可靠且高效的方式連接物聯(lián)網(wǎng)設(shè)備。
本文作者
Zaiming(Stone)Shi:EMQX 歐洲研發(fā)中心負(fù)責(zé)人,擁有多年大規(guī)模分布式 MQTT 消息系統(tǒng)開發(fā)經(jīng)驗(yàn),致力于與 EMQ 斯德哥爾摩研發(fā)團(tuán)隊(duì)一起將 EMQX 打造成為全球最優(yōu)秀的 MQTT broker。
MQTT 是物聯(lián)網(wǎng)消息傳輸標(biāo)準(zhǔn)協(xié)議,其采用極其輕量級的發(fā)布訂閱消息模型,以可擴(kuò)展、可靠且高效的方式連接物聯(lián)網(wǎng)設(shè)備。
自 1999 年 IBM 發(fā)布 MQTT 以來已經(jīng)過去了二十多年,而自 2012 年 EMQ 在 GitHub 上發(fā)布開源 MQTT 消息服務(wù)器 EMQX,也已經(jīng)過去了十年。如今,我們來到了各類新興技術(shù)飛速進(jìn)步的 2023 年,隨著 MQTT 在物聯(lián)網(wǎng)中的使用規(guī)模不斷增長,場景更加多樣化,我們可以預(yù)見在 MQTT 技術(shù)領(lǐng)域中將會(huì)出現(xiàn)以下 7 個(gè)發(fā)展趨勢。
MQTT over QUIC
QUIC(Quick UDP Internet Connections)是由 Google 開發(fā)的一種新的傳輸協(xié)議,運(yùn)行于 UDP 之上,旨在減少建立新連接所帶來的延遲,提高數(shù)據(jù)傳輸速率,并解決 TCP 的一些限制。
下一代互聯(lián)網(wǎng)協(xié)議 HTTP/3 使用了 QUIC 作為底層傳輸協(xié)議,為網(wǎng)絡(luò)應(yīng)用帶來了比 HTTP/2 更低的時(shí)延和更好的加載體驗(yàn)。
MQTT over QUIC是自 2017 年 MQTT 5.0 規(guī)范發(fā)布以來 MQTT 協(xié)議中最具創(chuàng)新性的進(jìn)展。憑借多路復(fù)用、更快的連接建立和遷移等優(yōu)勢特性,其具有成為下一代 MQTT 協(xié)議標(biāo)準(zhǔn)的潛力。
MQTT 5.0 定義了三種傳輸類型:TCP、TLS 和 WebSocket。在物聯(lián)網(wǎng)安全最佳實(shí)踐中,MQTT over TLS/SSL 廣泛用于生產(chǎn)環(huán)境以保護(hù)客戶端和 Broker 之間的通信。然而它速度慢、延遲高,需要 3.5 個(gè) RTT,即 TCP 3 次握手以及 TLS 4 次握手才能建立新的MQTT 連接。
與 MQTT over TLS/SSL 相比,MQTT over QUIC 更快且延遲更低,在初次建立連接時(shí)僅需 1 RTT,并可以利用 0 RTT 連接恢復(fù)的特性來加速重連。QUIC 協(xié)議??梢葬槍Ω鞣N用例進(jìn)行定制,例如在不穩(wěn)定網(wǎng)絡(luò)環(huán)境下,或是客戶端到服務(wù)器更低延遲通信的場景。它能夠在諸如移動(dòng)網(wǎng)絡(luò)下的車聯(lián)網(wǎng)(IoV)以及要求極低時(shí)延的工業(yè)物聯(lián)網(wǎng)(IIoT)場景下發(fā)揮重要作用,并有效提升其使用體驗(yàn)。
開源 MQTT 消息服務(wù)器 EMQX 在其最新的5.0 版本中引入了MQTT over QUIC 支持,是全球首個(gè)支持 MQTT over QUIC 的 MQTT 消息服務(wù)器。目前 EMQ 正以 OASIS MQTT 技術(shù)委員會(huì)成員身份積極推進(jìn) MQTT over QUIC 的標(biāo)準(zhǔn)化落地,可以預(yù)見在不久的將來,MQTT 也將和 HTTP/3 一樣使用 QUIC 作為其主要傳輸層。
MQTT Serverless
云計(jì)算中 Serverless 模式的興起標(biāo)志著應(yīng)用的設(shè)計(jì)、開發(fā)、部署和運(yùn)行方式發(fā)生了突破性的范式轉(zhuǎn)變。這種模式下開發(fā)者將能夠?qū)W⒂趹?yīng)用的業(yè)務(wù)邏輯,無需管理基礎(chǔ)設(shè)施,從而提高敏捷性、可擴(kuò)展性和成本效益。
Serverless 模式的 MQTT 消息服務(wù)器將是 2023 年的一種前沿架構(gòu)創(chuàng)新。傳統(tǒng)的物聯(lián)網(wǎng)應(yīng)用需要數(shù)分鐘甚至數(shù)小時(shí)才能在云上或在企業(yè)私有環(huán)境中部署 MQTT 消息服務(wù),相比之下,Serverless MQTT 只需點(diǎn)擊幾下就能快速完成 MQTT 服務(wù)的部署。
除了極快的部署速度,Serverless MQTT 更大的價(jià)值在于其無可比擬的靈活性:根據(jù)用戶需求對資源進(jìn)行無縫擴(kuò)展,以及與這種彈性架構(gòu)相匹配的按量計(jì)費(fèi)定價(jià)模式。Serverless MQTT 有望推動(dòng) MQTT 更廣泛的應(yīng)用,降低運(yùn)營成本,激發(fā)不同行業(yè)的創(chuàng)新協(xié)作。我們甚至可能看到每個(gè)物聯(lián)網(wǎng)和工業(yè)物聯(lián)網(wǎng)開發(fā)者都能擁有一個(gè)免費(fèi)的 Serverless MQTT 消息服務(wù)器。
2023 年 3 月,EMQX Cloud 推出了全球首個(gè)Serverless MQTT 服務(wù),為用戶提供了 5 秒極速部署和更靈活的計(jì)費(fèi)方式,幫助用戶以更低的成本高效開發(fā)物聯(lián)網(wǎng)應(yīng)用。
MQTT 多租戶架構(gòu)
多租戶架構(gòu)是實(shí)現(xiàn) Serverless MQTT 服務(wù)的一個(gè)重要基礎(chǔ)。來自不同用戶或租戶的物聯(lián)網(wǎng)設(shè)備可以連接到同一個(gè)大規(guī)模的 MQTT 集群,同時(shí)保持其數(shù)據(jù)和業(yè)務(wù)邏輯與其他租戶隔離。
在 SaaS 應(yīng)用中多租戶架構(gòu)很常見,即一個(gè)應(yīng)用為多個(gè)客戶或租戶服務(wù)。其通常有兩種以下不同的實(shí)現(xiàn)方式:
租戶隔離: 向每個(gè)租戶提供一個(gè)單獨(dú)的應(yīng)用實(shí)例,在服務(wù)器或虛擬機(jī)上運(yùn)行。
數(shù)據(jù)庫隔離: 多個(gè)租戶共享一個(gè)應(yīng)用實(shí)例,但每個(gè)租戶有自己的數(shù)據(jù)庫模式,以確保數(shù)據(jù)隔離。
在 MQTT Broker 的多租戶架構(gòu)中,每個(gè)設(shè)備和租戶都有一個(gè)單獨(dú)的、隔離的命名空間,包括一個(gè)獨(dú)特的主題前綴和訪問控制列表(ACL),用來定義用戶可以發(fā)布或訂閱哪些主題。
多租戶 MQTT 消息服務(wù)器能夠減少管理開銷,并靈活支持復(fù)雜場景或大規(guī)模物聯(lián)網(wǎng)應(yīng)用場景。例如,一個(gè)大型組織中的部門和應(yīng)用可以作為不同的租戶使用同一個(gè) MQTT 集群。
MQTT Sparkplug 3.0
MQTT Sparkplug 是由 Eclipse 基金會(huì)設(shè)計(jì)的開放標(biāo)準(zhǔn)規(guī)范,其最新版本為 MQTT Sparkplug 3.0,它定義了工業(yè)設(shè)備的統(tǒng)一數(shù)據(jù)接入規(guī)范,能夠通過 MQTT 協(xié)議連接各類工業(yè)傳感器、動(dòng)作執(zhí)行器、可編程邏輯控制器(PLC)和網(wǎng)關(guān)。
MQTT Sparkplug 3.0 于 2022 年 11 月發(fā)布,具有以下關(guān)鍵的新功能和改進(jìn):
MQTT 5.0 支持:增加了對 MQTT 5.0 的支持,包括共享訂閱、消息過期和流量控制等新功能。
優(yōu)化的數(shù)據(jù)傳輸:對數(shù)據(jù)傳輸進(jìn)行了優(yōu)化,使用更緊湊的數(shù)據(jù)編碼和壓縮算法。
擴(kuò)展的數(shù)據(jù)模型:引入了一個(gè)擴(kuò)展的數(shù)據(jù)模型,它允許更詳細(xì)的設(shè)備信息通信,還支持配置數(shù)據(jù)和設(shè)備元數(shù)據(jù)等其他信息的傳輸。
更高的安全性:包括對安全性的若干改進(jìn),如支持雙向 TLS 認(rèn)證、優(yōu)化的訪問控制機(jī)制等。
簡化的設(shè)備管理:包括自動(dòng)設(shè)備注冊和發(fā)現(xiàn),簡化設(shè)備配置,以及改進(jìn)診斷等。
MQTT Sparkplug 旨在簡化不同工業(yè)設(shè)備間的連接和通信,實(shí)現(xiàn)高效的工業(yè)數(shù)據(jù)采集、處理和分析。隨著新版本的發(fā)布,MQTT Sparkplug 3.0 將會(huì)在工業(yè)物聯(lián)網(wǎng)領(lǐng)域得到更廣泛的應(yīng)用。
MQTT 統(tǒng)一命名空間
統(tǒng)一命名空間(Unified Namespace)是一個(gè)建立在面向工業(yè)物聯(lián)網(wǎng)和工業(yè) 4.0 的MQTT Broker上的解決方案架構(gòu)。它為 MQTT 主題提供了一個(gè)統(tǒng)一的命名空間,并為消息和結(jié)構(gòu)化數(shù)據(jù)提供了一個(gè)集中的存儲庫。
統(tǒng)一命名空間使用中央 MQTT Broker ,以星形拓?fù)浣Y(jié)構(gòu)連接工業(yè)設(shè)備、傳感器和應(yīng)用程序,如 SCADA、MES 和 ERP。統(tǒng)一命名空間以事件驅(qū)動(dòng)的架構(gòu)極大簡化了工業(yè)物聯(lián)網(wǎng)應(yīng)用的開發(fā)。
在傳統(tǒng)的工業(yè)物聯(lián)網(wǎng)系統(tǒng)中,OT 和 IT 系統(tǒng)通常是分開的,其數(shù)據(jù)、協(xié)議和工具均獨(dú)立運(yùn)行。通過采用統(tǒng)一命名空間,可以讓 OT 和 IT 系統(tǒng)更有效地交換數(shù)據(jù),最終實(shí)現(xiàn)物聯(lián)網(wǎng)時(shí)代 OT 和 IT 的統(tǒng)一。
如今,通過 EMQ 提供的開源 MQTT 消息服務(wù)器 EMQX或NanoMQ,結(jié)合工業(yè)協(xié)議網(wǎng)關(guān)軟件 Neuron,用戶將可以構(gòu)建一個(gè)由 IT 界最先進(jìn)技術(shù)支持的統(tǒng)一命名空間架構(gòu)。
MQTT 跨域集群
MQTT 跨域集群(MQTT Geo-Distribution)是一個(gè)創(chuàng)新架構(gòu),允許部署在不同地區(qū)或云上的 MQTT Broker 作為一個(gè)單集群一起工作。通過跨域集群,MQTT 消息可以在不同地區(qū)的 MQTT Broker 之間自動(dòng)同步和傳輸。
有兩種方法可以實(shí)現(xiàn) MQTT 跨域集群:
單集群,多地區(qū): 單個(gè) MQTT 集群,每個(gè)節(jié)點(diǎn)在不同地區(qū)運(yùn)行。
多集群,多云: 分布在不同云中的多個(gè) MQTT 集群連接在一起。
我們可以將這兩種方法結(jié)合,在跨區(qū)域部署的 MQTT Broker 之間創(chuàng)建一個(gè)可靠的物聯(lián)網(wǎng)數(shù)據(jù)基礎(chǔ)設(shè)施。通過 MQTT 跨域集群,企業(yè)可以建立一個(gè)跨多云的全球 MQTT 接入網(wǎng)絡(luò)。不管所處的物理位置在哪里,設(shè)備和應(yīng)用都能從最近的節(jié)點(diǎn)接入實(shí)現(xiàn)相互通信。
MQTT Streams
MQTT Streams 是 MQTT 協(xié)議備受期待的一項(xiàng)擴(kuò)展能力,能夠在 MQTT Broker 內(nèi)實(shí)時(shí)處理海量、高頻的數(shù)據(jù)流。這在發(fā)布訂閱模式消息傳輸?shù)幕A(chǔ)上進(jìn)一步增強(qiáng)了傳統(tǒng) MQTT Broker 的能力。通過 MQTT Streams,客戶端可以像 Apache Kafka 一樣將 MQTT 消息以流的形式進(jìn)行生產(chǎn)和消費(fèi),從而實(shí)現(xiàn)歷史消息回放。這對事件驅(qū)動(dòng)的處理尤為重要,可以確保最終的數(shù)據(jù)一致性、可審計(jì)和合規(guī)性。
流處理對于從物聯(lián)網(wǎng)設(shè)備產(chǎn)生的大量數(shù)據(jù)中實(shí)時(shí)挖掘商業(yè)價(jià)值至關(guān)重要。以前,這一過程通過一個(gè)過時(shí)且復(fù)雜的大數(shù)據(jù)堆棧實(shí)現(xiàn),需要 MQTT Broker 與 Kafka、Hadoop、Flink 或 Spark 進(jìn)行集成。
而通過內(nèi)置的流處理,MQTT Streams 簡化了物聯(lián)網(wǎng)數(shù)據(jù)處理架構(gòu),提高了數(shù)據(jù)處理效率和響應(yīng)時(shí)間,并為物聯(lián)網(wǎng)提供了一個(gè)統(tǒng)一的消息傳遞和流處理平臺。通過消息去重、消息重放和消息過期等功能,MQTT Streams 實(shí)現(xiàn)了高吞吐量、低時(shí)延和容錯(cuò),使其成為基于 MQTT 的物聯(lián)網(wǎng)應(yīng)用中實(shí)時(shí)數(shù)據(jù)流處理的強(qiáng)大工具。
結(jié)語
總的來說,MQTT 的這 7 個(gè)技術(shù)趨勢反映了新興技術(shù)的進(jìn)步以及它們在推動(dòng)物聯(lián)網(wǎng)發(fā)展進(jìn)程中的重要作用。
作為一個(gè)發(fā)展了二十多年的標(biāo)準(zhǔn)消息傳輸協(xié)議,MQTT 的重要性正在持續(xù)增長。隨著物聯(lián)網(wǎng)在各行業(yè)被越來越廣泛地應(yīng)用,MQTT 協(xié)議也在不斷發(fā)展以應(yīng)對新的挑戰(zhàn),滿足更低延遲的連接、更便捷的 MQTT 服務(wù)部署、復(fù)雜場景或大規(guī)模物聯(lián)網(wǎng)應(yīng)用下靈活管理以及工業(yè)設(shè)備接入的需求。作為龐大物聯(lián)網(wǎng)的神經(jīng)系統(tǒng),在 2023 年及更遠(yuǎn)的未來,MQTT 必將在工業(yè)物聯(lián)網(wǎng)和車聯(lián)網(wǎng)等關(guān)鍵領(lǐng)域中發(fā)揮重要作用。