
Azure IoT Hub 和 EMQX 是实现大规模设备连接和可靠 IoT 数据传输的两大主流平台。二者均已在生产环境中得到广泛验证,但由于其底层架构截然不同,直接决定了它们的性能、功能以及长期成本构成。
本文将深入对比 Azure IoT Hub 与 EMQX 在架构设计、协议支持、消息路由、扩展性、存储、设备状态、文件传输、安全性及运营限制等方面的差异,帮助架构师与技术决策者理解两个平台的适用场景、核心区别以及大规模部署时可能面临的技术选型问题。
架构基础
在 IoT 系统设计中,架构决定了吞吐量上限和协议灵活性。Azure IoT Hub 和 EMQX 采用了两种完全不同的架构。
Azure IoT Hub 基于 Azure Event Hubs 构建,采用分区日志架构。传入的遥测数据被写入固定的分区,每个分区在单个消费者组内同一时间只能由一个消费者实例读取,这种设计既带来了稳定的吞吐量,也导致了结构性的读取瓶颈,这一问题在下游系统需要高并发处理能力时尤为明显。此外,其日志储存周期较短,主要为对接 Azure 后端服务而优化。
EMQX 基于 Erlang/OTP Actor 模型构建。每个连接都由一个轻量级进程处理,赋予了 EMQX 极高的并发处理能力和极低的响应延迟。EMQX Enterprise 6.0 进一步引入了基于 RocksDB 的存储引擎,支持在同一集群内实现持久化和异步消息传输。

协议兼容性与 MQTT 标准
Azure IoT Hub 仅将 MQTT 3.1.1 作为兼容层使用,并非功能完整的 Broker,缺失了许多关键的 MQTT 特性。相比之下,EMQX 原生支持 MQTT 3.1、3.1.1 和 5.0,以及 CoAP、LwM2M 及 MQTT-SN 等协议。

消息路由、转换与持久化
消息路由、转换与持久化
Azure IoT Hub 提供基于消息头和内容的简单 SQL 过滤,但不支持消息转换、丰富或动态重塑。复杂逻辑需要依赖 Azure Functions 或 Stream Analytics 实现。
EMQX 内置功能强大的 SQL 规则引擎,提供解码、编码、JSON 重塑、正则匹配、数学运算及调用外部 API 等原生函数。此外,EMQX 6.0 还新增了可视化流设计器,无需编码即可构建数据处理管道。
Azure IoT Hub 提供有限的云到设备(C2D)队列,并依赖 Event Hubs 实现设备到云(D2C)的缓冲。
EMQX 6.0 直接在 Broker 内部集成了持久化队列,支持:
离线消息存储
高频遥测数据的最后值队列
拉取式消费模式
竞争消费者模型
在中小规模架构中,可以有效替代对 Kafka 等外部消息队列的依赖。
扩展性与系统限制
扩展性与系统限制
Azure 采用「容量单位」计费,连接速率限制非常严格:

由于资源维度是捆绑的,用户往往为了满足连接速率而被迫购买昂贵的超额消息容量。此外,分区数在创建时即固定,限制了后端消费者的并发上限。
得益于 Erlang Actor 模型,EMQX 支持极高的连接密度。在测试中,单个 23 节点的 EMQX 5 集群支持了 1 亿并发 MQTT 连接。EMQX 的性能主要受限于硬件,没有固定的每日消息上限,添加计算资源即可实现线性扩展。
设备状态、文件传输与远程访问
设备状态、文件传输与远程访问
Azure 提供设备孪生功能,通过托管的 JSON 文档同步所需的预期属性和报告属性,与 Azure 服务无缝集成,并提供查询支持。
EMQX 则使用保留消息和最后值队列来维护设备状态,支持即时读取最新值。但 EMQX 并未内置期望值与报告值的同步功能,对该功能有需求的应用程序通常会在后端逻辑中实现。
Azure IoT Hub 通过 SAS URL 实现文件上传,设备需要支持 HTTPS、处理 Token 轮换,并直接上传至 Blob 存储。
EMQX 支持基于 MQTT 连接的文件传输,避免了设备端多协议栈的复杂性,并支持断点续传和带宽限速。
Azure 为远程访问提供安全的双向 TCP 隧道,但该功能仍处于预览状态。
EMQX 虽然没有专门的远程访问产品,但可以通过二进制负载和主题路由灵活构建自定义隧道方案。
安全性与多租户
安全性与多租户
Azure 与 Microsoft Entra ID 集成,支持 X.509、SAS Token 和 TPM 认证。
EMQX 支持内部数据库、JWT、LDAP 及外部 REST 服务认证,并拥有细粒度的的主题级 ACL 控制。
Azure IoT Hub 以每个实例为单一租户。SaaS 提供商通常需要为每个客户部署独立的 Hub。
EMQX 6.0 支持基于命名空间的多租户,允许不同业务部门在同一集群内共享资源,同时保持数据和权限的逻辑隔离。
定价模式与总成本
定价模式与总成本
Azure IoT Hub 的定价模式以单元和消息计量为基础,消息以 4KB 为单位计费,通常会增加小型部署场景的成本。此外,用户必须按峰值负载预置资源,且无法缩容至零。
EMQX 的定价模式灵活多样,可根据部署模型进行选择:
Serverless:按会话时长、流量和规则动作次数计费。非常适合规模波动大或间歇性在线的设备集群。
专有版:支持连接数与吞吐量独立扩展。非常适合高并发连接、低消息频率的业务场景。
私有化部署:通过直接管理基础设施,可进一步降低大规模部署的长期成本。
场景:50,000 台设备,每 10 分钟发送 1KB 数据。
流量:每日约 720 万条消息。
Azure 方案:S2 每日消息上限为 600 万条,需要 2 个 S2 单元,月成本约 500 美元。
EMQX 方案:专有版月成本约为 250 - 350 美元。
随着消息速率增加,成本差距会进一步拉大。这是因为 Azure 用户必须升级整个单元,而 EMQX 的成本主要与带宽成正比。
运营限制对比
运营限制对比

总结
总结
您的技术栈深度绑定 Azure 生态(如 Digital Twins, Cosmos DB, Azure Functions)。
需要开箱即用的、完全托管的设备生命周期管理。
设备规模适中,对 MQTT 5.0 或 QoS 2 等高级特性无硬性要求。
高并发连接:需要支持百万甚至千万级以上的并发连接。
标准协议需求:需要完整的 MQTT 5.0 支持或多协议(CoAP/LwM2M)接入。
多租户架构:需要在单个基础设施上支撑多个客户或业务线。
跨云/混合云需求:希望在公有云、私有云及边缘侧运行完全一致的数据平台。
成本敏感型:追求更高的性价比,避免被厂商特定的计费逻辑限制。
注:本文内容基于截至 2025 年 12 月的产品特性及定价信息。鉴于两个平台的技术迭代迅速,建议在决策前参考各官网的最新文档。
点击阅读原文,了解更多用户选择 EMQX 作为 Azure IoT Hub 理想替代方案的原因。






