你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure IoT MQ 预览版发布和订阅 MQTT 消息

重要

Azure IoT 操作预览版(由 Azure Arc 启用)当前处于预览状态。 不应在生产环境中使用此预览版软件。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

Azure IoT MQ 预览版具有符合标准的企业级 MQTT 代理,可缩放、高度可用且 Kubernetes 原生。 它为 Azure IoT 操作预览版提供消息传送平面,支持双向边缘/云通信,并为边缘的事件驱动型应用程序提供支持。

MQTT 合规

IoT MQ 具有符合标准的 MQTT 代理,支持 MQTT v3.1.1 和 MQTT v5。

消息队列遥测传输 (MQTT) 已成为 IoT 空间协议中的通用语。 MQTT 的简单设计允许单个代理同时为数以万计的客户端提供服务,并创建和管理轻型发布-订阅主题。 许多 IoT 设备支持本机现成的 MQTT,下游转换网关将 IoT 协议的长尾合理化为 MQTT。

IoT MQ 使用MQTT协议作为消息层的基础。 有关支持的 MQTT 功能的详细信息,请参阅 Azure IoT MQ 预览版中的 MQTT 功能支持

高度可用且可缩放

Kubernetes 可以水平缩放工作负载,以在多个实例中运行。 此冗余意味着在任何实例出现故障时可处理请求和可靠性的额外能力。 Kubernetes 内置了自我修复,实例会自动恢复。

Kubernetes 不仅是弹性缩放技术,还是 DevOps 的标准。 如果 MQTT 是 IoT 协议中的通用语,则 Kubernetes 是计算基础结构层的通用语。 通过采用 Kubernetes,可以在任何地方使用相同的 CI/CD 管道、工具、监视、应用打包、员工技能。 结果会形成云计算、本地服务器和工厂车间较小的 IoT 网关的单一端到端系统。 可以花更少的时间处理基础结构或 DevOps,专注于业务。

Azure IoT MQ 专注于它可为 Kubernetes 生态系统提供的唯一边缘原生数据平面值,同时无缝连接到它。 它带来了围绕 MQTT 构建的高性能和可缩放的消息传送平台平面,以及与其他可缩放的 Kubernetes 工作负载和 Azure 的无缝集成。

默认保护

IoT MQ 基于经过验证的 Azure 和 Kubernetes 原生安全性和标识概念构建,使其高度安全且可用。 它支持多种身份验证机制,实现灵活性以及精细访问控制机制,一直向下到单个 MQTT 主题级别。

Azure Arc 集成

Microsoft 的混合平台以 Kubernetes 为基础,以 Azure Arc 作为单个控制平面。 它提供管理平面,用于将现有的非 Azure、本地或其他云资源投影到 Azure 资源管理器中。 结果会形成控制窗格,用于管理不在 Azure 数据中心内运行的虚拟机、Kubernetes 群集和数据库。

IoT MQ 部署为 Azure Arc for Kubernetes 扩展,可通过功能齐全的 Azure 资源提供程序 (RP) 进行管理 - microsoft/IoTOperationsMQ。 这意味着可以像本机 Azure 云资源(例如虚拟机、存储等)一样对其进行管理。

Azure Arc 技术使更改能够对在本地 Kubernetes 群集上运行的 IoT MQ 服务生效。 (可选)如果更喜欢完全 Kubernetes 原生的方法,可以在本地使用 Kubernetes 自定义资源定义 (CRD) 或 GitOps 技术(例如 Flux)管理 IoT MQ。

云连接器

云方案可能有不同的消息传送要求。 例如,用于高优先级数据或为准实时云仪表板提供支持的双向云/边缘快速路径,以及用于可批量更新的时间关键性较低的数据的低成本慢速路径。

为了提供灵活性,Azure IoT MQ 为事件中心(带 Kafka 终结点)、事件网格 MQTT 代理功能、Microsoft Fabric 和 Blob 存储提供内置的 Azure 连接器。 IoT MQ 可扩展,因此可以选择适用于解决方案的首选云消息传送解决方案。

在 Azure Arc 的基础上构建,可将连接器配置为使用 Azure 托管标识通过功能强大的 Azure 基于角色的访问控制 (RBAC) 访问云服务。 无需手动、不安全和繁琐的凭据管理。

Dapr 编程模型

Dapr公开常见的分布式应用程序功能(例如状态管理、服务到服务调用和发布-订阅消息传送),从而简化分布式应用程序之间的管道。 Dapr 组件位于构建基块下,并为每个功能提供具体的实现。 可以专注于业务逻辑,让 Dapr 处理分布式应用程序详细信息。

IoT MQ 提供可插入的 Dapr 发布-订阅和状态存储构建基块,使开发和部署边缘驱动型应用程序变得简单且技术中立。

体系结构

MQTT 代理有三层:

  • 处理客户端请求的无状态前端层
  • 路由请求并将代理连接到其他代理的负载均衡器
  • 存储和处理数据的有状态和分片后端层

后端层按不同的键对数据进行分区,例如客户端会话的客户端 ID,以及主题消息的主题名称。 它使用链复制以复制每个分区中的数据。 对于所有分区共享的数据,它使用跨越所有分区的单链。

体系结构的目标包括:

  • 容错和隔离:如果后端节点发生故障并阻止故障传播到系统的其余部分,消息发布会继续
  • 故障恢复:自动故障恢复,无需操作员干预
  • 无消息丢失:如果至少有一个前端节点和一个后端节点正在运行,则传递消息
  • 弹性缩放:发布和订阅吞吐量的水平缩放以支持边缘和云部署
  • 大规模一致的性能:由于链复制,限制消息延迟开销
  • 操作简单性:对外部组件的依赖最少,以简化维护和复杂性

后续步骤

将 Azure IoT 操作预览版扩展部署到 Kubernetes 群集