使用 MQTT 代理程式發佈和訂閱 MQTT 訊息

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

當正式推出的版本可使用時,您必須部署新的 Azure IoT 操作安裝。 您將無法升級預覽安裝。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

MQTT 代理程式具有企業級、符合標準、可擴充、高可用性且為 Kubernetes 原生的 MQTT 代理。 其提供 Azure IoT 操作預覽版的傳訊平面、啟用雙向邊緣/雲端通訊,並在邊緣推動事件驅動的應用程式

符合 MQTT 規範

MQTT 代理程式具有符合標準的 MQTT 代理,可支援 MQTT v3.1.1 和 MQTT v5。

訊息佇列遙測傳輸 (MQTT) 已崛起成為 IoT 領域中通訊協定的通用語言。 MQTT 的簡單設計可讓單一訊息代理程式同時為數萬個用戶端提供服務,並建立和管理輕量型發行訂閱主題。 許多 IoT 裝置都支援原生現成的 MQTT,而下游轉譯閘道將 IoT 通訊協定的長尾合理化為 MQTT。

MQTT 代理程式會使用 MQTT 通訊協定作為傳訊層的基礎。 如需支援 MQTT 功能的詳細資訊,請參閱 MQTT 代理程式中的 MQTT 功能支援

可用性高且可調整

Kubernetes 可以水平調整工作負載,以在多個執行個體中執行。 此備援意謂著有額外容量可處理要求,以及在任何執行個體發生中斷時提供可靠性。 Kubernetes 內建自我修復,且執行個體會自動復原。

Kubernetes 除了是彈性的調整技術,也是 DevOps 的標準。 如果 MQTT 是 IoT 通訊協定中的通用語言,Kubernetes 便是計算基礎結構層的通用語言。 透過採用 Kubernetes,您可以使用相同的 CI/CD 管線、工具、監視、應用程式封裝、員工技能。 如此將產生單一端對端系統,涵蓋從雲端運算、內部部署伺服器和工廠內的小型 IoT 閘道。 讓您花較少的時間處理基礎結構或 DevOps,並專注於您的業務。

MQTT 代理程式著重於為 Kubernetes 生態系統提供獨特的邊緣原生資料平面值,同時順暢地融入 Kubernetes 生態系統。 其提供為 MQTT 建置的高效能和可調整的傳訊平台平面,以及與其他可調整的 Kubernetes 工作負載和 Azure 無縫整合。

預設保護

MQTT 代理程式建置在經過戰鬥測試的 Azure 和 Kubernetes 原生安全性和身分識別概念之上,使其具有高度安全性和可用性。 其支援多個驗證機制,以彈性以及細微存取控制機制,一路向下到個別的 MQTT 主題層級。

提示

您只能使用叢集IP、TLS和服務帳戶令牌來存取預設 MQTT 訊息代理程式部署。 從叢集外部連線的用戶端需要額外的設定,才能連線。

Azure Arc 整合

Microsoft 的混合式平台是以 Azure Arc 作為單一控制平面來錨定在 Kubernetes 周圍。 其提供將現有非 Azure、內部部署或其他雲端資源投影到 Azure Resource Manager 的管理平面。 因而產生單一控制窗格,用於管理虛擬機器、Kubernetes 叢集和未在 Azure 資料中心執行的資料庫。

MQTT 代理程式會部署為適用於 Kubernetes 的 Azure Arc 延伸模組,並可透過功能完整的 Azure 資源提供者 (RP) 管理 - microsoft/IoTOperationsMQ。 這表示您可以像原生 Azure 雲端資源一樣管理,例如虛擬機器、儲存體等。

Azure Arc 技術可讓變更對在內部部署 Kubernetes 叢集上執行的 MQTT 代理程式服務生效。 或者,如果您想要完全採用 Kubernetes 原生方法,您可以在本機或使用 Flux 之類的 GitOps 技術,使用 Kubernetes 自訂資源定義 (CRD) 來管理 MQTT 代理程式。

雲端連接器

您的雲端案例可能有不同的傳訊需求。 例如,雙向雲端/邊緣的高速路徑,用於高優先資料或為近乎即時的雲端儀表板提供支援,以及成本較低、速度較慢的路徑,用於批次更新較低時間關鍵性的資料。

為了提供彈性,MQTT 代理程式提供內建的 Azure 連接器至事件中樞 (使用 Kafka 端點)、事件方格的 MQTT 代理功能、Microsoft Fabric 和 Blob 儲存體。 MQTT 代理程式是可延伸的,因此您可以選擇適合您解決方案、偏好的雲端傳訊解決方案。

在 Azure Arc 之上建置可讓連接器設定為使用 Azure 受控識別,以強大的 Azure 角色型存取控制 (RBAC) 存取雲端服務。 不需要手動、不安全且繁瑣的認證管理。

Dapr 程式設計模型

Dapr 藉由公開常見的分散式應用程式功能,例如狀態管理、服務對服務調用和發佈-訂閱傳訊,來簡化分散式應用程式之間的管線。 Dapr 元件位於建置組塊下方,提供每個功能的具體實作。 您可以專注於商業規則,讓 Dapr 處理分散式應用程式詳細資料。

MQTT 代理程式提供插入式 Dapr 發佈-訂閱和狀態存放區建置組塊,讓開發及部署邊緣上的事件驅動應用程式變得輕鬆且不受技術影響。

架構

MQTT 代理有三個層級:

  • 處理用戶端要求的無狀態前端層
  • 路由要求並連線訊息代理程式至其他位置的負載平衡器
  • 儲存和處理資料的具狀態和分區後端層

後端層會依不同的索引鍵分割資料,例如用戶端工作階段的用戶端識別碼,以及主題訊息的主題名稱。 其使用鏈結複寫來複寫每個分割區內的資料。 對於所有分割區共享的資料,其使用跨越所有分割區的單一鏈結。

架構的目標如下:

  • 容錯和隔離:如果後端節點失敗並防止失敗傳播至系統的其餘部分,訊息發佈會繼續
  • 失敗復原:自動失敗復原,而無需操作員介入
  • 沒有訊息遺失:如果至少有一個前端節點和一個後端節點正在執行,則傳遞訊息
  • 彈性調整:水平調整發佈和訂閱輸送量以支援邊緣和雲端部署
  • 大規模一致的效能:限制因鏈結複寫所造成的訊息延遲負荷
  • 操作簡單:對外部元件的最小相依性,以簡化維護和複雜性

下一步

將 Azure IoT 操作預覽版部署至已啟用 Arc 的 Kubernetes 叢集